路由概念

基于第三层地址(IP地址)从一个节点向无连接网络的另一个节点转发分组的过程成为路由。

在IP选路中,我们知道路由表起着比较大的作用,它决定的IP包到底会怎么走。关于IP选路的问题,记得大学时候和舍友们曾经有过激烈讨论和验证,如今还略有印象,真是怀念当时伟大的623宿舍做实验时的生活啊,这么快就一年了。

路由其实就是选择一条数据包传输路径的过程,也就是说主机怎么向它的目的地顺利发送数据的过程。当TCP/IP主机发送IP数据包时,便出现了路由,且当到达IP路由器时还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置,路由器通常被称为网关,它承但着分发数据包的任务。对于上例中发送IP数据包的主机和路由器而言,必须决定向哪里转发数据包。在决定路由时,IP层查询位于内存中的路由表,然后根据查询规则,进行IP路由。是不是很抽象?用我的话说吧,也就是下面要讨论的问题。

先说如何选路:

每发现一条路由,数据包被转送下一级路由器,称为一次“跳步”,按照同样的方式进行转发,并最终发送至目的主机。若未发现任何一个路由可以接受此次IP包的地址,发送主机将收到一个出错信息,也就是说其中任何一跳出现了不可到达,最后的结果也就是报错了。

上面只是个人的一些理解,事实上当时我们做的实验不少,但是看看tcp/IP详解后,就可以一目了然了,现在以linux下的路由表为例说明一下:

  $ sudo route
  Kernel IP routing table
  Destination Gateway Genmask Flags Metric Ref Use Iface
  192.168.100.0 * 255.255.255.0 U 0 0 0 eth1
  192.168.10.0 * 255.255.254.0 U 0 0 0 eth0
  default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
  --------------------------------------------------------------------------------------

IP路由选择是逐跳地(hop-by-hop)进行的。从这个路由表信息可以看出,IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的IP路由选择只为数据报传输提供下一站路由器的IP地址。 它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。

IP路由选择主要完成以下这些功能:

完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由,以及下一站路由器发送的ICMP间接报文(如果我们为数据报选择了错误的默认路由),是IP路由选择机制中功能强大的特性。

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。

TCP/IP及路由基本概念、理论

IP地址的主机号全‘0’表示本网络,全‘1’表示网络上所有主机的广播,这两个IP地址不能作为主机地址,也就是网络节点的地址。

环回接口(Loopback Interface)目的在于使运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。A类网络号127就是为环回接口预留的,惯例情况下,大多数系统把IP地址127.0.0.1分配给这个接口,并且命名为localhost。

联系ISO模型,地址和模型的对应关系应该是:PHY层,对应的地址就是端口,交换机上的Port号;MAC层,对应的地址是MAC地址;IP层,对应的地址是IP地址。在各层上,其实就是查找到正确的地址,将数据包进行正确的转发。

几个路由概念:

网络互连

路由条目分类

根据来源不同,路由表中的路由条目通常可分为以下三类:

  1. 直连路由:网络接口发现的路由(链路层协议发现的路由),也称为接口路由(也称为直连路由)。
  2. 静态路由:由网络管理员手工配置的路由
  3. 动态路由:路由协议发现的路由

根据路由目的地的不同,可划分为:

  1. 子网路由:目的地为子网
  2. 主机路由:目的地为主机

据目的地与该路由器是否直接相连,又可分为:

  1. 直接路由:目的地所在网络与路由器直接相连
  2. 间接路由:目的地所在网络与路由器非直接相连

路由条目基本属性

通常,一条路由条目包含如下基本属性:

  1. 目的网络地址:用于匹配进入路由器的IP报文中的源IP字段的IP子网
  2. 子网掩码:用于计算源IP地址对应的IP子网
  3. 下一跳地址:用于指定目的IP属于特定子网的报文所转发的路径的下一跳
  4. 下一跳硬件接口:与下一跳地址相对应的网络接口

除上述几个基本属性外,为了使得路由表更好的和多种IP路由协议协同工作,路由表通常还提供如下属性:

  1. 路径类型:动态,静态以及默认路由等
  2. 协议类型:标识该条目是通过哪种路由协议获得的
  3. 优先级:当遇到网络ID冲突时选择路由条目的依据
  4. 路径开销:当前路径的开销度量值

《交换机IPv4路由功能研究报告V1.2.doc》

路由算法分类

距离矢量路由(distance vector routing)算法 :每个路由器维护一张表(即一个矢量),表中列出了当前已知的到每个目标的最佳路径,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断的更新它们内部的表。

链路状态路由(link state routing)算法 :该算法的思想是每一个路由器必须完成下面的5步工作:

  1. 发现它的邻居节点,并知道其网络地址;
  2. 测量到各邻居节点的延迟或者开销;
  3. 构建一个分组,分组中包含所有它刚刚知道的信息;
  4. 将这个分组发送给所有其它路由器(注意并不是邻居节点路由器);
  5. 计算到每一个其它路由器的最短路径。