在网络通信中,**ARP(地址解析协议)**用于将网络层的 IP 地址解析为链路层的物理地址(MAC 地址)。当一个设备需要发送 IP 数据包时,它需要知道目标设备的 MAC 地址,这时它会发送一个 ARP 请求。ARP 请求通常是一个广播帧,所有在同一局域网内的设备都会接收到这个请求。
设备如何监听 ARP 请求广播
-
网络接口卡(NIC)的工作:
- 每个网络设备都有一个网络接口卡(NIC),它负责处理物理层和数据链路层的通信。NIC 监听网络上的所有帧,并根据帧的目标 MAC 地址决定是否接收该帧。
- 当 NIC 接收到一个帧时,它会检查帧的目标 MAC 地址:
- 如果目标 MAC 地址是设备的 MAC 地址或广播地址(
FF:FF:FF:FF:FF:FF
),NIC 会将帧传递给操作系统的网络协议栈进行处理。 - 如果目标 MAC 地址不是设备的 MAC 地址,也不是广播地址,NIC 会丢弃该帧。
- 如果目标 MAC 地址是设备的 MAC 地址或广播地址(
-
ARP 请求的广播:
- ARP 请求是一个特殊的以太网帧,其目标 MAC 地址是广播地址
FF:FF:FF:FF:FF:FF
。这意味着局域网内的所有设备都会接收到这个帧。 - ARP 请求帧的格式如下:
- 目标 MAC 地址 :
FF:FF:FF:FF:FF:FF
(广播) - 源 MAC 地址: 发送设备的 MAC 地址
- 帧类型 :
0x0806
(ARP) - ARP 数据 :
- 硬件类型: 1(以太网)
- 协议类型 :
0x0800
(IP) - 硬件地址长度: 6(MAC 地址长度)
- 协议地址长度: 4(IP 地址长度)
- 操作码: 1(ARP 请求)
- 发送者 MAC 地址: 发送设备的 MAC 地址
- 发送者 IP 地址: 发送设备的 IP 地址
- 目标 MAC 地址 :
00:00:00:00:00:00
(未知) - 目标 IP 地址: 目标设备的 IP 地址
- 目标 MAC 地址 :
- ARP 请求是一个特殊的以太网帧,其目标 MAC 地址是广播地址
-
设备处理 ARP 请求:
- 当设备接收到 ARP 请求帧时,操作系统会检查 ARP 请求中的目标 IP 地址:
- 如果目标 IP 地址与设备的 IP 地址匹配,设备会生成一个 ARP 响应帧,并将其发送回发送者。
- 如果目标 IP 地址不匹配,设备会丢弃该 ARP 请求帧。
- 当设备接收到 ARP 请求帧时,操作系统会检查 ARP 请求中的目标 IP 地址:
-
ARP 响应的发送:
- ARP 响应帧的目标 MAC 地址是发送 ARP 请求的设备的 MAC 地址,而不是广播地址。这意味着只有发送 ARP 请求的设备会接收到 ARP 响应。
- ARP 响应帧的格式如下:
- 目标 MAC 地址: 发送 ARP 请求的设备的 MAC 地址
- 源 MAC 地址: 响应设备的 MAC 地址
- 帧类型 :
0x0806
(ARP) - ARP 数据 :
- 操作码: 2(ARP 响应)
- 发送者 MAC 地址: 响应设备的 MAC 地址
- 发送者 IP 地址: 响应设备的 IP 地址
- 目标 MAC 地址: 发送 ARP 请求的设备的 MAC 地址
- 目标 IP 地址: 发送 ARP 请求的设备的 IP 地址
-
ARP 缓存:
- 设备在接收到 ARP 响应后,会将 IP 地址和 MAC 地址的映射关系存储在 ARP 缓存中,以便将来使用。
- ARP 缓存中的条目有一个生存时间(TTL),超过 TTL 后,条目会被删除。
以下是平时网络上的疑惑点,仅供参考
- ARP 请求是一个广播帧,所有在同一局域网内的设备都会接收到。
- **网络接口卡(NIC)**负责监听网络上的所有帧,并根据目标 MAC 地址决定是否接收。
- 操作系统处理 ARP 请求,检查目标 IP 地址是否匹配。
- ARP 响应是一个单播帧,只有发送 ARP 请求的设备会接收到。
- ARP 缓存用于存储 IP 地址和 MAC 地址的映射关系,以提高通信效率。