才子佳人博客

我的故事我讲述

详解路由器转发分组算法
 
来源:xjh  编辑:xjh  2017-11-08

IP数据报的首部中没有地方能够用来指明“下一跳路由器的 IP 地址”。那么。当路由器接收到一个待转发的报文时是怎样确定将该报文的传向呢?在此,我们引入“路由表”概念。

路由表如图所示:


当一个IP报文传到路由器R2时,则会通过查询R2所维护的路由表,依据IP报文段中的目的IP地址进行匹配,从匹配结果中选择具有最长网络前缀的路由(网络前缀越长,地址块越小,路由越具体),得到最佳的下一跳地址。

下面给出路由器之间具体的分组转发算法:

(1)从数据报的首部提取目的主机的 IP 地址 D。

(2)先判断是否为直接交付。对路由器直接相连的网络逐个检查:用各网络指定的掩码和目标地址 D 逐位相与,看结果是否和相应的网络地址匹配。若匹配则把数据报直接交付目的主机 D。否则间接交付,运行(3)。

(3)再判断是否为特定路由。若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器。否则,运行(4)。

(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和目的主机地址D逐位相与,得出结果 N。若N与该行的目的网络地址匹配,则把数据报传送给该行指定的下一跳路由器。否则,运行(5)。

(5)若路由表中有一个默认路由。则把数据报传送给路由表中所指明的默认路由器;否则,运行(6)。

(6)报告转发分组出错。

注意:

1)默认路由:路由器还可采用用默认路由,以降低路由表所占用的空间和搜索路由表所用的时间。当目的网络在路由表中匹配不到,就一律选择默认路由。

2)特定路由:因特网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明一个路由。这种路由就叫做特定主机路由。采用特定主机路由可使网络管理人员能够更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。在对网络的连接或路由表进行排错时,指明到某一主机的特定路由就十分有用。

3)MAC地址替换问题:当路由器收到待转发的数据报,确认下一跳路由器之后,网络接口软件使用 ARP 将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层帧的目标 MAC中 ,然后依据这个硬件地址转发到下一跳路由器。

4)直接交付:只有到达最后一个路由器时,才试图向目的主机进行直接交付。

来源参考:
谢希仁,《计算机网络(第5版)》,电子工业出版社,p134


分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: