UDP 消息长度字段和伪头

网络工程 以太网 ipv4 通讯协议
2021-08-03 13:10:56

我正在学习一些 tcp/ip 基础知识,但在理解 UDP 中的消息长度字段时遇到了麻烦。在我的书中,它说消息长度表示 UDP 标头和八位字节中的数据,并且由于 UDP 标头是 8 个八位字节,因此最小消息长度值为 8。我有一个场景,UDP 标头是 8 个八位字节,并且数据是一个 13 个字符的字符串(13 个八位字节)。但是,我正在查看的示例说消息长度是 20 + 13,然后解释说它是 20 个八位字节用于标头,13 个八位字节用于数据。我认为 UDP 标头是 8 个八位字节,而不是 20 个,那么为什么是 20 个呢?

我怀疑它可能与伪标头有关,它是 12 个八位字节,所以 12 个来自伪标头,8 个来自实际标头 = 20 个总标头八位字节。是这种情况吗?这对我来说真的没有任何意义。也不需要将 13 个八位字节数据四舍五入为 4 的倍数吗?它在我的书中呈现的方式使它看起来需要将数据填充到 32 位(4 个八位字节)。

很抱歉造成这种混乱,只是想了解这里的布局。如果你们需要任何其他信息,请询问。

这是例子

1个回答

你是对的 UDP 标头是 8 个字节。所以我无法真正解释你的 12+8 场景。Pseudoheader是指计算校验和时考虑的header,是IP+UDP+payload的组合,但不是if的全部,因此是pseudo。

20B 是 IPV4(和 TCP)的正常大小。那么也许存在混淆?

如果你可以把你的例子放到网上,它可能有助于理解作者试图传达的内容。

编辑您输入的数据包是 20+8+13 个字节。如果您的文档声称 20+13,则它缺少 UDP 标头。