交换机二层转发过程(Ping过程)

1. 前置条件

如下图,交换机端口1和端口2属于同一VLAN 10。PC1接在端口1上,PC2接在端口2上。PC1的MAC地址为0000-0000-0001,IP地址为10.0.0.2/24,PC2的MAC地址为0000-0000-0001,IP地址为10.0.0.3/24。

交换机二层转发过程(Ping过程)

2. PC1将目的IP与掩码进行按位与运算,得到目的IP的网络号,与本机网络号进行比较,发现是同一网段

交换机二层转发过程(Ping过程)

3. PC1查看本机ARP表里面是否有目的IP的ARP表项,发现没有查找到

交换机二层转发过程(Ping过程)

4. PC1构造一个ARP请求报文,请求10.0.0.3的MAC地址,报文的源MAC为本机MAC,目的MAC为广播MAC

交换机二层转发过程(Ping过程)

5. PC1将ARP请求报文发送出去

交换机二层转发过程(Ping过程)

6. 交换机从端口1接收到ARP请求报文,根据报文的源MAC地址创建一个MAC地址表项

交换机二层转发过程(Ping过程)

7. 交换机检查报文的目的MAC为广播MAC,将报文从除端口1以外的其他端口发送出去

交换机二层转发过程(Ping过程)

8. PC2接收到ARP请求报文,检查其目的MAC为广播MAC,于是接收该报文

交换机二层转发过程(Ping过程)

9. PC2根据二层头中的类型字段确认是ARP报文,于是交给ARP模块处理

交换机二层转发过程(Ping过程)

10. ARP模块根据报文的源MAC和源IP,创建一个ARP表项,便于后续收发报文

交换机二层转发过程(Ping过程)

11. ARP模块发现请求的是本机IP地址的MAC地址,于是构造一个ARP应答报文,源MAC为本机MAC,目的MAC为PC1的MAC,告诉PC1本机的MAC地址。然后将该ARP应答报文发送出去

交换机二层转发过程(Ping过程)

12. 交换机从端口2接收到ARP应答报文,根据报文的源MAC学习PC2的MAC地址,并创建一个MAC表项

交换机二层转发过程(Ping过程)

13. 交换机检查ARP应答报文的目的MAC,发现是一个单播MAC,于是查找本机的MAC地址表,匹配到之前已经创建的MAC地址表项,根据该MAC地址表项,将报文从端口1发送出去

交换机二层转发过程(Ping过程)

14. PC1接收到ARP应答报文,检查目的MAC为本机MAC,于是接收该报文

交换机二层转发过程(Ping过程)

15. PC1根据报文中二层头中的类型字段确定是ARP报文,于是交个ARP模块处理

交换机二层转发过程(Ping过程)

16. ARP模块检查报文的ARP头,发现是对之前请求报文的应答,根据报文信息创建一个ARP表项

交换机二层转发过程(Ping过程)

17. PC1根据已经创建的ARP表项构造一个ICMP请求报文,源IP为本机IP,目的IP为PC2的IP,源MAC为本机MAC,目的MAC为PC2的MAC,并发送出去

交换机二层转发过程(Ping过程)

18. 交换机接收到ICMP请求报文,检查报文的源MAC,发现已经有相关MAC表项,于是更新表项的老化时间

交换机二层转发过程(Ping过程)

19. 交换机检查ICMP请求报文的目的MAC,发现是一个单播MAC,查找本机的MAC地址表,匹配到之前已经创建的MAC地址表项,根据该表项,将报文从端口2发送出去

交换机二层转发过程(Ping过程)

20. PC2接收到ICMP请求报文,检查其目的MAC为本机MAC,于是接收该报文

交换机二层转发过程(Ping过程)

21. PC2检查报文二层头中的类型字段,发现是IP报文,交给IP协议栈处理。IP协议栈检查IP头中的协议字段,发现是ICMP报文,交给ICMP模块处理

交换机二层转发过程(Ping过程)

22. ICMP模块发现是ICMP请求报文,请求的是本机IP,于是构造一个ICMP应答报文,源MAC为本机MAC,源IP为本机IP,目的MAC为PC1的MAC,目的IP为PC1的IP,并将报文发送出去。

交换机二层转发过程(Ping过程)

23. 交换机从端口2接收到ICMP应答报文,检查该报文的源MAC,发现已经有该MAC地址的表项,于是更新表项的老化时间

交换机二层转发过程(Ping过程)

24. 交换机检查该报文的目的MAC,发现是一个单播MAC,于是查找本机的MAC地址表,匹配到一个之前已经创建的MAC表项,根据该MAC表项从端口1将报文发送出去

交换机二层转发过程(Ping过程)

25. PC1接收到ICMP应答报文,检查报文的目的MAC为本机MAC,于是接收该报文

交换机二层转发过程(Ping过程)

26. PC1根据报文的二层头中的类型字段发现是IP报文,交个IP协议栈处理,IP协议栈检查IP头中的协议字段,发现是ICMP报文,交个ICMP模块处理

交换机二层转发过程(Ping过程)

27. ICMP模块检查ICMP报文内容,发现该报文时对之前请求报文的应答,处理该报文,流程结束

交换机二层转发过程(Ping过程)

28. 总结

Ping的过程隐含了一个ARP请求的过程。
Ping的第一个报文有可能不通,这是因为ARP请求的时间过长,导致第一个ping报文超时。
ARP表有老化时间,如果长时间没有跟目的主机通信,再次通信需要重新发起ARP请求。
两台主机之间处于同一网段的时候,交换机只做二层转发。

相关文章:

  • 2021-11-29
  • 2021-12-24
  • 2022-12-23
  • 2021-08-27
  • 2021-09-16
  • 2021-09-11
  • 2021-11-19
  • 2021-08-18
猜你喜欢
  • 2022-01-10
  • 2021-04-28
  • 2021-06-02
  • 2022-01-14
  • 2021-04-11
  • 2021-12-03
  • 2021-12-19
相关资源
相似解决方案