假设我有源主机H1(10.1.1.2/24)想要与主机H2(10.1.1.3/24)通信。由于两个主机都在同一子网H1,因此发送ARP广播。 H2回复此广播,最后H1获得H2 MAC地址。因此沟通确立了。
现在如果H2关闭,H1将不会从H2接收ARP回复。那么什么时候H1会等待ARP回复? RFC 826没有谈论任何这样的计时器。
我在一些论坛中发现它是5到30秒。这是对的吗?
此致 Sudhansu
答案 0 :(得分:1)
在你的描述中,你至少会错过一件事。 ARP回复缓存为ARP条目一段时间。所以H1会在H2停机后向黑洞发送一些流量。这段时间被选为base_reachable_time/2
和3*base_reachable_time/2
之间的随机数字。 (随机用于及时分发来自不同设备的请求)。默认情况下,base_reachable_time为30秒。
经过这段随机时间后,H1会尝试更新ARP条目。通过发送间隔为retrans_time_ms
的ARP请求(默认为1秒),通过单播消息(直接发送到H1而不向网络广播)执行更新。如果ucast_solicit
(默认情况下为3)尝试失败,则执行广播探测。
如果广播探测失败(mcast_solicit
尝试间隔retrans_time_ms
),则ARP条目被视为不完整。在此检查期间,内核可以将数据包发送到ARP队列中的H2。
总结: