嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式

视频学习链接如下:https://www.bilibili.com/video/BV1qf4y1D7NU?p=11&spm_id_from=333.880.my_history.page.click.

数据在各层的组包、解包

嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第1张图片

组包过程

组包过程就是一层层封装头部的过程。

解包过程

解包过程就是一层层解析头部的过程。

当主机 B 接收到主机 A 的帧数据后,并且当帧数据到达数据链路层,数据链路层便开始解析帧数据中的 MAC 头信息,解析过程是判断 MAC 头中的地址是否与当前主机的 MAC 地址一致。如果一致,就继续处理。此外,链路层也只能查看 MAC 头,而不能查看其他头。

数据链路层处理之后,它会把已经解析的 MAC 头给去掉,剩下的报文(帧数据)到达网络层,网络层只能解析 ip 头,解析过程是判断 ip 头中的地址是否与当前主机的 ip 地址一致。同样的,网络层也只能查看 ip 头,而不能查看其他头。处理完之后,它也会把已经解析的 ip 头给去掉,剩下的报文(帧数据)到达传输层。

传输层只能解析 TCP/UDP 头,解析过程是判断 TCP/UDP 头中的端口号是否与当前主机中正在与之通信的应用程序的端口对应。同样的,传输层也只能查看 TCP/UDP 头,而不能查看其他头(还剩下用户数据)。处理完之后,它也会把已经解析的 TCP/UDP 头给去掉,剩下的报文(帧数据,还剩下用户数据)到达接收应用进程。

数据链路层封包(以太网头部)格式

嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第2张图片
目的地址是 接收主机 的 MAC 地址
源地址是 发送主机 的 MAC 地址

无线封装头不需要去关心,因为最终会转换为以太网封装头。所以,这里只关心以太网封装头。

下面,来说一说类型这一项,我们看下图
嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第3张图片
当帧数据到达数据链路层(硬件接口)之后,会有三条路可以走,即ARP、 IP、RARP。这就相当于是一个十字路口,接下来往哪边走就由这个"类型"值来决定。比如类型值为 0x0800,就说明是ip数据报,就应该往网络层走。

网络层封包(ip 头部)格式

嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第4张图片
上图中,IP 数据报的每一行都是四个字节(32位)。

数据一项则要么是UDP数据报,要么是TCP数据报。

下面,来说一说协议这一项,我们看下图
嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第5张图片
从上图可以看出,当帧数据到达网络层之后,会有四条路可以走,即ICMP、 TCP、UDP、IGMP。接下来往哪边走就由这个协议来决定。这又相当于是一个十字路口,比如协议值为 6,就说明是TCP数据报,就应该往传输层走。

传输层封包(ip 头部)格式

嵌入式网络的基础知识 -- 数据包的组装、拆解、各头部格式_第6张图片
上图中,UDP 和 TCP 数据报的每一行都是四个字节(32位)。

正是因为 TCP 数据报 的格式参数多,所以才能保证通信的可靠性和准确性。

你可能感兴趣的:(笔记,网络)