假设我有源主机H1(10.1.1.2/24),它希望与主机H2通信(10.1.1.3/24)。因为两台主机都在同一个子网中,所以H1发送一个ARP广播。H2回复此广播,最后H1获得H2 MAC地址。因此,沟通确立了。
如果H2关闭,H1将不会收到H2的回复。那么,在什么时间内,H1将等待ARP回复?RFC 826没有提到任何这样的计时器。
我在某个论坛上发现是5到30秒。这是正确的吗?
你好,苏丹苏
发布于 2016-06-08 01:40:16
在你的描述中,你至少错过了一件事。ARP回复作为ARP条目缓存一段时间。因此,H1将在H2下降后将一些流量发送到黑洞。这段时间被选择为随机数,介于base_reachable_time/2
和3*base_reachable_time/2
之间。(随机用于及时分发来自不同设备的请求)。默认情况下,base_reachable_time是30秒。
经过这个随机时间之后,H1尝试更新ARP条目。通过发送间隔为H1的retrans_time_ms
请求(默认情况下为1秒),通过单播消息(直接发送到网络而不进行任何广播)执行更新。如果ucast_solicit
(默认情况下为3)尝试失败,则执行广播探测。
如果广播探测也失败(mcast_solicit
尝试了间隔retrans_time_ms
),则ARP条目被认为是不完整的。在此检查期间,内核可以保存发送到ARP队列中的H2的数据包。
总结:
https://stackoverflow.com/questions/37341598
复制