UDP最大包大小

时间:2017-03-05 14:26:42

标签: networking udp ip

我检查了最大UDP数据包大小,看到它是65507字节的数据 这是65535-8(udp标题) - 20(ip标题)。
UDP长度标头长2个字节,限制为65535 我知道我们从它中减去8因为它是UDP头的大小 但如果它总是8,为什么我们需要减去它 同样的问题是20个ip头长度。

谢谢

1 个答案:

答案 0 :(得分:2)

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位总长度字段,整个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    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

总长度字段的定义是:

  

总长度:16位

     

总长度是数据报的长度,以八位字节为单位,   包括互联网标题和数据。该字段允许a的长度   数据报最多为65,535个八位字节。这样长的数据报是   对大多数主机和网络来说都不切实际。所有主人必须准备好   接受最多576个八位字节的数据报(无论它们是全部还是全部到达)   在片段中)。建议主机仅发送数据报   如果它们确保目的地是,则大于576个八位字节   准备接受更大的数据报。

     

选择数字576以允许合理大小的数据块   除了所需的标题信息之外还要传输。对于   例如,此大小允许512个八位字节的数据块加上64个标头   八位字符以适合数据报。最大的互联网标题是60   八位字节,典型的互联网标题是20个八位字节,允许保证金   对于更高级别协议的标题。

这意味着您必须从最大值65,535中减去IPv4标头长度,以达到最大UDP数据报长度,其中包括8个八位位组UDP标头。