记录一次checksum校验失败导致丢包的问题

当UDP数据包大小超过MTU值时,虽然发送成功但接收方未收到。问题定位到IP层的TTL和checksum。经过排查,发现硬件校验的checksum在超出MTU时出错。解决方案是改为软件校验,通过修改 lwip 配置文件启用Checksum生成,最终解决了丢包问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始之前先附上网络模型的图,此次问题的重点出在运输层、网络层、数据链路层。
协议栈应用: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 分别代表最

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值