我检查了最大 UDP 数据包大小,发现它是 65507 字节的数据。
即 65535-8(udp 标头)- 20(ip 标头)。
UDP 长度标头长度为 2 个字节,限制为 65535。
我知道我们从中减去 8 因为它是 UDP 标头的大小
但如果它总是 8 为什么我们需要减去它。
对于 20 的 ip 标头长度,同样的问题。
谢谢
UDP 数据报封装在 IP 数据包内。如果您使用 20 作为 IP 数据包标头大小,那么您指的是 IPv4,并且minimumIPv4 标头大小为 20。IPv4 理论上最大数据包大小为 65,535(IPv4 标头中的 16 位总长度字段),但实际 IPv4 最大数据包大小将是链路上的 MTU。此大小包括 IPv4 标头和 IPv4 负载,这将是 UDP 数据报,包括 UDP 标头和 UDP 负载。
由于UDP数据报是IPv4数据报的数据,而IPv4数据报的整个长度(包括IPv4报头)是IPv4报头的16位总长度字段,因此整个IPv4数据包(包括IPv4报头)是一个最大 65,535 个八位位组。 IPv4 的定义中有详细说明,RFC 971 互联网协议,第 3.1 节互联网标头格式:
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
总长度字段的定义为:
总长度:16 位
总长度是数据报的长度,以八位字节为单位测量,
包括互联网标头和数据。该字段允许的长度
数据报最大可达 65,535 个八位位组。这么长的数据报是
对于大多数主机和网络来说不切实际。所有主机必须做好准备
接受最多 576 个八位位组的数据报(无论它们是完整到达还是
片段中)。建议主机只发送数据报
大于 576 个八位位组,如果他们确信目的地是
准备接受更大的数据报。
选择数字 576 是为了允许合理大小的数据块
除所需的标头信息外还应传输。为了
例如,此大小允许 512 个八位位组加上 64 个标头的数据块
适合数据报的八位位组。最大互联网标头为 60
八位位组,典型的互联网标头是 20 个八位位组,留有余量
用于更高级别协议的标头。
这意味着您必须从最大值 65,535 中减去 IPv4 标头长度才能得出最大 UDP 数据报长度,其中包括 8 个八位字节的 UDP 标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)