更多分段位能够让接收主机判断分片的数据报是否发送完毕;而分段位除了能够将将数据报分段,而且还能够实现另一个用途,在某些情况下,可以利用分段位动态的找到网络端到端的MTU大小。如果路由器配置时,置此位为0,则当主机尝试发送一个比传输路径上的数据报大的帧时,路由器不转发该帧,而是丢弃,并给源主机发送ICMP报文,说明该数据报太大,源主机利用此信息调整数据报大小,再重新发送。
偏移量
13位的偏移量字段用来表示分段的数据报在整个数据流中的位置,即相当于分片数据报的顺序号。发送主机对第一个数据报的偏移量置为0,而后续的分片数据报的偏移量则以网络的MTU大小赋值。偏移量对于接收方进行数据重组的时候,这是一个关键的字段。对于分片的数据段(单位:字节)必须为8的整数倍,否则IP无法表达其偏移量。如下图3所示:
以太网中,源主机如果需要通过UDP传送3000字节的数据到目的主机,这时的分段情况如下图4所示(在同一网段):
此处需要注意的是对于分片1的报头,相对于其他两个分片的报头而言,要多出8个字节UDP协议的报头开销,因此,在计算实际传输的数据净载荷时,分片1要多减去8字节UDP报头。最后,接收主机通过此偏移值将数据重组成完整的数据报。
总结
IP协议虽然是我们司空见惯的一个协议,但是,对于其报头结构,报头中每个字段的含义,还是需要我们不断学习,才能真正理解IP协议的精髓。
偏移量
13位的偏移量字段用来表示分段的数据报在整个数据流中的位置,即相当于分片数据报的顺序号。发送主机对第一个数据报的偏移量置为0,而后续的分片数据报的偏移量则以网络的MTU大小赋值。偏移量对于接收方进行数据重组的时候,这是一个关键的字段。对于分片的数据段(单位:字节)必须为8的整数倍,否则IP无法表达其偏移量。如下图3所示:
以太网中,源主机如果需要通过UDP传送3000字节的数据到目的主机,这时的分段情况如下图4所示(在同一网段):
此处需要注意的是对于分片1的报头,相对于其他两个分片的报头而言,要多出8个字节UDP协议的报头开销,因此,在计算实际传输的数据净载荷时,分片1要多减去8字节UDP报头。最后,接收主机通过此偏移值将数据重组成完整的数据报。
总结
IP协议虽然是我们司空见惯的一个协议,但是,对于其报头结构,报头中每个字段的含义,还是需要我们不断学习,才能真正理解IP协议的精髓。