实验拓扑:
当PC2 ping PC1时,发送方主机PC2将数据封装成数据帧,其中包括目的MAC地址、源MAC地址、数据类型、数据内容等。目的MAC地址用于指定数据帧的接收方,源MAC地址用于指定数据帧的发送方。
但是PC2怎么知道PC1的MAC地址是什么呢?
在发送数据帧之前,发送方主机需要获取目的MAC地址。此时,主机将发送ARP请求,请求目的主机的MAC地址。如果目的主机与发送方主机在同一个局域网中,那么ARP请求会被发送到局域网中的所有设备。目的主机会收到ARP请求,并根据自己的IP地址回复一个ARP应答,其中包括目的MAC地址。发送方主机收到ARP应答后,就可以将目的MAC地址添加到数据帧中,然后发送数据帧。
通过抓包分析:
可见PC2会先发送一个消息类型为"who has"的ARP请求报文,这个请求报文中有着自己的MAC地址和目标主机的IP地址,此报文用来询问:IP地址是:192.168.10.1的主机的MAC地址是什么?请告诉192.168.10.2(我自己)。
报文经过交换机的GigabitEthernet 0/0/2 以广播的形式发送到除了发送端的所有端口。此时我们可以总结几点信息:
1、交换机此时可以得知,自己的GigabitEthernet 0/0/2 对应的主机的MAC是什么
2、PC1收到ARP请求报文后得知是在找自己,会通过"who has"带来的MAC地源址构造数据帧,回复一个ARP响应报文。
3、此时交换机学习得知:自己的GigabitEthernet 0/0/1的端口对应的主机(PC1)的MAC地址是什么,记录在自己的Mac地址表中。
4、发送方主机收到ARP应答后,就可以将目的MAC地址添加到数据帧中,然后发送数据帧。
交换机查表转发给PC1
综上所述,交换机的工作原理是通过学习源MAC地址和端口的对应关系,将数据帧转发到正确的端口,从而实现局域网内设备之间的通信。ARP协议则提供了获取目的MAC地址的方法,从而使交换机能够正确地转发数据帧。