以上五个步骤主要都是在主机甲上完成。这五个步骤执行完毕之后,IP路由选择过过程的前期工作就算完成了。接下来的就要看路由器的表演了。
第六步:在主机甲所在的冲突域中的每台网络设备都将接收这些位并重新合并成数据帧。接收完毕后,他们会运行CRC过程并核对保存在帧校验序列字段中的内容。如果这两个值不匹配的话,则这个帧将会被丢弃。如果两个值相同(主机甲的默认网关,即紧邻主机甲的路由器接口),则网络设备会接收这个帧,并核查目的方的硬件地址,检查他们是否也匹配。如果目的方的硬件地址也是匹配的,那么路由器将会查看这个帧的以太网类型字段,以了解在网络层上采用了什么协议,然后路由器就会抽出帧中的数据包,把其余部分内容丢弃。然后把抽出来的数据包传送给以太网类型字段中列出的上层协议,如英特网网络协议(IP)等等。
第七步:判断路由表项目。英特网网络协议(IP)会接收这个数据包,并检查目的IP地址。在这个案例中,由于数据包中的目的地址与接收路由器所配置的任何地址都不相匹配。此时,路由器就会在自己的路由表中,查看目的IP网络的地址。在这个案例中,由于路由器同时连接着172.16.80.0的网络。所以在这个路由器的路由表中,有相关的纪录。若没有记录的话,则这个数据包会被直接丢弃。若路由器丢弃数据包的话,则会发送一个“目标地址不可达”的错误信息给主机甲。
第八步:路由器转发数据包。如果路由器的确在他的路由表中找到了相应网络的记录,则数据包就会被转发到输出接口。在本例中,就是主机乙所连接的接口。路由器会将这个数据包交换到对应接口的缓冲区内。
第九步:缓冲区中数据的处理。路由器对应接口的缓冲区需要了解目的方主机的硬件地址。因为这个数据包中已经有目的方的IP地址,所以,路由器会先检查ARP缓存表。如果主机甲的硬件地址已经被解析并保存在路由器的ARP缓冲中,则这个数据包和这个硬件地址将被传递到数据链路层以便重新生成帧。通常情况下,若路由器以前跟主机乙通信过的话,则这个IP地址与MAC地址的对应记录将会在思科路由器ARP缓冲表中保存四个小时。连续四个小时没有通信的话,则这个对应的记录将会被删除。如果在路由器的ARP缓冲表中没有相关记录的话,则路由器接口会在其连接的网络内部,发送一个ARP请求。这个ARP请求就像一个广播,谁我现在需要知道IP地址为172.12.80.8的MAC地址。此时。其他网络设备发现自己不是这个IP地址,就会抛弃这个包。而主机乙发现有人在问自己的MAC地址,就会进行响应。告诉路由器,我的IP地址就是这个,我的MAC地址是多少。路由器知道目的主机乙的MAC地址之后,就会把数据包连同目的方的MAC地址传递到下一层的数据链路中。