网络原理之初识

news2024/9/30 13:17:46

目录

一. 网络互连

1. 局域网

 2. 广域网

二. 网络通信基础

 1. IP 地址

2. 端口号

3. 网络协议 

4. 协议分层

5. TCP/IP 五层网络模型 (简述)

6. 网络数据传输的基本流程


一. 网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。
网络互连:将多台计算机连接在一起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信
根据网络互连的规模不同,可以划分为局域网广域网

1. 局域网

局域网是局部组建的一种网络。其实可以理解成一定区域内的网络通信,局域网内的主机之间能方便的进行网络通信,又称为内网。例如在一个网吧内的所有机器进行通信,学校机房里的所有机器进行通信。需要注意的是:局域网和局域网之间在没有连接的情况下,是不能进行通信的。

交换机:是用来组建局域网的,但是不能跨局域网。

路由器:我们熟悉的 WiFi 就是一个无线路由器,路由器本质上就是把两个或者多个交换机连接起来。

局域网组建网络的方式也有很多种:

 2. 广域网

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
但其实所谓 "局域网" 和 "广域网" 只是一个相对的概念。比如,我们有 "天朝特色" 的广域网,也可以看做一个比较大的局域网。

二. 网络通信基础

 1. IP 地址

IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,简而言之,IP地址用于定位主机的网络地址,标识了网络上设备所在的位置。

将网络通信类比为 “发送快递” ,IP 地址就表示购买客户的收货地址,有了 IP 地址才可以将包裹送到目的地。

格式:IP地址是一个32位的二进制数,通常被分割为4“8位二进制数(也就是4个字节),如:

01100100.00000100.00000101.00000110。 通常用  点分十进制 ”  的方式来表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之间的十进制整数)。如: 100.4.5.6
特殊 IP: 127.0.0.1 为本机环回地址,本机环回主要用于本机到本机的网络通信。
IP 地址解决了网络通信的时候,定位网络主机的问题,但还存在一个问题,传输到了目的主机后,要由哪个进程(哪个应用程序)来接收这个数据呢?也就是快递到了目的地后,要由谁来领取快递呢?这就需要端口号来标识了。

2. 端口号

在网络通信中,IP 地址用于标识主机网络地址,端口号可以标识主机中发送数据,接收数据的进程。简而言之,端口号用于定位主机中的进程(标识了一个具体的应用程序)

依然将网络通信类比为 “发送快递” ,不仅需要购买客户的收货地址(IP 地址),还应该有收货人的信息,也就是端口号了。

格式:端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个不同的端口号。(一个进程启动后,系统会随机分配一个未被使用的端口号,也可以自己设定。在程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送,接受数据)

现在有了 IP地址和端口号,就可以准确定位到网络中一个主机上的进程了, 但依然存在问题,网络通信是基于二进制数据来进行传输的,那么要如何做到发送方和接受方都能够理解对方的传递意思呢?

在网络通信中的数据类型是有很多种的,例如:文本,图片,视频等,并且同一类型的数据,格式也可能不一样,如发送一个文本字符串:“你好”,如何标识发送的数据是文本类型,及文本的编码格式呢?这就需要协议来解决问题了,用协议来规定双方的数据格式。

3. 网络协议 

协议是网络通信中最核心的概念,理解为:通信双方约定,商量好数据是以什么样的格式来进行传输的,有了这个约定,才能让网络通信中双方相互理解对方的含义。(发送方以这个约定的格式来发送数据,接受方按照这个格式来进行解析)

协议最终体现为在网络上传输的数据包的格式。 

知名协议的默认端口:上文说过系统端口号范围:0~65535,其中:0 ~ 1023为知名端口号,这些端口是预留给服务器程序绑定广泛使用的应用层协议的。所以一般自己设置端口都设置在 1023 ~ 65535 这个范围。

4. 协议分层

网络通信是一个比较复杂的事情,需求场景复杂,实现功能也就复杂。如果这个协议,太复杂了,学习成本,使用成本部,理解成本,维护成本也就会非常高。因此,采取的措施就是针对这个复杂的大协议,拆分成若干个相对简单的小协议,每个协议都负责一部分功能。随着把协议拆分成一些小的协议,就会发现在某些协议之间,起到的功能和作用是类似的,因此就再针对这些小协议,进行 “分层” ,把功能类似的协议放到同一层。

协议分层的好处:

1. 降低了学习和维护成本。

2. 灵活的针对这里的某一层协议进行替代。 

在当前的互联网中,协议分层主要有两种风格,但实际上也可以算是一种。

1. OSI 七层网络模型:一般是教科书上,实际上并不多见。所以这里也不多介绍。

2. TCP/IP 五层(四层)网络模型,这个也算是 OSI 网络模型简化的实现方式,是在实际组建网络常见的实现模型。

5. TCP/IP 五层网络模型 (简述)

TCP/IP 是 OSI 的简化实现方式:

 在TCP/IP 协议中,主要分为,应用层,传输层,网络层,数据链路层,物理层。越往下,越接近硬件设备,越往上,也就越接近用户。在这个网络分层,上层协议要调用下层协议,下层协议要给上层协议提供服务。

这里先对每一层进行一个简单介绍,后续会针对性的对每一层进行讲解。 

还是将这个过程类比为 “网购寄快递”。

物理层:在类比事例中,把物理层类比为修路,因为只有在交通路程完整的情况下,才可以进行运输,相当于是一个准备条件。因此,物理层就是约定了网络通信中基础的硬件设备是啥样,例如通信使用的网线,网口等设备,这个我们在生活中也就有所体会:所使用的网线,网口都是相同规格的。 

数据链路层:在类比事例中,把数据链路层类比为:广州到汕头的快递运输,可以是广州-惠州-汕头,也可以是广州-厦门-汕头等多条路径,而每一条路径途经的每一个地点就是一个节点,而两个节点之间有很多种运输方式:货运,火车等。因此,数据链路层也就主要负责相邻两个节点之间,具体要怎么进行传输。这里的节点指的是连入网的主机,交换机,路由器等,传输也就是在这些相邻节点之间进行的,传输方式可以是有线传输,无线传输等。

也就是要考虑下图中每一对连接起来的相邻两个节点之间是要通过什么方式去通信。

网络层:网络层主要负责的就是路径的规划,判断哪条路径是最合适的。例如数据链路层中的类比事例中,广州到汕头的快递,可以是广州-惠州-汕头,也可以是广州-厦门-汕头等多条路径。要注意,在网络通信中,两个节点之间的传输路径是有很多个选择的!

传输层:传输层在上述类比事例中,表示的就是广州到汕头,是站在商家的角度的,不关心快递的运输过程,而只关心起点和终点,这个过程也就是传输层做的工作。

应用层: 应用程序,描述了传输的数据,用户要怎么来进行使用。

一般也可以称为 TCP/IP 四层模型(不算物理层)。

一般而言,直接和我们打交道的只有应用层,应用层是需要通过我们写的应用程序去实现,传输层和网络层都是基于操作系统内核来实现的,数据链路层和物理层是基于硬件和驱动程序来实现的。(驱动程序,是和硬件设备关联的,每个硬件厂商都会提供对应的驱动程序,操作系统内核通过驱动程序来控制硬件) 

6. 网络数据传输的基本流程

这里只是大概了解,后续文章会针对网络原理进行详细介绍。

基础五元组:一次通信中,基础的五元组:源IP,目的IP,源端口,目的端口,协议类型。

(站在协议分层的背景下来理解) 以 QQ 为例,A 给 B 发送一个 hello

发送方:用户在输入框在输入 hello 这个字符串,qq 这个应用程序就把这个字符串,构造成一个应用层数据报。

1. 应用层:这里假设一个应用层协议的格式:发送方qq号;发送时间;接收方qq号;消息内容(应用层数据,数据格式,这里不同的应用程序都是不一样的,这里只是假设。)

此时就会根据应用层协议来构造出应用层数据报,本质上是一个遵守了约定格式的字符串。

 程序要调用操作系统的API,把这个应用层数据报,交给传输层。

2. 传输层(进入操作系统内核): 在传输层中,就要把得到的应用层数据报,构造成传输层数据报,传输层使用到的协议中,最知名的就是 TCP 和 UDP,(TCP和UDP的报头结构不一样,报头不同,支持的功能和特性也就不同)比如此处使用的是 UDP,就需要构造出 UDP数据报(在应用层数据的基础上,加个 UDP 报头) 

此时,这就是另一个特定格式的字符串了(具体细节后续就进行讲解),此处就像字符串的拼接,把前面的报头跟后面的数据拼到一起。此处的 UDP报头,暂时可以理解为一个 “标签”,通过标签来表示出当前的这个消息要怎么进行传输。在传输层中就会涉及到通信中的源端口和目的端口了

然后传输层再把这个 UDP数据报,交给网络层。

 3. 网络层:网络层中最知名的协议就是 IP协议。IP协议就要基于上述数据,打包成一个 IP数据报。

 这里,也是另一个特定格式的字符串,包含了另一组信息,其中最核心的就是:源IP 和 目的IP。网络层数据报准备好了之后,就需要进一步交给数据链路层。

 4.数据链路层:数据链路层中最知名的协议,被称为 “以太网” ,所以同样是基于上述数据,打包成一个 “以太网数据帧” 。

 接下来这个数据继续往下传输,交给物理层。

5. 物理层:在物理层中,就把上述二进制的数据转换成 电信号/光信号 进行传输发送,此时就真正把数据给发送出去了。

封装:上述的这个流程,是发送过程,是从应用层到物理层,层层加码,这个过程称为 “封装” 。

接收方:此处省略了中间的转发过程,只考虑 B的接受。 

1. 物理层:网卡接收的是电信号和光信号,把这个电信号和光信号转换回二进制的数据。转换回的这个二进制数据,其实也就是一个 以太网数据帧 了。因此把这个数据交给数据链路层。

2.  数据链路层:数据链路层就需要解析并去掉帧头和帧尾,取出中间的载荷,得到网络层数据报,并交给上层的网络层(IP协议)。(以太网数据帧帧头里会有记录,这个载荷是不是一个 IP数据报)

3. 网络层: 网络层的 IP协议会对传来的数据进行解析,解析出 IP报头并取出载荷,也就得到了传输层数据报,并交给上一层传输层。(IP报头里会记录,载荷是 TCP 还是 UDP)

 4. 传输层:UDP对得到的数据再次进行解析,解析出 UDP报头并取出载荷,再把这个载荷交给对应的应用层程序。(UDP报头中有一个重要的字段:目的端口,目的端口是和一个具体的应用程序联系起来的,因此就可以根据这个端口来把数据交给对应的应用程序了。)

5. 应用层: 这里指的就是 qq程序了,qq 就会根据对应的应用层协议来对传来的数据报进行解析,并显示到界面上。

 分用:这一个过程,就是接收的过程,对传来的数据进行一步一步的解析,从下到上,这个过程就称为 “分用” 。

 从上述的这个发送信息,接受信息的流程来看,我们也就可以理解协议存在的意义了,协议可以让通信双方以相同的方式去解析理解数据,才保证了网络通信的准确性。也就是发送方使用什么协议,接收方就得使用什么样的协议。

例如:QQ邮箱和网易邮箱是属于不同的应用程序,但是它们却可以进行相互发送和接受,也就意味着它们遵守着相同的应用层协议(其余四层也是一样的)。

在网络协议的分层中,上层协议要调用下层协议(上层协议把数据交给下层协议,继续封装),下层协议要给上层协议提供支持(下层协议解析好数据,交给上层)。要注意协议之间不能跨层交互,只有相邻的两层之间才可以进行交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为OD机试模拟题】用 C++ 实现 - IPv4 地址转换成整数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明IPv4 地址转换成整数题目输入输出示例一输入输出说明示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,

使用Phpstorm进行项目管理

对于项目管理我们还是使用传统的终端命令行(命令行很重要是基础中的基础)么 ? 不现在我们要通过工具提高我们的效率,作为一名合格的程序猿下班提交代码是我们的基操!!!!但是经过一天…

ctf pwn基础-4

今天是学pwn的第四天,去接触了pwn的整数溢出。 目录 基础 实例讲解 实例讲解2 基础 关于整数溢出,这里以int为例,因为我php之前搞的比较多,以为这个int也是想php一样是64,最大值是9开头的那个,闹了不少笑…

关于程序员中年危机的一个真实案例

​ 关于中年危机,网上已经有了各种各样的解读。但是,这两天一个学员跟我简单几句聊天,却触发了对于中年危机的另一种思考。如果你曾经也有点迷茫,或许你可以稍微花几分钟看下这个故事。 一、无奈的故事 ​ 39岁还出来面试&#x…

论文阅读:NeRF Representing Scenes as Neural Radiance Fields for View Synthesis

论文阅读–NeRF Representing Scenes as Neural Radiance Fields for View Synthesis 这是 2020 ECCV 的一篇文章,记得好像还获得了最佳论文奖的提名,这篇文章相当于将自由视点生成这个方向开辟出了一个新的解决思路。 文章的作者们提出了一种可以对复…

数据结构与算法——1.数据结构概述

从这篇文章开始,我们来讲一下数据结构与算法的相关内容 1.数据结构概述 什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1…

nodejs+vue+elementui,毕业生导师双选系统 vscode双向选择

为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析的导师功能如下。导师管理导师选择信息,管理项目,管理项目提交并对学员提交的项目进行指导。 为了直观显示系统的功能,运用用例图这样的工具显示分析的结果。分析…

XpdfViewer ActiveX 4.0.3 Retail

XpdfViewer 库/ActiveX 控件提供了一个用于 Windows 应用程序的 PDF 文件查看器组件。XpdfViewer 使任何 Windows 开发人员都可以将 PDF 查看功能添加到他们的应用程序中。它为开发人员提供了对 PDF 查看器的完全控制——XpdfViewer 适合您的GUI。 XpdfViewer 功能包括&#xf…

Elasticsearch:索引数据是如何完成的

在我在之前的文章 “Elasticsearch:彻底理解 Elasticsearch 数据操作” 文章中,我详细地描述了如何索引数据到 Elasticsearch 中。在今天的文章中,我想更进一步来描述这个流程。 Elasticsearch 是一个非常强大和灵活的分布式数据系统&#x…

layui框架学习(10:时间线)

时间线,英文timeline,也叫时光轴、时间轴,是指以时间为记录方式的一种网络布局形式,其形式之一为下图所示(示例图来自参考文献5)。   Layui官网教程中的更新日志页面也用了时间线样式,如下图…

【经典蓝牙】 蓝牙HFP层协议分析

HFP 概述 HFP概念介绍 HFP(Hands-Free Profile), 是蓝牙免提协议, 可以让蓝牙设备对对端蓝牙设备的通话进行控制,例如蓝牙耳机控制手机通话的接听、 挂断、 拒接、 语音拨号等。HFP中蓝牙两端的数据交互是通过定义好的AT指令来通讯的。 &am…

C语言指针易错点—字符数组与字符指针

C语言指针易错点—字符数组与字符指针字符数组与字符指针的区别字符数组与字符指针的区别举例字符指针必须先赋值,后引用字符数组与字符指针的区别 因为字符数组与字符指针都可以表示字符串,但他们不是等价的。下面就来讲讲他们的区别。 char sa[ ] &…

信号类型(雷达)——脉冲雷达(三)

系列文章目录 《信号类型(雷达通信)》 《信号类型(雷达)——雷达波形认识(一)》 《信号类型(雷达)——连续波雷达(二)》 文章目录 前言 一、相参雷达 1…

第一章 计算机视觉概述

《计算机视觉开发实战 基于Python》 朱文伟,李建英 著 1.1 图像的基本概念 图像和图形 图像是输入设备捕捉的实际画面产生的数字图像,由像素点构成的位图。图形是用数学规则产生的或具有一定规则的团,由外部轮廓线条构成的矢量图,往往用一组…

有趣的Hack-A-Sat黑掉卫星挑战赛——卫星平台内存dump

国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1]。而在信息化时代,太空安…

AI_Papers周刊:第三期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 2023.02.20—2023.02.26 文摘词云 Top Papers Subjects: cs.CL 1.LLaMA: Open and Efficient Foundation Language Models 标题:LLaMA:开放高效的基础语言模型 作者&#…

14、KL散度

KL 散度,是一个用来衡量两个概率分布的相似性的一个度量指标。 现实世界里的任何观察都可以看成表示成信息和数据,一般来说,我们无法获取数据的总体,我们只能拿到数据的部分样本,根据数据的部分样本,我们会…

5、算法MATLAB---矩阵的运算和索引

矩阵的运算和索引1、矩阵的运算1.1 获取矩阵的行列数1.2 矩阵转置、逆矩阵1.3 特征值和特征向量1.4 加减乘除乘方运算1.5 广播机制1.6 逻辑运算2、矩阵的索引1、矩阵的运算 1.1 获取矩阵的行列数 使用size函数 1.2 矩阵转置、逆矩阵 使用【】和inv函数 1.3 特征值和特征…

NLP中的对话机器人——预训练基准模型

引言 本文是七月在线《NLP中的对话机器人》的视频笔记,主要介绍FAQ问答型聊天机器人的实现。 场景二 上篇文章中我们解决了给定一个问题和一些回答,从中找到最佳回答的任务。 在场景二中,我们来实现: 给定新问题,从…

【华为OD机试模拟题】用 C++ 实现 - 匿名信(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…