近期学院精彩文章导读:
[专题]cisco路由器配置路由协议篇 IGRP路由协议简介及配置命令
CCNA认证考试重点及经典例题讲解 如何建立DHCP服务器
经典好文 浅析路由协议的实现算法 如何配置静态路由及配置实例
ADSL全接触 软硬件维护及常见故障 现场操作,一步步教你熔接光纤
【IT168 网络学院】尽管大多数的系统不支持路径MTU发现功能,但可以很容易地修改traceroute程序(第8章),用它来确定路径MTU。要做的是发送分组,并设置“不分片”标志比特。发送的第一个分组的长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时(在上一节讨论的)就减小分组的长度。
如果路由器发送的ICMP差错报文是新格式,包含出口的MTU,那么就用该MTU值来发送,否则就用下一个最小的MTU值来发送。正如RFC 1191 [Mogul and Deering 1990]声明的那样, MTU值的个数是有限的,因此在我们的程序中有一些由近似值构成的表,取下一个最小MTU值来发送。
首先,我们尝试判断从主机s u n到主机s l i p的路径MTU,知道SLIP链路的MTU为2 9 6。
![]() |
在这个例子中,路由器bsdi没有在ICMP差错报文中返回出口MTU,因此我们选择另一个MTU近似值。T T L为2的第1行输出打印的主机名为bsdi,但这是因为它是返回ICMP差错报文的路由器。T T L为2的最后一行正是我们所要找的。在bsdi上修改ICMP代码使它返回出口MTU值并不困难,如果那样做并再次运行该程序,得到如下输出结果:
![]() |
这时,在找到正确的MTU值之前,我们不用逐个尝试8个不同的MTU值——路由器返回了正确的MTU值。
全球互联网
作为一个实验,我们多次运行修改以后的traceroute程序,目的端为世界各地的主机。可以到达1 5个国家(包括南极洲),使用了多个跨大西洋和跨太平洋的链路。但是,在这样做之前,作者所在子网与路由器n e t b之间的拨号SLIP链路MTU(见图11 - 1 2)增加到1500,与以太网相同。
在1 8次运行当中,只有其中2次发现的路径MTU小于1500。其中一个跨大西洋的链路MTU值为5 7 2(其近似值甚至在RFC 11 9 1中也没有被列出),而路由器返回的是新格式的ICMP差错报文。另外一条链路,在日本的两个路由器之间,不能处理1500字节的数据帧,并且路由器没有返回新格式的ICMP差错报文。把MTU值设成1 0 0 6则可以正常工作。
从这个实验可以得出结论,现在许多但不是所有的广域网都可以处理大于5 1 2字节的分组。利用路径MTU发现机制,应用程序就可以充分利用更大的MTU来发送报文。
