当我发送一个源MAC地址错误但源IP地址正确的UDP数据包时,假设发送了回复,我会因为我的源IP地址正确而收到回复,还是因为我的源MAC地址错误而不会收到回复地址?
具有错误源 MAC 地址的数据包
考虑以下网络,具有正确的寻址、掩码和明显的路由。
B K
|.2 |.? 10.0.0.0/24
===+===+===+================
|.1
R
|.1 10.0.1.0/24
===+===+===+=======+========
|.2 |.? |.4
A J X
案例 1:本地
A 向 X 发送 IP 源地址正确但源 MAC 地址不正确的数据包
结果:帧到达交换机,它更新其 CAM 表,然后帧到达 X,它更新其 ARP 表,将 UDP 数据包传递到其堆栈中的楼上,从而生成回复。对于中毒的 ARP 缓存,回复 A 的 IP 地址将被包裹在错误的以太地址中。交换机通常会向原始发送者发送回复,但如果不正确的以太网地址可能是另一台主机 J 的以太网地址,则该主机将接收该帧并对其进行任何它喜欢的操作。如果没有主机实际拥有该以太地址,则 J 可能仍然能够侦听该帧,具体取决于交换机的详细信息。接下来发生的事情取决于上层协议,A 是否注意到它没有收到回复并开始重新发送等。
案例 2:远程
B 向 X 发送 IP 源地址正确但源 MAC 地址不正确的数据包
B 通过交换机向 R 发送帧,后者更新其 CAM 表,R 可能会拒绝它。它更有可能更新 B 的 ARP 缓存,并将数据包转发到 X。
X 接收并制定回复,由于 B 不是本地的,因此将被定向到 R。R 接收数据包,查看它是用于本地网络的,然后将其缓存中的中毒以太地址封装在以太中。就像本地情况一样,根据交换机的细节,K 可能是目的地,或者能够监听帧。
笔记
我已经描述了常见的操作系统、交换机和路由器的普通情况;这些旨在最大限度地减少所需的管理,代价是对某些类型的问题持开放态度。
您会看到,在本地和远程情况下,出错的地方在于 ARP 缓存更新了不正确的信息,以及交换机的 CAM 表。这种具有不正确以太源地址的帧的通常原因是有意的 ARP 缓存中毒攻击,以及偶尔无意的错误配置。
因此,许多操作系统允许设置锁定 ARP 缓存条目,以防止 J 和 K 窃取其邻居 A 和 B 的邮件。路由器和交换机也具有防止此类事情的设施。