《TCP/IP详解卷一:协议》学习笔记八

一、Traceroute程序的操作

1、Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。其还可以让我们使用IP源路由选项。

 

2、为什么不使用IP记录路由选项(RR)而另外开发一个新的应用程序?

 1)、原先并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用。

 2)、记录路由一般是单项的选项。

 3)、IP首部中留给选项的空间有限,不能存放当前大多数的路径。

 

3、Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。

 

4、TTL字段

 1)、此是由发送端初始设置一个8 bit字段。推荐的设置值是由分配数字RFC决定,当前值为64。

 2)、每个处理数据报的路由器都需要把TTL的值减1或减去数据报在路由器中停留的秒数。由于大多数的路由器转发数据报的延时都小于一秒钟。因此TTL最终成为一个挑战的计数器,所经过的每个路由器都将其值减1.

 3)、TTL字段的目的是防止数据报在选路时无休止地在网络中流动。

 4)、当路由器收到一份IP数据报,如果其TTL字段是1或0,则路由器不转发该数据报。反之,路由器将该数据报丢弃,并给信源机发送一份ICMP“超时”信息。

 

5、Traceroute程序操作过程

 1)、它发送一份 T T L字段为1的I P数据报给目的主机。处理这份数据报的第一个路由器将 T T L值减 1,丢弃该数据报,并发回一份超时 ICMP报文。这样就得到了该路径中的第一个路由器的地址。

 2)、然后  Tr a c e r o u t e 程序发送一份 T T L值为2 的数据报,这样我们就可以得到第二个路由器的地址。

 3)、继续这个过程直至该数据报 到达目的主机。但是目的主机哪怕接收到 T T L值为1的I P数据报,也不会丢弃该数据报并产生 一份超时I C M P报文,这是因为数据报已经到达其最终目的地。

 

 

二、局域网输出

1、我们将使用从 s v r 4到s l i p,经路由器b s d i的简单互联网(见内封面)。 b s d i和s l i p之间是9600 b/s的S L I P链路。

图8.1

1)、输出的第1个无标号行给出了目的主机名和其 I P地址,指出t r a c e r o u t e程序最大的T T L字段值为3 0。 4 0字节的数据报包含 2 0字节I P首部、 8字节的U D P首部和1 2字节的用户数据(1 2字节的用户数据包含每发一个数据报就加 1的序列号,送出T T L的副本以及发送数据报的时间)。

2)、输出的后面两行以T T L开始,接下来是主机或路由器名以及其I P地址。对于每个T T L值,发送3份数据报。每接收到一份I C M P报文,就计算并打印出往返时间。如果在 5秒种内仍未收到3份数据报的任意一份的响应,则打印一个星号,并发送下一份数据报。

 

2、往返时间是由发送主机的 t r a c e r o u t e程序计算的。它是指从 t r a c e r o u t e程序到该路由器的总往返时间。如果我们对每段路径的时间感兴趣,可以用 T T L字段为N + 1所打印出来的时间减去T T L字段为N的时间。

 

3、有两种不同的I C M P“超时”报文(见 6 . 2节的图6 - 3),它们的I C M P报文中c o d e字段不同。图2给出了这种I C M P差错报文的格式。

《TCP/IP详解卷一:协议》学习笔记八_第1张图片图2

我们所讨论的I C M P报文是在T T L值等于0时产生的,其c o d e字段为0。
1)、主机在组装分片时可能发生超时,这时,它将发送一份“组装报文超时”的 I C M P报文。这种差错报文将c o d e字段置1。

 

4、关于t r a c e r o u t e程序,还有一些必须指出的事项。

1)、首先,并不能保证现在的路由也是将来所要采用的路由,甚至两份连续的 I P数据报都可能采用不同的路由。如果在运行程序时,路由发生改变,就会观察到这种变化,这是因为对于一个给定的 T T L,如果其路由发生变化,t r a c e r o u t e程序将打印出新的I P地址。

2)、第二,不能保证 I C M P报文的路由与 t r a c e r o u t e程序发送的U D P数据报采用同一路由。

3)、第三,返回的 I C M P报文中的信源 I P地址是U D P数据报到达的路由器接口的 I P地址。

4)、最后,在广域网情况下,如果 t r a c e r o u t e程序的输出是可读的域名形式,而不是 I P地址形式。

 

 

三、广域网输出

1、图3是从s u n主机到NIC (Network Information Center)的情况。

《TCP/IP详解卷一:协议》学习笔记八_第2张图片图3

1)、T T L字段为6和7的路由器位于JPL (JetPropulsion Laboratory)上。 T T L字段为11所输出的s u r a . n e t网络位于Southeastern UniversitiesResearch Association Network上。 T T L字段为1 2的域名G S I是Government Systems, Inc., NIC的运营者。

2)、T T L字段为6的第2个RT T(5 9 0)几乎是其他两个 RT T值(2 3 4和2 6 2)的两倍 。它表明 I P路由的动态变化。在发送主机和这个路由器之间发生了使该数据报速度变慢的事件。同样,我们不能区分是发出的数据报还是返回的 I C M P差错报文被拦截。

3)、T T L字段为3的第1个RT T探测值(2 0 4)比T T L字段为2的第1个探测值(2 3 3)值还小。由于每个打印出来的RT T值是从发送主机到路由器的总时间,因此这种情况是可能发生的。
 

 

四、IP源站选路选项

1、通常I P路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器。应用程序对此不进行控制,而且通常也并不关心路由。它采用类似 Tr a c e r o u t e程序的工具来发现实际的路由。源站选路(source routing)的思想是由发送者指定路由。它可以采用以下两种形式
1)、严格的源路由选择。发送端指明 I P数据报所必须采用的确切路由。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的I C M P差错报文。

2)、宽松的源站选路。发送端指明了一个数据报经过的 I P地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器。

 

2、Tr a c e r o u t e程序提供了一个查看源站选路的方法,我们可以在选项中指明源站路由,然后检查其运行情况。图3给出了源站路由选项的格式。
《TCP/IP详解卷一:协议》学习笔记八_第3张图片图4

1)、对于源站选路,我们必须在发送 I P数据报前填充I P地址清单;而对于记录路由选项,我们需要为 I P地址清单分配并清空一些空间,并让路由器填充该清单中的各项。同时,对于源站选路,只要为所需要的I P地址数分配空间并进行初始化,通常其数量小于 9。而对于记录路由选项来说,必须尽可能地分配空间,以达到 9个地址。

2)、对于宽松的源站选路来说, c o d e字段的值是0 x 8 3;而对于严格的源站选路,其值为 0 x 8 9。l e n和p t r字段与7 . 3节中所描述的一样。

 

3、源站路由选项的实际称呼为“源站及记录路由”(对于宽松的源站选路和严格的源站选路,分别用L S R R和S S R R表示),这是因为在数据报沿路由发送过程中,对 I P地址清单进行了更新。下面是其运行过程

1)、发送主机从应用程序接收源站路由清单,将第 1个表项去掉(它是数据报的最终目的地址),将剩余的项移到1个项中(如图4所示),并将原来的目的地址作为清单的最后一项。指针仍然指向清单的第 1项(即,指针的值为 4)。

2)、每个处理数据报的路由器检查其是否为数据报的最终地址。如果不是,则正常转发数据报(在这种情况下,必须指明宽松源站选路,否则就不能接收到该数据报)。

3)、如果该路由器是最终目的,且指针不大于路径的长度,那么( 1)由p t r所指定的清单中的下一个地址就是数据报的最终目的地址;( 2)由外出接口(outgoing interface)相对应的I P地址取代刚才使用的源地址;( 3)指针加4。

 

5、当一个应用程序接收到由信源指定路由的数据时,在发送应答时,应该读出接收到的路由值,并提供反向路由。Host Requirements RFC指明, T C P客户必须能指明源站选路,同时, T C P服务器必须能够接收源站选路,并且对于该 T C P连接的所有报文段都能采用反向路由。如果T C P服务器下面接收到一个不同的源站选路,那么新的源站路由将取代旧的源站路由。
 

 

你可能感兴趣的:(协议)