ARP
1. arp响应的条件
1.1. 普通主机响应 ARP 请求的条件
当本机是普通主机时,只有当 ARP 请求中的目标IP地址与本机IP地址匹配时,普通主机才会发送ARP响应。例如,主机A的IP地址为192.168.1.10,当它接收到ARP请求,且请求的目标 IP地址为192.168.1.10时,主机A会回复 ARP 响应,在响应中携带自己的 MAC 地址。
1.2. 网关响应 ARP 请求的条件
- 标准情况:网关收到 ARP 请求,如果请求的目标 IP 地址是网关自身某个接口的 IP 地址,网关就会发送 ARP 响应。例如,网关连接到 192.168.1.0/24 网段的接口 IP 为 192.168.1.1,当收到 ARP 请求且目标 IP 为 192.168.1.1 时,网关会回复 ARP 响应,告知自身的 MAC 地址。
- 代理 ARP 情况:在启用代理 ARP 的情况下,网关收到 ARP 请求,若请求的目标 IP 地址不属于网关自身,但网关知道如何到达该目标 IP(即网关有到目标 IP 所在网络的路由),网关会代替目标主机进行 ARP 响应。比如,在一个包含多个子网的网络环境中,子网 A 的主机向网关发送 ARP 请求,询问子网 B 中某主机的 IP 地址对应的 MAC 地址,网关开启了代理 ARP 功能,且有到子网 B 的路由,网关就会回复自己的 MAC 地址给子网 A 的主机,使得子网 A 的主机将发往子网 B 主机的数据包先发送给网关,由网关转发。
如果 ARP 请求的目标 IP 地址属于网关管理网关,但是目标IP却不是网关IP时,说明该目标主机与发送请求的主机处于同一子网,理论上不需要网关进行转发,网关会丢弃这个 ARP请求。这是因为在同一子网内,主机之间可以直接通过二层网络通信,通过 ARP 获取目标主机的 MAC 地址后直接进行数据传输。例如,子网A的网络地址为 192.168.1.0/24,主机 192.168.1.10 向网关192.168.1.1发送ARP请求,询问 192.168.1.20 的 MAC 地址,网关发现192.168.1.20属于同一子网,便会丢弃该请求。(192.168.20这个地址会有二层可达的主机回答,而不需要网关代答)