ARP 问题(数据包类型、以太网、缓存、免费)

网络工程 以太网 arp
2021-07-29 01:38:02

最近我一直在研究地址解析协议,虽然我知道它背后的想法,但我仍然有一些问题。

问题 1:除了以下内容之外,我还缺少更多类型的 ARP 消息吗?:

  • ARP请求
  • ARP回复
  • 免费 ARP 请求(ARP.Protocol_Source = ARP.Protocol_Target)
  • 免费 ARP 回复(无请求回复)
  • ARP 探测(ARP.Protocol_Source = 0.0.0.0)

Q2:ARP 真的关心以太网头吗?

据我所知,ARP 根本不关心以太网标头。无论您是单播还是广播以太网报头都没有关系,因为 ARP 仍然会响应,如果 Ethernet.Source 也可以与 ARP.Hardware_Source 不同,我也不会感到惊讶。

Q3:哪些数据包填充了 ARP 缓存?

我一直认为 ARP Requests 和 ARP Gratuitous Requests 填充了 ARP 缓存,是否有更多的数据包可以做到这一点(Gratuitous ARP Replies?),在某些情况下它是否依赖于实现?

Q4:什么时候使用无偿回复和无偿请求?

如果可以引用任何官方文档,那将更有帮助!

2个回答

如有疑问,请转到源,RFC 826,以太网地址解析协议

  1. 有两种类型的 ARP 消息:REQUEST 和 REPLY。

  2. RFC 指定了以太网标头。ARP 请求涉及确定目的地的以太网地址,因此它使用广播地址,因为它不知道单播地址。ARP 回复将知道以太网地址,因此它将是单播。

    Ethernet transmission layer (not necessarily accessible to the user):  
        48.bit: Ethernet address of destination  
        48.bit: Ethernet address of sender  
        16.bit: Protocol type = ether_type$ADDRESS_RESOLUTION
    

    然后,它会将此数据包广播到最初由路由机制确定的以太网电缆上的所有站点。

  3. ARP 缓存的工作方式取决于操作系统,不需要主机维护 ARP 缓存。

  4. 无偿 ARP 的使用没有官方文档说明,但一些主机和操作系统使用它来解决地址冲突等问题;Wireshark 有一个很好的解释(有例子):Gratuitous ARP

免费 ARP可能意味着免费 ARP 请求或免费 ARP 回复。在这种情况下,无偿意味着根据 ARP 规范 (RFC 826) 通常不需要但在某些情况下可以使用的请求/回复。免费 ARP 请求是一个 AddressResolutionProtocol 请求数据包,其中源和目标 IP 都设置为发出数据包的机器的 IP,目标 MAC 是广播地址 ff:ff:ff:ff:ff:ff。正常情况下不会出现回复包。无偿 ARP 回复是没有请求的回复。

供参考的附录:

用于 ARP 的rfc5226规范IANA 注册