IP协议——IP分割处理与再构成处理

1、数据链路不同,MTU则相异:

        每种数据链路的MTU之所以不同,是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的MTU也就不同。鉴于IP属于数据链路的上一层,它必须不受限于不同数据链路的MTU大小。

2、IP报文的分片与重组:

        分片往往在网络上遇到比较大的报文一下子无法发送出去时才会进行处理。

        经过分片之后的IP数据包在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。

        这样处理是由诸多方面的因素造成的。例如,现实当中无法保证IP数据包是否经由同一个路径传送。因此,途中即使等待片刻,数据包也有可能无法到达目的地。此外,拆分之后的每个分片也有可能在途中丢失。即使在途中某一处被重新组装,但如果下一站再经过其他路由时还会面临被分片的可能。这会给路由器带来多余的负担,也会降低网络传送效率。

        IP首部中的“片偏移”字段表示分片之后每个分片在用户数据中的相对位置和该分片之后是否还有后续其他分片。根据这个字段可以判断一个IP数据包是否分片以及当前分片为整个数据包的起始、中段还是末尾。

3、路径MTU发现:

        分片机制也有它的不足。首先,路由器的处理负荷加重。随着时代的变迁,计算机网络的物理传输速度不断上升。这些高速的链路,对路由器和计算机网络提出了更高的要求。另一方面,随着人们对网络安全的要求提高,路由器需要做的其他处理也越来越多,如网络过滤等。因此,只要允许,是不希望由路由器进行IP数据包的分片处理的。

        为了应对以上问题,产生了一种新技术“路径MTU发现”(Path MTU Discovery)。所谓路径MTU是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小。即路径中存在的所有数据链路中最小的MTU。而路径MTU发现从发送主机按照路径MTU的大小将数据包分片之后进行发送。进行路径MTU发现,就可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包。

        路径MTU发现的工作原理如下:

        首先在发送端主机发送IP数据包时将其首部的分片禁止标志位设置为1。根据这个标志位,途中的路由器即使遇到需要分片才能处理的大包,也不会去分片,而是将包丢弃。随后,通过一个ICMP的不可达消息将数据链路上MTU的值给发送主机。

        下一次,从发送给同一个目标主机的IP数据包获得ICMP所通知的MTU值以后,将它设置为当前MTU。发送主机根据这个MTU对数据包进行分片处理。如此反复,直到数据包被发送到目标主机为止没有再收到任何ICMP,就认为最后一次ICMP所通知的MTU即是一个合适的MTU值。那么,当MTU的值比较多时,最少可以缓存约10分钟。

        在TCP的情况下,根据路径MTU的大小计算出最大段长度(MSS),然后再根据这些信息进行数据包的发送。因此,在TCP中如果采用路径MTU发现,IP层则不会再进行分片处理。

上一篇:UVA11020 Efficient Solutions


下一篇:华为HCIE R&S笔记-17OSPF收敛过程