IP数据报首部的固定部分中的各字段
最大十进制数值是15
。请注意,首部长度字段所表示数的单位是32位字
(1个32位字长是4字节)。因为IP首部的固定长度是20字节,因此首部长度字段的最小值是5(即二进制表示的首部长度是0101 = 5,表示大小 = 5 * 4 (32 位字 = 20 字节))。而当首部长度为最大值1111时(即十进制数的15),就表明首部长度达到最大值15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此IP数据报的数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度是20字节(即首部长度为0101),这时不使用任何选项。总长度字段为16位
,因此数据报的最大长度为2^16-1=65535字节。尽可能长的IP数据报会使传输效率得到提高,但数据报短些也有好处。每一个IP数据报越短,路由器转发的速度就越快。为此,IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不超过576字节的数据报。这是假定上层交下来的数据长度有512字节(合理的长度),加上最长的IP首部60字节,再加上4字节的富余量,就得到576字节。当主机需要发送长度超过576字节的数据报时,就要进行分片。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报
标志字段中的最低位记为MF
(More Fragment)
片偏移以8个字节为偏移单位
。这就是说,每个分片的长度一定是8字节(64位)的整数倍原文:https://www.cnblogs.com/code-duck/p/13292230.html