五层网络协议模型

@[toc] --- ## 五层协议网络模型 从下到上依次是: 1. 物理层 2. 数据链路层 3. 网络层 4. 传输层 5. 应用层 ### 物理层 - 任务:物理层的主要功能是利用传输介质为数据链路层提供物理联接,负责数据流的物理传输工作(主要定义了系统的电气、机械、过程和功能标准。如:电压、物理数据速率、最大传输距离、物理联接器和其他的类似特性)。基本单位是比特流,即 0 和 1,也就是最基本的电信号或光信号 - 传输单位:比特 - 所实现的硬件:集线器,中继器 ### 数据链路层 - 任务:物理层只是简单的把计算机连接起来并在上面传输比特流,仅仅靠物理层是无法保证数据传输的正确性的,对于发送端来说,数据链路层会把网络层传下来的 IP 数据报封装成帧(添加一些控制信息),这样,接收端接收到这个帧的时候,就可以根据其中的控制信息来判断是否出现了差错,另外,还可以根据这些控制信息知道这个帧从哪个比特开始从哪个比特结束 - 传输单位:帧 - 所实现的硬件:交换机、网桥 ### 网络层 - 任务:对于发送端来说,网络层会将传输层传下来的 TCP 报文段或 UDP 用户数据报封装成 IP 数据报进行传输;通过路由选择协议选中合适的路由,使得源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机 - 传输单位:分组(也叫 IP 数据报、数据报)。为了提供通信性能和可靠性,体积较大的 TCP 报文段或 UDP 用户数据报可能会被分成多个更小的部分,在每个部分的前面加上 TCP 或 UDP 首部,就构成了一个个较小的分组 - 所实现的硬件:路由器 ### 传输层 - 任务:负责为两个主机中进程之间的通信提供服务。对于发送端来说,传输层会将应用层传下来的报文封装成 TCP 报文段或者 UDP 用户数据报进行传输。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能 - 复用,就是多个应用层进程可同时使用下面传输层的服务 - 分用,就是传输层把收到的信息分别交付给上面应用层中相应的进程 - 传输单位:报文段(TCP)或用户数据报(UDP) > 通过物理层、数据链路层以及网络层的互相作用,我们已经把数据成功从计算机 A 传送到计算机 B 了,可是,计算机 B 里面有各种各样的应用程序,**计算机 B 该如何知道这些数据是给哪个应用程序的呢**? > > 所以,我们在从计算机 A 传数据给计算表 B 的时候,还得指定一个**端口(Port)**,以供特定的应用程序来接受处理。即 **IP 地址 + 端口号就可以唯一确定某个主机上的某个应用进程** > > 也就是说,**网络层的功能是建立主机到主机的通信,而传输层的功能就是建立端口到端口的通信(也可以说是进程到进程之间的通信)** ## 应用层的报文怎么传输到另一个应用层 我们将一个大型网络体系分成了若干个层,**各个层之间是如何进行通信的呢**? ### 相邻层通信 **相邻层之间通信**(相邻的上下层之间的通信,属于局部问题):对于发送端来说,就是不断地对上层传过来的数据进行**封装**,对接收端来说,就是不断地**解封装**下层传过来的数据。 所谓封装,就是说发送端在层与层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层就会把该层对应的首部信息消去 <img src="https://cs-wiki.oss-cn-shanghai.aliyuncs.com/image-20230324123147014.png" alt="封装与解封装" style="zoom: 50%;" /> 下面来画个更细致的图,其实理解了这张图也就理解了对等层通信的含义了: ![封装与解封装](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/image-20230324123223022.png) **相邻层之间的通信只是手段,其目的是为了实现对等层之间的通信** ### 对等层通信 **对等层之间通信**:通过相邻层通信,接收端的每一层就接收到了对应发送端该层发来的消息,所以,对等层通信也被称为 “**虚拟通信**” 比如计算机 A 的应用层发送的消息,经过层层的封装和解封装,最终由计算机 B 的应用层接收到了,这就称为对等层通信 举个例子: **发送端**: - 从计算机 A 的应用层内网通软件向计算机 B 发出一个消息,生成 HTTP 报文 - 请求从计算机 A 的应用层下到 计算机 A 的传输层,传输层在 HTTP 报文数据前面加上 TCP 首部封装成 TCP 报文段,TCP 首部中包括目标端口以及源端口; - 传输层数据下到网络层,网络层在 TCP 报文段前面加上 IP 首部封装成 IP 数据报,IP 首部包括源计算机 A 的 IP 地址和目标计算机 B 地 IP 地址。计算机 A 将计算机 B 的 IP 地址和子网掩码与自己做比对,发现计算机 B 与自己处于相 同的子网。所以数据传输不必经过网关设备 - 网络层数据下到数据链路层,数据链路层在 IP 数据报的前面加上以太网首部封装成帧,以太网首部包括源计算机 A的 MAC 地址和目标计算机 B 的 MAC 地址 - 计算机 A 把帧转换成 bit 流,从物理接口网卡发出 **接收端:** - 物理层接收到电信号,把它交给数据链路层进行查看帧的目标 MAC 地址,和自己是否相等,如果相等说明该帧是发送给自己的,于是将帧头解开并接着上传到网络层 - 网络层查看目标 IP 地址和自己是否匹配,如果匹配即解开 IP 头封装 - 然后再把数据上传到传输层 - 传输层解开对应的包头之后,继续把数据传给应用层,计算机 B 即可接收到计算机 A 发的消息