ip分片的具体工作原理是什么
IP分片是指在网络层(OSI模型的第三层)中,当IP数据报的大小超过网络链路的最大传输单元(MTU)时,需要将数据报分割成更小的片段进行传输。这是为了确保大数据报能够在不同网络中正确传输。
具体工作原理如下:
- 当一个IP数据报的大小超过了网络链路的MTU时,路由器或主机会将其分割成更小的片段,每个片段都会成为一个独立的IP数据报进行处理。
- 每个片段都会携带一个偏移量字段,指示该片段在原始数据报中的位置。
- 第一个片段会携带原始数据报的头部信息,后续片段只携带数据部分。
- 目标主机接收到这些片段后,会根据它们的偏移量字段重新组装原始数据报。
在IPv4中,IP分片是由发送端完成的,而在IPv6中,由于引入了路径MTU发现机制,大部分情况下不需要进行分片,因此IPv6中的分片通常由中间路由器完成。
具体讲一下偏移量的设置
在IPv4中,偏移量是IP数据报头部中的一个字段,用于指示该片段在原始数据报中的位置。偏移量以8字节为单位,因此偏移量字段的值表示该片段相对于原始数据报开头的偏移量,而不是相对于前一个片段的偏移量。
具体设置偏移量的步骤如下:
- 当需要对一个IP数据报进行分片时,发送端首先确定MTU的大小,然后计算出每个片段的大小,并设置偏移量。
- 第一个片段的偏移量通常为0,因为它包含了原始数据报的头部信息,所以不需要偏移。
- 对于后续的片段,偏移量的计算公式为:前一个片段的偏移量 + 前一个片段的数据长度 / 8。
- 偏移量字段占13位,因此最大偏移量为(2^13 - 1)* 8 = 65,528字节,这也意味着IPv4数据报最多可以被分成8192个片段。
接收端在接收到这些片段后,会根据偏移量字段重新组装原始数据报,将每个片段按照偏移量的顺序进行重组,最终得到完整的原始数据报。
需要注意的是,由于IPv6中的路径MTU发现机制,IPv6数据报通常不需要进行分片,因此IPv6中的偏移量设置与IPv4有所不同。