网络通信 频道

ICMP主机与网络不可达差错

 当路由器收到一份IP数据报但又不能转发时,就要发送一份ICMP“主机不可达”差错报文(ICMP主机不可达报文的格式如图6-10所示)。可以很容易发现,在我们的网络上把接在路由器sun上的拨号SLIP链路断开,然后试图通过该SLIP链路发送分组给任何指定sun为默认路由器的主机。
  较老版本的BSD产生一个主机不可达或者网络不可达差错,这取决于目的端是否处于一个局域子网上。4.4BSD只产生主机不可达差错。
  我们在通过在路由器sun上运行netstat命令可以看到,当接通SLIP链路启动时就要在路由表中增加一项使用SLIP链路的表项,而当断开SLIP链路时则删除该表项。这说明当SLIP链路断开时,sun的路由表中就没有默认项了。但是我们不想改变网络上其他主机的路由表,即同时删除它们的默认路由。相反,对于sun不能转发的分组,我们对它产生的ICMP主机不可达差错报文进行计数。
  在主机svr4上运行ping程序就可以看到这一点,它在拨号SLIP链路的另一端(拨号链路已被断开):

在主机b s d i上运行t c p d u m p命令的输出如图9 - 2所示。

图9-2 响应p i n g 命令的ICMP主机不可达报文
  当路由器sun发现找不到能到达主机gemini的路由时,它就响应一个主机不可达的回显请求报文。
  如果把SLIP链路接到Internet上,然后试图ping一个与Internet没有连接的IP地址,那么应该会产生差错。但令人感兴趣的是,我们可以看到在返回差错报文之前,分组要在Internet上传送多远:

  从图8-5可以看出,在发现该IP地址是无效的之前,该分组已通过了6个路由器。只有当它到达NSFNET骨干网的边界时才检测到差错。这说明,6个路由器之所以能转发分组是因为路由表中有默认项。只有当分组到达NSFNET骨干网时,路由器才能知道每个连接到Internet上的每个网络的信息。这说明许多路由器只能在局部范围内工作。
  参考文献[Ford,Rekhter,andBraun1993]定义了顶层选路域(top-levelroutingdomain),由它来维护大多数Internet网站的路由信息,而不使用默认路由。他们指出,在Internet上存在5个这样的顶层选路域:NSFNET主干网、商业互联网交换(CommercialInternetExchange:CIX)、NASA科学互联网(NASAScienceInternet:NSI)、SprintLink以及欧洲IP主干网(EBONE)。

文章转载地址:http://www.cnpaf.net/Class/TCPANDIP/0532918532786749.html

0
相关文章