10.6.2 分组在路由器上的转发
当路由器收到一个IP分组时,路由器的处理软件首先检查该分组的生存时间,如果其生存时间为0,则丢弃该分组,并给其源点返回一个分组超时ICMP消息。如果生存期未到,则从IP分组头中提取目的地IP地址。目的IP地址与网络掩码进行屏蔽操作找出目的地网络号,在路由表中按照最长匹配原则查找与其相匹配的表项。如果在路由表中未找到与其相匹配的表项,则将该分组放入默认的网关对应路由的缓冲区排队输出,并向源端返回不可到达信息;如果找到匹配项,则选择最佳路由,进行头校验,TTL减1,封装链路层信息,并将该分组放入下一跳对应输出端口的缓冲区进行排队输出。图10.23是路由器处理IP分组的流程图。
为了进一步理解路由器转发分组的工作原理,图10. 24给出了一个互联网通信的实例。其通信子网的IP编号为202.56.4.0、203.0.5.0和198.1.2.0,路由器1与网络1和网络2直接相连,与网络1相连的端口1的IP地址为202.56.4.1,与网络2相连的端口3的IP地址为203.0.5.2;路由器2与网络2和网络3直接相连,与网络2相连的端口5的IP地址为203.0.5.10,与网络3相连的端口8的IP地址为198.1.2.3。下面我们来看用户A要传送一个数据文件给用户B时每个路由器的工作过程。
首先用户A把数据文件以IP分组的形式送到默认路由器1,其目的站点的IP地址为198.1.2.9。第一步,分组被路由器1接收,通过子网掩码屏蔽操作确定了该IP分组的目的网络号为198.1.2.0。第二步,通过查找路由表(通过运行路由协议维护),路由器1在路由表中找到与其匹配的表项,获得输出端口号为3和下一跳路由器的IP地址为203.0.5.10(指路由器2与网络2相连网络端口的IP地址)。第三步,路由处理软件将该IP分组放入路由器1 端口3的发送缓冲区,并将下一跳IP地址递交给网络接口处理软件。第四步,网络接口软件调用ARP完成下一跳IP地址到物理地址(MAC)的映射。在一个正常运行的路由器高速缓存中,保存其相邻路由器端口的IP地址对应的MAC地址,不必每接收一个IP分组都使用ARP来获得下一跳的MAC地址。获得下一跳的MAC地址后,便将原IP分组封装成适合网络2传送的数据帧,排队等待发送。
分组被送到路由器2后,根据目的IP地址确定目的网络号,经过查找路由表获得该目的网络与路由器2直接相连。路由处理软件将该IP分组放入网络端口8的发送缓冲区,并将目的IP地址198.1.2.9递交给网络端口处理软件。因为分组到达最后一个路由器,所以需调用ARP获得目的主机的MAC地址,然后对IP分组进行封装,封装后的帧直接发送给目的主机B。
返回目录: