开始之前先附上网络模型的图,此次问题的重点出在运输层、网络层、数据链路层。
协议栈应用:lwip_1.4.1
问题现象:在udp send数据包大小不超过MTU值时,数据包发送且接收方接收成功;当udp send数据包大小超过MTU值时,数据包用wireshark抓包发现发送成功,但是接收方未接收成功。
分析流程:
1.查看了应用层的数据,确认无误,于是问题指向了udp自身包头一块。
2.在udp自身包头中确认MAC、IP地址、port等信息无误,然而又因为只会在协议栈IP层自动拆包后会出现接收方未接收成功的情况,于是问题又指向了IP层的TTL值与checksum值。
在这里插入代码片
普通的 IP 头部长度为20 个字节,不包含IP 选项字段。
版本号(Version)字段标明了IP 协议的版本号,目前的协议版本号为4。下一代IP 协议的版本号为6。
报文长度指 IP 包头部长度,占4 位。
8 位的服务类型(TOS,Type of Service)字段包括一个3 位的优先权字段(COS,Class of Service),4 位TOS 字段和1 位未用位。4 位TOS 分别代表最