lwip udp无法发送大于1472字节数据问题解决
1.问题定位首先抓包工具进行抓包wireshark勾选UDP 协议的checksum选项抓包以后发现是udp的checksum有问题2.原因剖析有些网卡的硬件校验对于小于1500字节的数据的校验计算是正确的,大于1500字节的数据的校验计算是错误的,导致接收端无法接收。3.解决之道根据以上原因我们应该禁用网卡的硬件校验,使能lwip的软件校验便可以成功解决这个问题。另外还需要打开IP_FRAG 和
·
1.问题定位
首先抓包工具进行抓包
wireshark勾选UDP 协议的checksum选项
抓包以后发现是udp的checksum有问题
2.原因剖析
有些网卡的硬件校验对于小于1500字节的数据的校验计算是正确的,大于1500字节的数据的校验计算是错误的,导致接收端无法接收。
3.解决之道
根据以上原因我们应该禁用网卡的硬件校验,使能lwip的软件校验便可以成功解决这个问题。另外还需要打开IP_FRAG 和 IP_REASSEMBLY两个宏定义,打开分包发送功能,使能这两个宏,只要传输数据大于mtu(1500)lwip就会使用分包发送功能,这两个宏默认是使能的。
问题成功解决
ps:一定要彻底禁用网卡的硬件校验功能,禁用不彻底可能会导致ping不通,但是可能tcp通讯没有问题的问题。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)