在发送icmp包的时候三层头不会变化,而二层头的目的地mac会发生变化,变为网关的mac
在icmp发送跨网段数据包的时候,需要先发送arp请求报文获取网关的mac
pc1 to switch:
|aa:aa:aa:11|??:??:??:??|192.168.1.2|192.168.2.2|
// 这个时候pc1还不知道目的mac,需要发送arp报文请求
arp 请求 switch:
|aa:aa:aa:11|FF:FF:FF:FF:FF:FF|aa:aa:aa:11|192.168.1.2|00:00:00:00|192.168.1.1|
switch 应答 arp:
aa:aa:aa:44|aa:aa:aa:11|aa:aa:aa:44|192.168.1.1|aa:aa:aa:11|192.168.1.2|
这个时候在pc1就会学习到网关的arp表,icmp包中的目的mac就会填入网关的mac,aa:aa:aa:44
icmp:
|aa:aa:aa:11|aa:aa:aa:44|192.168.1.2|192.168.2.2|
假如在switch和pc2之间还有一台设备的话,需要继续发送一次arp来或获取到下一条设备的mac地址,然后icmp包的目的mac改为这次arp获取到的mac