4.5 IP分割处理与再构成处理

4. 5. 1 数据链路不同,MTU则相异

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


4.5 IP分割处理与再构成处理_第1张图片

任何一台主机都有必要对IP分片(IP Fragmentation)进行相应的处理。分片往往在网*上遇到比较大的报文无法一下子发送出去时才会进行处理。

图4. 24展示了网络传输过程中进行分片处理的一个例子。由于以太网的默认 MTU是1500字节,因此4342字节的IP数据报无法在一个帧当中发送完成。这时,路由器将此IP数据报划分成了3个分片进行发送。而这种分片处理只要路由 器认为有必要,会周而复始地进行T。

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

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


4.5 IP分割处理与再构成处理_第2张图片

4. 5. 3 路径MTU发现


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


其次,在分片处理中,一旦某个分片丢失,则会造成整个ip数据报作废。为了避免此类问题,TCP的初期设计还曾使用过更小T的分片进行传输。其结果是网路的利用率明显下降。

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


4.5 IP分割处理与再构成处理_第3张图片

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

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

下一次,从发送给同一个目标主机的IP数据报获得ICMP所通知的MTU值以后,将它设置为当前MTU。发送主机根据这个MTU对数据报进行分片处理。如此反复,直到数据报被发送到目标主机为止没有再收到任何ICMP,就认为最后一次ICMP所通知的MTU即是一个合适的MTU值。那么,当MTU的值比较多时, 最少可以缓存T约10分钟。在这10分钟内使用刚刚求得的MTU,但过了这10分 钟以后则重新根据链路上的MTU做一次路径MTU发现。

前面是UDP的例子。那么在TCP的情况下,根据路径MTU的大小计算出最大段长度(MSS),然后再根据这些信息进行数据报的发送。因此,在TCP中如果釆用路径MTU发现,IP层则不会再进行分片处理。关于TCP的最大段长度,请参考6. 4. 5节。

你可能感兴趣的:(4.5 IP分割处理与再构成处理)