TCPIP以太网数据包格式解析及LWIP架构图解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以太网数据包分类及格式解析
1、以太网数据链路层帧格式(MAC 帧)——即CPU 通过MII/RMII 接口发给PHY 芯片的数据
2、ARP (Address Resolution Protocol ——地址解析协议)协议数据包格式
硬件类型:一般为0x0001:表示MAC 帧中“目的地址”的类型为以太网MAC
地址。
协议类型:表示要映射的协议地址类型。0x0800表示映射为IP 地址。 硬件地址长度:表示“目的地址”的长度,MAC 地址为0x06。 协议地址长度:表示IP 地址长度,为0x04。
OP :表示操作类型。ARP 请求:0x01;ARP 应答:
0x02;RARP 请求:0x03;RARP
应答:0x04。
发送端以太网地址:同“源地址”。
发送端IP 地址:即“源地址”对应的IP 地址。
目的以太网地址:同“目的地址”,对ARP 请求来说,为0。 目的IP 地址:ARP 包要发往的对象IP 地址。
3、IP 数据包格式
4位版本:对于IPv4,该值为4;对于IPv6,该值为6。
4位首部长度:记录首部长度,以字为单位。对于不含选项的IP报头,该值为5。
8位服务类型:用来描述IP数据包急需的服务类型,如最小延时、最大吞吐量等。本字段在LWIP中没用。
16位总长度:描述了整个IP数据报包括IP报头的总字节数。
16位标识:用来标识IP层发送出去的每一份IP数据报,每发送一份报文,该值加1。
3位标志和13位偏移:用于IP数据包分片时使用。
8位生存时间(TTL):描述了该IP数据包最多能被转发的次数,每经过一次转发,该值减1,当该值为0时,一个ICMP报文会被返回至源主机。
8位协议:用来描述该IP数据包是来自于上层的哪个协议。1:ICMP;2:IGMP;
6:TCP;17:UDP。
16位首部校验和:针对IP首部的校验和,并不包括数据部分。数据部分的校验是由上层协议负责的。
32位源IP地址:发送该IP包的主机IP地址。
32位目的IP地址:该包欲到达的目的主机IP地址。
选项和数据:上层协议数据。有ICMP、TCP、UDP等。
4、ICMP(Internet Control Message Protocol—控制报文协议)包格式(ping命令
是其中一种)。
类型:回显请求:8;回显应答:0。
代码:请求和应答代码均为0。
标识符:Unix系统在实现Ping命令时,把ICMP报文中的该字段置为发送进程的ID号。
序号:序号从0开始,每发送一次新的回显请求就加1。
5、LWIP协议栈主要函数架构和调用关系图