如图网络拓扑:PC1与PC2连接LSW1,PC1与PC2之间是如何进行通信的?
配置PC1 IP:192.168.10.1/24
配置PC2 IP:192.168.10.2/24
LSW1不做任何配置
当PC1 ping PC2,如图:
是通的,具体看看之间发生了什么事情,通过抓包工具,如图:
发现先广播发送了ARP包,然后才是ICMP包
ARP协议:地址解析协议(Address Resolution Protocol)根据IP地址获取MAC地址的协议
我们展开ARP包,如图:
二层头解析
source:MAC地址为54:89:98:8f:0d:eb,是PC1的E1口的MAC地址
destination:ff:ff:ff:ff:ff:ff,是一个二层广播MAC地址
再展开ARP头,如图:
sender MAC address:MAC地址为54:89:98:8f:0d:eb,是PC1的E1口的MAC地址
sender IP address:IP地址为192.168.10.1
Target MAC address:ff:ff:ff:ff:ff:ff,是一个二层广播MAC地址
Target IP address:IP地址为192.168.10.2
小结:ARP请求包的二层头的source为请求接口的MAC地址,destination是二层广播MAC地址,再里面的ARP头也有一个MAC地址为请求接口的MAC地址,也有一个目的MAC地址target为ff:ff:ff:ff:ff:ff,同时比二头层多了源IP地址和目的IP地址
再来看PC2响应的包,如图:
PC2响应的ARP包二层头
source:MAC地址为54:89:98:05:48:2b,是PC2的E1口的MAC地址 destination:54:89:98:8f:0d:eb,是PC1的E1口的MAC地址
PC2响应的ARP头
sender MAC address:MAC地址为54:89:98:05:48:2b,是PC2的E1口的MAC地址
sender IP address:IP地址为192.168.10.2,是PC2的IP地址
Target MAC address:54:89:98:8f:0d:eb,是PC1的E1口的MAC地址
Target IP address:IP地址为192.168.10.1,是PC1的IP地址
小结:目的地址收到后,发送一个单播的回复包。
疑问,因为交换机发送的是广播包,如果此时再添加一台PC3连接到交换机上,还是PC1 ping PC2会发生什么?如图:
此时我抓包交换机的E0/0/3口,如图:
交换机会发送出一个广播包,但是并没有收到来自PC3的回复
总结:整体流程就是PC1 ping PC2的时候,会在二层头的source填上发送接口的MAC地址,会在destination填上广播MAC地址,发送一个二层广播包,然后目的地址收到后,发送一个单播包,如果不是目的IP地址,则PC不会回复单播包。同时交换机记录在MAC表中,两个PC也会分别维护自身的ARP表,之后再ping就不需要再发送ARP广播直到ARP表失效