如何强制对 UDP 数据进行完整校验和?

发布于 2024-10-16 21:51:54 字数 215 浏览 3 评论 0原文

根据 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

单调的奢华 2024-10-23 21:51:54

对于 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.

嘿哥们儿 2024-10-23 21:51:54

问题更多在于您的 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文