IP分片

  以太网和802.3对一个数据帧的长度限制分别为1500和1492字节。而使用IP协议对数据进行封装时,由图1可知IP数据报有16位表示整个数据报总长度(字节数),即数据报最多有65535字节。

图1

   因此当IP层从上一层(TCP,UDP,ICMP等)接收到需要发送的IP数据后,需要判断向哪个接口发送数据,并查询此接口的MTU(链路层最大传输单元)。然后把数据报长度与MTU进行比较,如果需要就进行分片传送。

图2

   由于在数据传输过程中可能经过不同的链路层协议(图2),因此在从路由器到下一个接口时也要确定此接口的MTU。因此,分片发生在原始发送端主机和中间路由器上。每个片段的最大尺寸是MTU减去IP包头的大小(20字节最低; 60个字节的最大值)。

 如图1所示,IP首部中有16位的标识字段,对于发送端的每一份IP数据报来说,标识字段都包含一个唯一值,在数据分片时被复制到每个片中,即标识这些分片为同一个IP数据报。

 图1所示3位标志字段,其中1位表示“更多的片”,除最后一片外,其他都要置1。表示自己不是最后一片。

 图1的13位偏移字段表示该片偏移原始原始数据报的位置。偏移字段以8字节块为单位进行测量(除最后一片的数据必须为8的整数倍,不包括IP首部)。它是13位长,并指定特定相对于原始未分段的IP数据报的开始的片段的偏移量。第一片段已偏移量为0。这允许最多(2偏移13(次方) - 1)×8 =字节65,528,这将超过65,535字节的最大IP报文长度。此外,分片后每一片的IP首部的总长度值都要改为该片的长度值。

 分片后,每一片都成为一个分组,具有自己的IP首部,选择路由时也与其他分片独立。

你可能感兴趣的:(IP分片)