优质好文推荐👆👆
我们如果想要了解封装与分用,先需要了解TCP/IP五层协议~~
该图的右边就是TCP/IP五层协议~~需要先理解一下各层是什么含义~
应用层:直接为用户应用程序提供网络服务和通信协议。它定义了应用程序如何交换数据和特定应用的规则
传输层:负责在源主机和目标主机和应用程序之间提供端到端的通信服务。主要有两种协议:UDP协议(不可靠,无连接),TCP协议(可靠,有连接)。简单地来说,负责两台主机之间的数据传输
网络层:负责将数据包从源主机跨越多个网络路由到目标主机~~使用逻辑地址进行寻址,并找到数据包传输的最好路径~~
数据链路层:负责在同一物理网络内的节点之间可靠地传输数据帧。它处理物理地址
(MAC地址)、帧的封装、错误检测和对物理层传输地比特流的访问控制~~
物理层:负责在物理通信媒介(如电缆、光纤)上传输原始地二进制比特流~确保比特能从一个设备传输到另一个设备~~
那我们举个示例来说明封装和分用~~大家都用过QQ吧,QQ怎么把你发送的数据发送到对端的~~这里其实就涉及到了封装和分用~~
封装的过程
首先你编辑了一条消息,假如说:你好,同学! 此时,你正在处在应用层~~
应该程序就会调用操作系统的API进而把数据传输到传输层
传输层对其封装
UDP报头中包含的内容
传输层调用操作系统内核中的API把数据传输到网络层
网络层对其封装
IP报头中包含的内容
网络层调用操作系统内核中的API把数据传输到数据链路层
数据链路层对其封装
以太网帧头通常包含源MAC地址、目的MAC地址、类型/长度
数据链路层调用操作系统内核中的API把数据传输给物理层
把上述这样二进制数据转换成光信号、电信号、电磁波,然后进行发送给对端
忽略中间传输的过程~~
假设数据已经到达了网卡~~应该怎么样处理,这个过程就叫做分用
假设发送方为A,接收方为B
B的物理层
B的物理层收到了光信号/电信号/电磁波,就会把这些信号转化成二进制,得到一个以太网数据帧,然后把这个数据帧,交给数据链路层~~
B的数据链路层
按照以太网协议对其数据进行解析,也就是去掉以太网数据帧,得到其中的内容~~然后上传给网络层
这个解析的过程:
目标MAC地址的校验~如果地址不匹配,将会被舍弃~~
帧校验序列检查
规则:
读取帧尾部的4字节FCS值
对接收到的整个帧(除了FCS本身)使用相同的CRC(循环冗余校验)算法进行计算,得到一个新的FCS值
如果新的FCS值和FCS值不匹配,则会舍弃
最后去掉封装~~以太网帧头
B的网络层
按照IP协议对其数据进行解析,得到IP报头中的内容,然后上传给传输层~~
这个解析的过程:
IP报头检验,如果不匹配,则会被舍弃
目标IP地址检验 如果不匹配,则会被舍弃
处理分片与重组 如果不匹配,则会被舍弃
解封装:去掉IP报头
协议字段判断 :这个主要是判断载荷中封装的是哪种传输层协议的数据段/数据报
B的传输层
按照UDP协议对其数据进行解析,得到UDP报头中的内容,然后上传给应用层~~
这个解析的过程:
UDP报头解析与校验~~
分用至目标应用程序
这是传输层“分用”的关键步骤,UDP模块会读取UDP报头中的目标端口号~
根据这个目标的端口号,UDP模块会将UDP载荷放入到接收队列中或直接给
应用程序~~
解封装 :去掉UDP报头~~
B的应用层
按照自己约定号的格式对其进行解析,得到数据,然后到达了B,最后对端就收到了你发的消息。
以上就是封装和分用的过程~~