计算机网络(4.8)网络层- IP层转发分组的流程

假设:有四个A类网络通过三个路由器连接在一起。 每一个网络上都可能有成千上万个主机。

可以想像,若按目的主机号来制作路由表,每一 路由表就有4万个项目,即4万行(每一行对应于 一台主机),则所得出的路由表就会过于庞大。

但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目(每一行对应于一个网络),这样就可使路由表大大简化。

在路由表中,对每一条路由,最主要的是 (目的网络地址,下一跳地址)。

计算机网络(4.8)网络层- IP层转发分组的流程

查找路由表:根据目的网络地址就能确定下一跳路由器,这样做的结果是: IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。

特定主机路由:虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例, 即为特定的目的主机指明一个路由。

采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

默认路由(default route):路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。这种转发方式在一个网络只有很少的对外连接时是很有用的。

默认路由在主机发送IP数据报时往往更能显示出它的好处。 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。

       计算机网络(4.8)网络层- IP层转发分组的流程

IP数据报的首部中没有地方可以用来指明“下一跳 路由器的IP地址”。

当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件。

网络接口软件使用ARP协议负责将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。

路由器分组转发算法

  • (1) 从数据报的首部提取目的主机的IP地址D,得出目的网络地 址为N。
  • (2) 若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3)。
  • (3) 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
  • (4) 若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
  • (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
  • (6) 报告转发分组出错。

路由表没有给分组指明到某个网络的完整路径。

路由表指出,到某个网络应当先到某个路由器(即 下一跳路由器)。 在到达下一跳路由器后,再继续查找其路由表,知 道再下一步应当到哪一个路由器。这样一步一步地查找下去,直到最后到达目的网络。