traceroute局域网输出( 二 )


图8 - 1中的源端口号(4 2 8 0 4)看起来有些大 。t r a c e r o u t e程序将其发送的U D P数据报的源端口号设置为U n i x进程号与3 2 7 6 8 之间的逻辑或值 。对于在同一台主机上多次运行t r a c e r o u t e程序的情况,每个进程都查看I C M P返回的U D P首部的源端口号,并且只处理那些对自己发送应答的报文 。
关于t r a c e r o u t e程序,还有一些必须指出的事项 。首先,并不能保证现在的路由也是将来所要采用的路由,甚至两份连续的I P数据报都可能采用不同的路由 。假如在运行程序时,路由发生改变,就会观察到这种变化,这是因为对于一个给定的T T L,假如其路由发生变化,t r a c e r o u t e程序将打印出新的I P地址 。
第二,不能保证I C M P报文的路由与t r a c e r o u t e程序发送的U D P数据报采用同一路由 。这表明所打印出来的往返时间可能并不能真正体现数据报发出和返回的时间差(假如U D P数据报从信源到路由器的时间是1秒,而I C M P报文用另一条路由返回信源用了3秒时间,则打印出来的往返时间是4秒) 。
第三,返回的I C M P报文中的信源I P地址是U D P数据报到达的路由器接口的I P地址 。这与I P记录路由选项不同,记录的I P地址指的是发送接口地址 。由于每个定义的路由器都有2个或更多的接口,因此,从A主机到B主机上运行t r a c e r o u t e程序和从B主机到A主机上运行t r a c e r o u t e程序所得到的结果可能是不同的 。事实上,假如我们从s l i p主机到s v r 4上运行t r a c e r o u t e程序,其输出结果变成了:

这次打印出来的b s d i主机的I P地址是1 4 0 . 2 5 2 . 1 3 . 6 6,对应于S L I P接口;而上次的地址是1 4 0 . 2 5 2 . 1 3 . 3 5,是以太网接口地址 。由于t r a c e r o u t e程序同时也打印出与I P地址相关的主机名,因而主机名也可能变化(在我们的例子中,b s d i上的两个接口都采用相同的名字) 。
考虑图8 - 3的情况 。它给出了两个局域网通过一个路由器相连的情况 。两个路由器通过一个点对点的链路相连 。假如我们在左边L A N的一个主机上运行t r a c e r o u t e程序,那么它将发现路由器的I P地址为i f 1和i f 3 。但在另一种情况下,就会发现打印出来的I P地址为i f 4和i f 2 。i f 2和i f 3有着同样的网络号,而另两个接口则有着不同的网络号 。图8-3 t r a c e r o u t e 程序打印出的接口标识
最后,在广域网情况下,假如t r a c e r o u t e程序的输出是可读的域名形式,而不是I P地址形式,那么会更好理解一些 。但是由于t r a c e r o u t e程序接收到I C M P报文时,它所获得的唯一信息就是I P地址,因此,在给定I P地址的情况下,它做一个“反向域名查看”工作来获得域名 。这就需要路由器或主机的治理员正确配置其反向域名查看功能(并非所有的情况下都是如此) 。我们将在后面描述如何使用D N S将一个I P地址转换成域名 。

推荐阅读