如何强制对 UDP 数据进行完整校验和?
根据 http://kerneltrap.org/mailarchive/linux-netdev/2007 /9/23/272755,Linux 不会为发往环回接口的数据包生成完整的校验和。我想强制 UDP 校验和。我该怎么做?
According to http://kerneltrap.org/mailarchive/linux-netdev/2007/9/23/272755, Linux does not generate full checksums for packets destined for the loopback interface. I would like to force UDP checksumming. How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于 UDP,校验和是可选的,您也可以将其设置为 0。
如果您出于某种原因需要它,为什么不自己创建校验和呢?例如:
http://www.netfor2.com/udpsum.htm
然后(至少如果您使用原始套接字,我不确定您是否可以使用普通 UDP 套接字来执行此操作)只需使用计算出的校验和更新数据包即可。
The checksum is optional for UDP, you can also set it to 0.
If you need it for some reason, why don't you create the checksum yourself? E.g.:
http://www.netfor2.com/udpsum.htm
Then (at least if you use raw sockets, I'm not sure you can do this with plain UDP sockets) just update the packet with your computed checksum.
问题更多在于您的 NIC 具有硬件校验和支持,而 Linux 正在使用它,因此永远不要在内核中设置校验和。尝试禁用硬件校验和,但要注意性能开销。
The issue is more that your NIC has hardware checksumming support and Linux is using that and so never setting the checksum inside the kernel. Try disabling hardware checksumming but beware of the performance overhead.