如何在仅包含交换机的网络上 ping 特定 IP,而据我所知,交换机不了解 IP,而只了解 MAC!
在纯第 2 层 LAN 中 ping
网络工程
平
层2
2021-07-28 10:42:20
2个回答
您是对的,交换机只知道/关心 MAC。
当您发送 ping 时,host#1 首先生成一个 arp 请求特定 ip_dst(host#2) 的 MAC,并带有 MAC_dst(ffff.ffff.ffff),MAC_src(Host#1) 广播,然后交换机将其转发到所有端口。
一旦目标主机#2 接收到广播,主机#2 将看到它是它自己的 IP(主机#2)的 ARP,并使用接收到的数据包中的 MAC,回复原始主机#1,使用已知 MAC 为 src(Host#2) 和 dst(Host#1)。
一旦主机#1 收到 ARP 回复,它就有 MAC(host#2) 并将在 ARP 表中缓存 IP-MAC 的映射,然后它发送数据包的其余部分,例如使用目标 MAC_dst(host #2)。
交换机不关心它是 ping 还是任何其他数据包类型,它只使用 MAC_dst。
启动数据包跟踪(使用wireshark之类的东西)可能对您有帮助,您将看到当您发出ping命令时本地机器做的第一件事是广播一个APR数据包(假设它不在arp表中) ) 到您尝试访问的 IP 地址。例子:
- IntelCor_00:00:88 广播 ARP 42 谁有 10.1.0.1?告诉 10.1.0.2
一旦您的本地机器获得了您尝试访问它的设备的 MAC 地址,就会将 ICMP (ping) 数据包与目标 MAC/IP 组合组合在一起。因此,您正确地认为目标数据包是一个特定的 IP,但该数据包然后被包装在 MAC 帧中并发送。
希望有帮助。