为什么 UDP 标头有“长度字段”?

use*_*879 5 networking udp protocols

我不明白为什么 UDP 标头有“长度”字段,为什么需要它?

如果原因是要知道“应用消息(L5数据)”在该段中的何处开始,则可以从“UDP数据-UDP报头长度(已知值)”中获取。

fra*_*ike 8

因为UDP可以通过IP以外的其他协议进行传输。

而且因为 UDP 传输的数据报消息的长度(udp 长度)可以通过多个 IP 分段数据包发送。 在此输入图像描述

来源: https: //notes.shichao.io/tcpv1/ch10/

  • IP 数据包分段和重组发生在第 3 层 (IP),并且对第 4 层 (UDP) 是透明的。UDP 永远不会知道 IP 数据包是否已分段,因为 IP 将在将数据包有效负载传递到 UDP 之前重新组装数据包片段。 (4认同)

Ton*_*oij 6

UDP报头长度字段是UDP报头加上UDP数据的长度。它确实是多余的,因为这个长度可以从 IP 报头总长度字段计算得出,其中 UDP 数据报长度是 IP 总长度减去 IP 报头长度。

  • 显然,需要一个长度字段来指定有效负载字节的数量。该协议嵌入到另一个协议 (IP) 中,而该协议也具有有关其有效负载的长度信息(可用于计算 UDP 有效负载长度),这一事实使得 UDP 长度变得多余。但是,如果您要在没有此信息的另一个(非 IP)协议中使用 UDP 协议,则需要 UDP 长度字段。因此,作为一个独立的协议定义,而不要求它必须始终嵌入另一个包含长度信息的协议中,它是必要的。 (10认同)