【发布时间】:2017-03-06 03:22:49
【问题描述】:
我检查了最大 UDP 数据包大小,发现它是 65507 字节的数据。
这是 65535-8(udp 标头)- 20(ip 标头)。
UDP 长度标头长度为 2 个字节,限制为 65535。
我知道我们从中减去 8,因为它是 UDP 标头的大小
但如果它总是 8 为什么我们需要减去它。
对于 20 的 ip 标头长度,同样的问题。
谢谢
【问题讨论】:
标签: networking udp ip
我检查了最大 UDP 数据包大小,发现它是 65507 字节的数据。
这是 65535-8(udp 标头)- 20(ip 标头)。
UDP 长度标头长度为 2 个字节,限制为 65535。
我知道我们从中减去 8,因为它是 UDP 标头的大小
但如果它总是 8 为什么我们需要减去它。
对于 20 的 ip 标头长度,同样的问题。
谢谢
【问题讨论】:
标签: networking udp ip
UDP 数据报封装在 IP 数据包中。如果您使用 20 作为 IP 数据包标头大小,那么您的意思是 IPv4,而 最小 IPv4 标头大小为 20。IPv4 的理论最大数据包大小为 65,535(16 位的总长度字段) IPv4 标头),但真正的 IPv4 最大数据包大小将是链路上的 MTU。此大小包括 IPv4 标头和 IPv4 有效负载,这将是 UDP 数据报,包括 UDP 标头和 UDP 有效负载。
由于UDP数据报是IPv4数据报的数据,而IPv4数据报的整个长度,包括IPv4头,是IPv4头的16位Total Length字段,整个IPv4数据包,包括IPv4标头最多为 65,535 个八位字节。这在 IPv4 的定义中有详细说明,RFC 971 Internet protocol, Section 3.1 Internet Header Format:
3.1。互联网标题格式
互联网标头内容摘要如下:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Total Length 字段的定义是:
总长度:16 位
Total Length 是数据报的长度,以八位字节为单位, 包括互联网标题和数据。该字段允许一个 数据报最长为 65,535 个八位字节。这么长的数据报 对于大多数主机和网络来说是不切实际的。所有主机都必须准备好 接受最多 576 个八位字节的数据报(无论它们是完整的还是 在片段中)。建议主机只发送数据报 大于 576 个八位字节,如果他们确信目的地是 准备接受更大的数据报。
选择数字 576 以允许合理大小的数据块 除了所需的标头信息外,还可以传输。为了 例如,此大小允许 512 个八位字节加上 64 个标头的数据块 八位字节以适合数据报。最大 Internet 标头为 60 八位字节,一个典型的互联网标头是 20 个八位字节,允许留有余量 用于更高级别协议的标头。
这意味着您必须从最大值 65,535 中减去 IPv4 报头长度,才能得出最大 UDP 数据报长度,其中包括 8 个八位字节的 UDP 报头。
【讨论】: