IP数据报的分片和重组
IP协议在网络层呢个,提供不可靠无连接的数据报传输服务,通过IP蹭的封装和解封装来实现。
1、IP数据报文的各字段:
总共分为:报头和数据区两大部分。
2 各字段作用如下:
1、版本:占4位,表示该IP数据报使用的IP协议版本。代表IPv4
2、首部长度:占4位,可表示最大数值是15个单位,1单位=4字节,所以IP首部最长位60字节。固定长度20字节。
3、服务类型(TOS、type of service),目前网络中不使用。
4、总长度:数据报的长度,占16位=首部+数据,单位为字节,因此理论上数据报的最大长度为2^16-1=65535字节,总长度不能超过最大传送单元MTU。
2.1 ip分片与重组使用:5,6,7
5、上层协议标识:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。
标识(identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原
来的数据报。
6、标志:占3位。只有前2位有意义。最低位:MF MF=1:后边还有分片 MF=0:表示最后一个分片。
中间字段DF:DF=0时才允许分片。
MF:片未完位。0:是最后一片,1:不是最后一片。
DF: 不分片位。0:允许分片,1:强制不允许分片。
7、片偏移:13位。较长数组在分片后某片在原分组中的相对位置。
8、生存时间:TTL。数据报在网络汇总可通过路由器的最大值。路由器数的两倍。
目的IP如果是错误,路由器会一直转发数据报,然后会在网络中一直兜圈,占用网络带宽网络资源。
9、协议:表示数据报使用的哪个协议。
IP协议就可以承载各种上层协议,目标端根据协议标识就把收到的IP数据包送到TCP等处理次报文的上层协议。
10、首部检验和:16位。只检测数据报首部部分。通过16位二进制反码求和算法。
原理:发送端首先将检验和字段置0,然后对头部中每16位二进制数进行反码求和的运算,并将结果存在校验和字段中。 由于接收方在计算过程中包含了发送方放在头部的校验和,因此,如果头部在传输过程中没有发生任何差错,那么接收方计算的结果应该是全1。
丢弃完,就不要再进行传送了。
经过一次路由器,IP部首就会改变。eg:TTL、标示、片偏移。
提高路由器的运行效率。
2.2 重组的时候会加首部
每个分片都会加首部
2.3 举例
ID: D-Length@Offset / DF / MF
标识:XXXX代表着该数据报的唯一标识,重组需要根据标识来确定不同分片是属于哪一个数据报的
DF=0代表可以分片,MF=1代表不是最后一个分片
片偏移:13位。较长数组在分片后某片在原分组中的相对位置,用来重组,@之后的数据为偏移量,用来重组,@前面的为该分片的大小