gpt4 book ai didi

networking - 为什么 UDP 的数据包中有两次 "UDP Length"字段?

转载 作者:行者123 更新时间:2023-12-04 13:50:21 24 4
gpt4 key购买 nike

为什么 UDP 的数据包中有两次“UDP Length”字段?不是多余的吗?如果需要进行某种错误检查,请提供示例。

最佳答案

您的观察是正确的。长度字段是多余的,因为 IP 头和 UDP 头都有长度字段。我对这种冗余原因的唯一猜测是,它的发生是因为 UDP 是在当时设计的,当时还不清楚 IP 协议(protocol)套件会是什么样子。

所有合法的 UDP 数据包都应该有一个长度字段,该长度字段与可以从 IP header 中的长度字段导出的内容完全匹配。如果不这样做,就无法确定接收方将如何处理数据包。

长度字段不一致的UDP数据包在互联网上随处可见。我猜他们正在探测缓冲区溢出,如果一个长度字段用于分配内存而另一个长度字段用于将数据复制到分配的缓冲区,则可能会发生这种情况。

在较新的 UDP Lite 协议(protocol)中,长度字段已被重新利用。 UDP Lite header 中的长度字段并不指示数据包中有多少数据,而是指示校验和涵盖了多少数据。 UDP Lite 数据包中的数据长度始终根据 IP header 中的长度字段计算得出。这是 UDP 和 UDP Lite header 格式之间的唯一区别。

关于networking - 为什么 UDP 的数据包中有两次 "UDP Length"字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com