这篇日志中的路由选择过程,是以ping包为例。ICMP协议请求应答只涉及到网络层、数据链路层以及物理层。不涉及第四层传输层及高三层(应用层、表示层、会话层)
常见的路由选择协议:RIP、RIPv2、EIGRP和OSPF
路由选择协议:路由器用于在彼此互联的网络上动态地发现所有网络,通过这一协议可以确保所有路由器都拥有相同的路由选择表。
被路由协议:用来通过这个配置完善的互联网发送用户数据,被路由协议需要被指定到接口上并用来确定分组的递交方式。
常见的被路由协议:IPv4、IPv6
IP路由选择过程(以ping包操作为例)
1、本地主机发出ICMP请求数据包。
2、在IP层,加入目标IP、源IP、以及协议字段0x01,创建分组。
3、分组创建后,IP协议根据目标IP判断目的方是本地网络还是远程网络。
4、当被判定为远程网络后,主机会将数据包发送到本地默认网关。
5、分组要发送给默认网关,此时就必须知道路由器上相应接口的硬件地址。只有知道了路由器的硬件地址,本端才可以将分组向下递交给数据链路层组帧。然后将数据帧根据硬件地址发给默认网关对应的硬件地址。
6、解析硬件地址,查看主机的ARP缓存,查看此默认网关的IP地址是否已被解析为一个硬件地址(arp -a)。如果没有被解析,则通过arp广播方式请求网关的硬件地址。
7、在数据链路层完成组帧后,在物理层按比特进行物理传输。
8、此时在同一个冲突域的所有设备都会接收这些比特,并重新组帧。每个设备都会对接收内容进行CRC运算,并与帧中FCS字段的内容进行比对。如不匹配,则丢弃接收到的帧。
9、从数据帧中取出分组,将其他底层部分丢弃。将分组传给网络层。网络层接收分组后,查看目标IP地址。路由器会在路由选择表中找到目的IP地址对应的端口,将分组重新组帧送出。如果没有在路由选择表中找到相应信息,将会丢弃分组。
10、直到分组顺利路由到对端主机。对端的路由器接口会查(sh ip arp)对端主机的硬件地址,然后向对端转发数据帧。
11、对端主机收到数据帧后,运行CRC,运算结果与FCS字段内容若匹配,继续检查目标硬件地址,若地址也匹配,查看以太网类型字段,建数据帧中分组送上层网络层进行处理。
12、网络层,对IP报头运行CRC。若校验通过,继续检查目标IP地址。若匹配,继续检查分组的协议字段,上数据包有效负荷部分送上层传输层处理。
13、有效负荷递交给ICMP后,后者知道这是一个回应请求。ICMP负责应答,丢弃接收到的数据包,产生一个回应的新的有效负荷回应。(包含目的、源地址,协议字段,有效负荷)
14、重新进行路由选择过程,回应请求。