[TCP IP详解:学习笔记]IP选路

       IP选路

 

       选路是IP最重要的功能之一,图1是IP层处理过程的简单流程。

 

图1 IP层工作流程

 

       路由表中包含的信息决定了IP层所做的所有决策。列出了IP搜索路由表的几个步骤:

  1. 搜索匹配的主机地址;
  2. 搜索匹配的网络地址;
  3. 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。

  IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。选路策略只是一组决定把哪些路由放入路由表的规则。IP执行选路机制,而路由守护程序则提供选路策略。

 

  如果路由表中没有默认项,而又没有找对匹配项时,会发生什么情况?

  如果数据报是由主机产生的,那么就给发送该数据报的应用程序的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

 

  只有当主机可以选择路由器发送分组的情况下,才可能看到ICMP重定向差错报文(如图2所示)

  1. 假定主机发送一份IP数据报给R1(R1是该主机的默认路由);
  2. R1收到数据报并且检查它的路由表,发送R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达端口是相同的(即主机和两个路由器所在的LAN);
  3. R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。

 

图2 ICMP重定向的例子

 

       ICMP重定向报文的接收者必须查看三个IP地址:

  1. 导致重定向的IP地址(即ICMP重定向报文的数据位于IP数据报的首部);
  2. 发送重定向报文的路由器的IP地址(包含重定向信息的IP数据报中的源地址);
  3. 应该采用的路由器IP地址。

 

  ICMP重定向报文只能由路由器生成,而不能由主机生成。另外,重定向报文是为主机而不是为路由器使用的。

  在4.4 BSD系统中,在生成ICMP重定向报文之前要满足下列条件

  1. 出接口必须等于入接口;
  2. 用于向外传送数据报的路由不能被ICMP重定向报文创建或修改过,而且不能是路由器的默认路由;
  3. 数据报不能用源站选路来转发;
  4. 内核必须配置成可以发送重定向报文。

 

  在4.4 BSD主机收到ICMP重定向报文后,在修改路由表之前要做一些检查

  1. 新的路由器必须直接与网络相连接;
  2. 重定向报文必须来自当前到目的地所选择的路由器;
  3. 重定向报文不能让主机作为路由器;
  4. 被修改的路由必须是一个间接路由。

  需要注意,路由器应该发送的只是对主机的重定向(代码1或3),而不是对网络的重定向。

 

  初始化路由表的方法

  1. 在配置文件中指定静态路由,一般都是用来设置默认路由器;
  2. 利用ICMP路由器通告和请求报文。

 

posted @ 2013-04-05 17:17  life91  阅读(483)  评论(0编辑  收藏  举报