1、先认识两个表
(1)ARP表:该表项里面是IP地址和MAC地址的对应关系,终端上老化时间为180秒,路由器上老化时间为20分钟,在终端上查看, PC>arp -a,在路由器上查看:[R1]display arp all
(2)MAC表:该表项里面是交换机的接口与其连接终端的MAC地址的对应关系,老化时间为5分钟,MAC表是在交换机上查看的, [Huawei]display mac-address
2、请求 request
PC1(192.168.1.1)访问PC2(192.168.1.2),初始状态PC1的ARP表里面是空的,没有192.168.1.2对应的MAC地址,这时PC1就会向PC2发送ARP request请求以得到PC2的MAC地址
ARP包里有源IP地址(192.168.1.1)、源MAC地址(54-89-98-77-41-31)、目的IP地址(192.168.1.2)、目的MAC地址(全0/全F),再经过数据链路层分装帧头和帧尾,帧头里有源MAC地址(54-89-98-77-41-31)、目的MAC地址(全F)
注意:帧头里面的目的MAC地址和ARP包里面的目的MAC地址的概念不一样,帧头里面的MAC地址是在不知道目的MAC地址的情况下发送广播,封装的是广播地址,而ARP包里面的MAC地址仅代表不知道MAC地址,从终端发出的为全F,从路由器发出的为全0
封装成数据帧之后经过物理层转发比特流到交换机,交换机从Ethernet0/0/1口接收,解封装后看到帧头里面的内容,就将源MAC地址(54-89-98-77-41-31)与接收端口(Ethernet0/0/1口)对应构建MAC表,后发现目的地址是全F,就将该数据重新封装成数据帧后进行泛洪。
3、响应 reply
PC2接收广播发来的数据帧后进行解封装,接收到ARP包里面的信息,将源IP地址和源MAC地址进行对应构建自己的ARP表,发现其目的IP地址是自己,就对PC1进行响应,将自己的MAC地址告诉PC1,向PC1发送 ARP reply,此时ARP包里有源IP地址(192.168.1.2),源MAC地址(54-89-98-4A-68-1F),目的IP地址(192.168.1.1)、目的MAC地址(54-89-98-77-41-31),再经数据链路层封装数据帧,此时的帧头里面封装源MAC地址(54-89-98-4A-68-1F),目的MAC地址(54-89-98-77-41-31),经物理层转发比特流到交换机
交换机收到数据帧后将数据帧头中的源MAC地址与接收端口对应构建MAC表,又将目的MAC地址与自己的MAC表对应进行查找,发现目的MAC地址和自己的Ethernet0/0/1口对应,便将数据重新封装成帧后从Ethernet0/0/1口发送给PC1;
PC1收到数据帧后进行解封装,将PC1的IP地址与MAC地址对应,构建自己的ARP表。至此,PC1知道的了PC2的MAC地址,地址解析完毕。
有什么问题欢迎随时评论或者私信哦~