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