静态路由转发数据包的封装过程

静态路由转发数据包的封装过程

在三层网络中数据的传输是通过路由器来完成的,而路由器与交换机不同之处就在于交换机遇到陌生的MAC地址会进行广播,路由器则会进行丢包。要想获取目标MAC路由器则会进行ARP广播。

ARP:是一种地址解析协议,本质上是一种广播。列如PC1要想pingPC2,首先会在自己的ARP缓存表中寻找想要的IP和MAC,如果没有目标IP和MAC则PC1就会发送广播,寻找PC2的MAC。

静态路由转发数据的过程

大前提

有两台PC机分别是PC1和PC2,两台路由器为路由A和路由B。他们没有对方的IP和MAC地址。现在PC1要 pingPC2

PC1连着路由A,路由A连着路由B,路由B连着PC2。静态路由转发数据包的封装过程

过程

  1. 路由A为PC1的默认网关,但是并没有路由A的MAC地址,那么PC1会进行ARP广播。**其中,源IP为192.168.1.2,源MAC为00-11-12-21-11-11;目标IP为192.168.1.1,目标MAC为FF-FF-FF-FF-FF-FF。
  2. 路由A在E0端口收到PC1的ARP,其中的数据包的目标MAC为FF-FF-FF-FF-FF-FF,那么路由A会进行拆包发现里面的目标IP为192.168.1.1,这里路由A会把PC1的IP和MAC记录在他的ARP缓存表里,并且会给PC1发送一个数据包其中的目标IP和MAC为PC1的,源IP和MAC是路由A的。PC1在收到后会将其中的源MAC和IP记录在自己的ARP缓存表中。
  3. 那么PC1开始第一次ping PC2。源IP和MAC为PC1的192.168.1.2和00-11-12-21-11-11。目标IP为192.168.2.2,目标MAC为路由A的00-11-12-21-22-22.路由A收到来自E0端口的数据包并进行第一次拆包,发现其中的目标IP为PC2的,路由A会查找自己的路由表。发现此数据包是发送到A端口的。然而在封装过程中路由A没有路由B的MAC,那么路由A会进行丢包这是第一次丢包。那么路由A会在E1端口进行ARP广播。
  4. 进行广播的源IP和MAC为10.1.1.1和00-11-12-21-33-33;目标IP和MAC为10.1.1.2和FF-FF-FF-FF-FF-FF。这时B路由器收到了来自A路由器的ARP广播,会把A路由器的IP和MAC记录在他的ARP缓存表里,并且B路由会发一个数据包给A路由,其中源IP和MAC为10.1.1.2和00-11-12-21-44-44;目标IP和MAC为10.1.1.1和00-11-12-21-33-33。此时A路由收到来自B路由的数据包,并开始拆包记录B路由的IP和MAC放在其ARP缓存表里。
  5. A路由知道了B路由的IP和MAC后,PC1第二次开始ping PC2.数据包从PC1发送到路由A经过拆包和封装两个过程后,数据包由路由A的E1端口发送到路由B的E1端口,其中数据包的源IP和MAC为,192.168.1.2和00-11-12-21-33-33;目标IP和MAC为,192.168.2.2和00-11-12-21-44-44。B路由收到了数据包发现其目标MAC与自身的MAC吻合就开始进行拆包,找到了其中的目标IP并且在B路由里的路由表里开始寻找相应的IP地址。正当路由B开始进行数据包封装时由于没有PC2的MAC所以,路由B就会丢包这是第二次丢包。与此同时B路由通过E0端口进行ARP广播,其源IP和MAC为,192.168.2.1和00-11-12-21-55-55;目标IP和MAC为,192.168.2.2和FF-FF-FF-FF-FF-FF。PC2收到了路由B在E0端口的ARP广播后对目标MAC的数据包进行拆包,发现里面的目标IP正是PC2的IP,那么PC2就会给路由B发送一个数据包,其中源IP和MAC为,192.168.2.2和00-11-12-21-66-66.目标IP和MAC为,192.168.2.1和00-11-12-21-55-55。同时PC2会将路由B的IP和MAC记录在他的ARP缓存表里。
  6. 这时B路由收到了来自PC2的数据包其目标MAC正是路由B的MAC,那么路由B会将PC2的MAC记录在他的ARP缓存表里。这时,PC1第三次 ping PC2
  7. 数据包再次由PC1发出通过E0端口到达路由A,路由A对数据包进行拆包和封装的工作,将原有的目标MAC由00-11-12-21-22-22改为00-11-12-21-44-44,其他目标IP和源IP不变。之后将数据包通过E1端口发送给B路由,B路由再次将数据包进行拆包和封装的工作,将目标MAC由00-11-12-21-44-44改为00-11-12-21-66-66。其他目标IP和源IP不变。之后数据包通过E0端口到达了PC2,PC2将数据包进行拆包,再给PC1返回一个数据包这样两台PC机就ping通了!

总结

  1. 在此过程中,路由器如果不知道将要发送的数据包的目标MAC,那么路由器就会进行丢包,并且会在目标IP的端口域进行ARP广播。
  2. 进行过ARP之后两台机器就会将双方的IP和MAC记录在各自的ARP缓存表里。
  3. 在ping的过程中,目标IP和源IP始终不变,变的是目标MAC和源MAC。
    静态路由过程相比二层交换机工作复杂许多,需要慢慢想清楚其中的原理。