IP选路

Posted lovelaker007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP选路相关的知识,希望对你有一定的参考价值。

原理

  ip层搜索路由表时,按照主机完全匹配,网络匹配,默认表项的顺序。

  下图是一个较简单的路由表

技术分享图片

  简而言之,路由表指明了对于目的IP为destination的ip数据报,要发往的下一站的地址。

  路由的Flags字段

    U表示该路由可以使用

    G:有G标志表示该路由的gateway地址是下一站路由器地址,称之为间接路由。没有G称之为直接路由,按直接路由发送时,ip层目的地址(这个地址不会变)和链路层地址相对应。按间接路由发送时,两者不对应。

    H:有H表示该路由是主机匹配路由,具有最高优先权;没有表示是网络匹配路由,具有第二优先权。

  destination为default的路由是默认路由,当没有路由匹配时,按此路由发送。

  上面图片的最后一条,表示网络匹配,当ip目的地址时本子网的主机时,使用该直接路由,转发的时候链路层和ip层地址匹配(都指向子网中的某台主机)。该路由的gateway是本机地址,当本机收到该数据帧时,会将数据帧直接发送到子网上的主机。

  default条路由,表示ip地址是非子网地址,将其转发到140.252.13.33,该地址是路由器的地址。一般路由器收到数据帧之后转发到自己的对端地址,对端地址位于另一个子网,由此实现了数据帧的跨子网传递。

 

  当svr4收到ip分组需要转发时,有下面时一些示例

    假定目的地址是主机sun,140.252.13.33。首先进行主机地址的匹配。路由表中的两个主机地址表项(slip和localhost)均不匹配,接着进行网络地址匹配。这一次匹配成功,找到表项140.252.13.32(网络号和子网号都相同),因此使用emd0接口。这是一个直接路由,因此链路层地址将是目的端的地址。

    假定目的地址是主机slip,140.252.13.65。首先在路由表搜索主机地址,并找到一个匹配地址。这是一个间接路由,因此目的端的IP地址仍然是140.252.13.65,但是链路层地址必须是网关140.252.13.34的链路层地址,其接口名为emd0。

    假如通过Internet给主机aw.com(192.207.117.2)发送一份数据报。首先在路由表中搜索主机地址,失败后进行网络地址匹配。最后成功地找到默认表项。该路由是一个间接路由,通过网关140.252.13.33,并使用接口名为emd0。

    假如给本机发送一份数据报。有四种方法可以完成这件事,用主机名、主机IP地址、环回名或者环回IP地址:

      ftp svr4
      ftp 140.252.13.34
      ftp localhost
      ftp 127.0.0.1
    在前两种情况下,对路由表的第2次搜索得到一个匹配的网络地址140.252.13.32,并把IP报文传送给以太网驱动程序。但是IP报文中的目的地址为本机IP地址,因此报文被送给环回驱动程序,然后由驱动程序把报文放入IP输出队列中。
    在后两种情况下,由于指定了环回接口的名字或IP地址,第一次搜索就找到匹配的主机地址,因此报文直接被送给环回驱动程序,然后由驱动程序把报文放入IP输出队列中。
    上述四种情况报文都要被送给环回驱动程序,但是采用的两种路由决策是不相同的。

    

  添加路由的route命令:

    route add default sun 1

    route add slip bsdi 1

  第3个参数(default和slip)代表目的端,第4个参数代表网关(路由器),最后一个参数代表路由的度量(metric)。route命令在度量值大于0时要为该路由设置G标志,否则,当耗费值为0时就不设置G标志。

 

ICMP重定向差错

  简而言之,当主机T1收到数据转发时,按照路由表转发给T2,T2离最终目的地更近。T1会向源主机发送ICMP重定向差错,源主机收到后会更新路由表,以后相同的目的地直接交由T2转发。

  规范的说产生重定向报文的条件如下:

    数据报接收的入口和指定的出接口是同一个接口,意思即为路由器从接口a收到数据报后,根据数据报目的ip地址进行路由匹配,发现要发往的下一跳地址的接口和a相同。此时该路由器便是“多余的”,因为源主机直接将数据报交友下一跳转发更方便。
    数据报的源IP地址和该包应走的下一跳IP地址属于同一个网段。
    数据报非源路由的(这种情况应该比较少见了,源路由多见于Token Ring)。
    系统开启重定向功能。

 

  报文格式如下

技术分享图片  

  开始的四个字节符合前面介绍的ICMP报文通用格式,此处类型字段为5,代码字段为0-3。

  接收者可以从重定向报文中获得三个ip地址:

    引发重定向的ip地址

    发送重定向报文的ip地址

    后续应该使用的路由器的ip地址。

  利用这三个值可以更新一条路由。

  

  

 

  

 

 

 

    

 










以上是关于IP选路的主要内容,如果未能解决你的问题,请参考以下文章

即时通讯开发之详解TCP/IP中的IP选路动态选路

即时通讯开发之详解TCP/IP中的IP选路动态选路

TCP/IP学习20180805-数据链路层-IP选路

TCP/IP||动态选路

《TCP/IP具体解释卷2:实现》笔记--选路请求和选路消息

IP选路