IP 协议中header长度范围
答案:20字节-60字节
网络协议 (IP协议) 在 RFC 791 中定义。RFC 指定 IP 报头的格式。 在报头中有一个 4 位长的 IHL(互联网报头长度)字段,并以 32 位字指定报头长度。 IHL 字段可以保存从 0(二进制 0000)到 15(二进制 1111)的值。
所以最长的 IP协议 Header(IP header)大小可以是15 * 32 Bits = 480 Bits = 60 Bytes。 这就是报头的最大大小为 60 字节的原因。
最短的报头大小为 20 字节,其中 IHL 字段的值为 5 (0101)。 这是因为报头中只包含必需字段,都需要 20 字节的空间。 因此,虽然理论上您可以将 IHL 设置为 < 5 的值,但这始终是一个不正确的值,因此是一个无效的数据包头。
UDP协议报文长度
首先分析UDP协议规范,UDP报文由4部分组成,分别是:
- Source Port【16位】:源端口,最大65535
- Destination Port【16位】:目标端口,最大65535
- Length【16位】:指定UDP Header + UDP Data 长度
- Checksum【16位】:检验和
UDP协议报头共计64位,8字节。
理论 ① UDP报文的最大长度是65535,其中包括8位报头。注意,只是理论上!
理论 ② DP报文长度取决于底层协议,即您使用的是 IPv4 还是 IPv6。
- 在 IPv4 中,数据包大小的最大长度为 65,535。 因此,对于 UDP 数据报,您的最大数据长度为 65535 - 20(IP Header) - 8(UDP Header)
- 在 IPv6 jumbograms 中,UDP 数据报的大小可能大于 65,535 字节
注意:此大小是 UDP 数据报的理论最大大小,但在实践中,此限制进一步受到数据链路层 MTU 的限制(因每种数据链路层技术而异,但不能小于 576 字节)。考虑到这一点,UDP 数据报的最大大小可以进一步计算为(对于 IPv4):
- 576 bytes - 20 bytes(IP header) = 556 (including 8 bytes UDP header)
UDP和TCP都会分段吗
使用 TCP 时,数据报在传输层被分成块。 这些块被称为 TCP 段【TCP segment】。
使用 UDP 时,数据报不会在传输层被切碎; 它们只是得到一个报头而已。