TCP/IP详解卷一09

1.IP选路:需要进行选路的数据报可以由本地主机产生,也可以由其他主机产生(主机必须配置成一个路由器,否则通过网络接口接收到的数据报,如果目的地址不是本机就要被丢弃)

  路由守护程序(daemon,用户进程并且是路由程序和网关程序)

       了解单个IP层是如何做出路由决策。

  路由表中包含的信息决定了IP层所做的所有决策。

  IP搜索路由表的步骤:(1)搜索匹配的主机地址;(2)搜索匹配的网络地址;(3)搜索默认表项

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

2.简单的路由表

netstat -r(列出路由表) -n(再次执行该命令,以数字格式打印出IP地址)

  第1行:目的地是:140.252.13.65,那么网关(路由器)将分组转发给目的地。

         对于一个给定的路由器,可以打印五种不同的标志(flag)

    U:该路由可以使用

    G:该路由是到一个网关(路由器),如果没有设置该标志位,说明目的地是直接相连的。(区别了间接路由和直接路由(不设置标志G))(发往直接路由的分组不但具有指明目的端的IP地址,还具有其链路层地址)

    (发往间接路由的分组不但具有指明目的端的IP地址,但是链路层地址指明是网关(即下一站路由器))

    H:该路由是到一个主机(目的地址是一个完整的主机地址,如果没有设置该标志说明该路由是到一个网络地址,而目的地址是一个网络地址)

    D:该路由是重定向报文创建的。(ICMP报文创建)

    M:该路由已被重定向报文修改。

         use显示的是通过该路由发送的分组。

          interface显示的是本地接口的名字。

  第2行是环回接口,名字始终为lo0.没有设置G,因为该路由不是一个网关。H标志说明目的地址(127.0.0.1)是一个主机地址,而不是一个网络地址。由于没有设置G标志,说明这是一个直接路由,网关列给出的是外出IP地址。

  第3行是默认路由。即如果在表中没有找到特定的路由,就把分组发送到路由器140.252.13.33.

  第4行是以太网,没有设置H,说明目的地址(140.252.13.32)是一个网络地址,而主机地址部分设为0,。这是一个直接路由,网关列指出的IP地址是外出地址。

    主机路由表的复杂性取决于主机所在网络的拓扑结构。

    (1)主机根本没有与任何网络相连。TCP/IP协议仍然用于这样的主机,但只能与自己通信。此时,路由表只包含环回接口。

    (2)主机连接一个局域网,只能访问局域网上的主机。路由表包含环回接口和局域网

    (3)主机能够通过单个路由器访问其他网络,需要进行下一步。一般情况下增加一个默认表项指向该路由器。

    (4)如果要新增其他的特定主机或者路由器,需要进行下一步。

3.初始化路由表

  3.1路由表的创建(当初始化一个接口时(ifconfig),就为接口自动创建一个直接路由。对于点对点链路和环回接口来说,路由是到达主机;对于广播接口来说,如以太网,路由是到达网络),需要到达主机或者网络的路由如果不是直接相连的,就需要加入路由表。

  3.2常用的方法:在系统引导时显式地在初始化文件中运行route

        eg:route add default sun 1

          route add slip bsdi 1

         解释:route add(添加路由);default和slip(代表目的端);sun和bsdi(代表网关);1(代表路由器的度量(metric));

    一些系统允许在某个文件中指定磨人的路由器,/etc/defaultrouter

    初始化路由表的其他方法是运行守护程序或者用较新的路由器发现协议。

4.较复杂的路由表(主机是所有主机的默认路由器,因为拨号SLIP链路连接到Internet上)

  路由表中的目的地址就是点对点链路的另一端,网关地址为外出接口的本地IP地址。

  默认的路由表项是一个到达网络的间接路由。网关地址是路由器的地址,而不是SLIP链路的本地IP地址。原因是间接路由,不是直接路由。

5.没有到达目的地的路由

  当数据报是由主机产生的,就会给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”,或者是“网络不可达差错”

  如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

6.ICMP主机与网络不可达差错(当路由器收到一份IP数据报但又不能转发时,就要发送一份ICMP“主机不可达”差错报文)

  当SLIP链路断开时,路由器的路由表就没有默认项了。但是我们不想改变网络上其他主机的路由表,即同时删除他们的默认路由。相反,对于主机不能转发的分组,我们对它产生的ICMP主机不可达差错报文进行计数。

  将SLIP链路接到Interent上,然后试图ping一个与Interent没有连接的IP地址,应该会产生差错。即在发现该IP地址是无效的之前,该分组已通过6个路由器(6个路由器之所以能够转发分组是因为路由表中有默认选项,在到达NSFNET骨干网时,路由器才知道每个连接到Interent上的每个网络的信息,许多路由器只能在局部范围内工作)。

7.转发或不转发

  一般假定主机不转发IP数据报,除非对它们进行特殊配置而作为路由器使用。

  进行配置:系统中的内核变量ipforwarding值不为0的情况下才转发数据报。

        SunOS 4.1x允许该变量可以有三个不同的值:-1表示始终不转发并且始终不改变它的值;0表示默认条件下不转发,但是当打开两个或者更多接口时就把该值设为1;1表示始终转发。

        Solaris 2.x把这三个值改为0(始终不转发)、1(始终转发)、2(在打开两个或者更多接口时才转发)

8.ICMP重定向差错

当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。同时,只有在主机可以选择路由器发送分组的情况下,才可以看到ICMP重定向报文。

eg :(1)假定主机发送一份IP数据报给R1。这种选路决策经常发生,因为R1是该主机的默认路由。

  (2)R1收到数据报并且检查它的路由表,发现R2是发送数据报的下一站。当它把数据报发送给R2,R1检测到它正在发送的接口与数据报到达接口是相同的。这样就给路由器发送冲重定向报文给原始发送端提供了线索。

  (3)R1发送一份ICMP重定向报文给主机,高速它以后把数据报发送给R2而不是R1.

  重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项。一旦默认路由表发生差错,默认路由表将通知它进行重定向,并允许主机对路由表做出相应的改动。

  ICMP重定向允许TCP./IP主机在进行选路时不具备智能特性,而将所有智能特性放在路由器端。

  子网上的主机如何访问另一个子网?
  (1)如果在SLIP链路的一端只有一台主机,使用代理ARP。

  (2)当网络位于SLIP链路的另一端,就需要选路。方法一:设置静态路由或者在每个主机上运行守护程序来实现(让所有主机和路由器都知道路由器是网络的网关。方法二:采用ICMP重定向报文来实现。

  一个被主机重定向报文增加的主机路由,因此它只能处理到达主机的报文。ICMP重定向报文创建的只是主机路由,而不是网络路由。

  四种不同类型的重定向报文:网络重定向(0);主机重定向(1);服务类型和网络重定向(2);服务类型和主机重定向(3)

  ICMP重定向报文的接受者必须查看三个IP地址:(1)导致重定向的IP地址;(2)发送重定向报文的路由器的IP地址;(3)采用路由器IP地址。

  ICMP重定向报文有很多规则:(1)重定向报文只能 由路由器生成,而不能由主机生成

                      (2)重定向报文是为主机而不是为路由器使用的。

  在生成ICMP重定向报文之前这些条件都要满足:(1)出接口必须等于入接口;(2)用于向外传送数据报的路由不能被ICMP重定向报文创建或修改过,而且不能是路由器的默认路由。(3)数据报不能用源站选路来转发(4)内核必须配置成可以发送重定向的报文,

  路由器应该发送的只是对主机的重定向,而不是对网络的重定向。

9.ICMP路由器发现报文

  9.1路由器操作:当路由器启动时,它定期在所有广播或多播传送接口上发送通告报文。通告报文不是定期发送的,而是随机发送的。

  9.2主机操作:主机在引导期间一般发送三分路由器请求报文,每三秒钟发送一次。一旦接受一个有效的通告报文。就停止发送报文。

主机也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。另外,如果没有接收到来自当前默认路由器的通告报文,那么默认路由器会超时。

  9.3实现;路由器发现报文一般由用户进程(守护程序)创建和处理。守护程序必须把它配置成一台路由器或主机来使用。

10.小结

    路由表项的内容很简单,包括:5bit标志、目的IP地址(主机、网络或默认)、下一站路由器的IP地址(间接路由器)或者本地接口的IP地址(直接路由)及指向本地接口的指针。

    主机表项比网络表项具有更高的优先级,而网络表项比默认项具有更高的优先级。

    系统产生的或转发的没分IP数据报都要搜索路由表,它可以被路由守护或ICMP重定向报文修改。

 

 

  

  

   

 

posted on 2017-09-04 15:45  any000yna  阅读(183)  评论(0编辑  收藏  举报

导航