路由器如何识别具有静态 IP 的设备?

路由器如何识别具有静态 IP 的设备?

当设备上配置了静态 IP 时,设备如何向路由器识别自己,或者路由器如何识别设备?这里涉及哪些流程/协议?

我相信它与地址解析协议和 ARP 表有关,但据我所知,ARP 用于发现具有特定 IP 地址的节点的 MAC 地址。

答案1

当设备分配了静态配置时,它如何告诉路由器/ DHCP 服务器“嘿,我分配了 IP 地址 #.#.#.#,不要将其分配给其他设备(DHCP)

但事实并非如此。

一些 DHCP 服务器会在发出租约之前通过 ARP 主动探测地址,以避免冲突,但这是可选的,您可以获得重复的地址。

(因此,DHCP 地址池通常会被特意选择为小于整个子网,以便为静态分配保留一些空间。另一种选择是让 DHCP 服务器的管理员手动为各个设备添加“静态租约”或“保留”。)

有时主机本身在开始使用地址之前会通过 ARP 探测重复地址(例如,Windows 即使对静态配置的地址也会这样做);在 IPv4 中这仍然是可选的,但在 IPv6 中,这种“重复地址检测”成为强制性的。

并将包含我的目的地地址的流量转发给我。

假设地址仍在本地子网内:路由器对目标地址进行 ARP 查询,并将数据包转发到通过 ARP 解析的 MAC 地址。

(当主机向路由器发送数据包或通过路由器发送数据包时,或者当主机直接向子网内的其他主机发送数据包时,也使用相同的机制,即它是对称的,并且“主机”与“路由器”之间没有真正的区别。)

请注意,DHCP 租约不是即使地址是通过 DHCP 发出的,也用于转发数据包——所有数据包转发都依赖于 ARP(或 IPv6 等效 NDP)。通常,DHCP 服务器甚至可能托管在与路由器不同的设备上。


(另一方面,字首IPv6 中的委派(即当客户路由器从其上游 ISP 路由器声明整个子网范围时)确实依赖 DHCPv6 来更新上游的路由表。)

答案2

路由器通常不关心设备是否具有静态 IP。对于路由器而言,设备 IP 无论是动态 IP 还是静态 IP 看起来都完全相同。

例外也许是某些路由器提供 DHCP 预留的能力。

在这种情况下,路由器有一个 MAC 地址和与该 MAC 地址配合使用的 IP 地址表。因此,我的主要工作站设置了 DHCP,但始终获取预留表中的 IP 地址。

一旦分配,IP 地址对于路由器来说看起来与任何其他 IP 地址完全相同。

我使用 DHCP 保留,尽管路由器总是为设备分配相同的地址,但设备 IP 地址实际上是 DHCP。

在路由器中,LAN 地址范围通常包括 DHCP 范围和非 DHCP 范围。根据设备的不同,地址可能属于任一范围(而不是两者)。但路由器本身不会看到所用 IP 地址的任何差异。

答案3

ARP将IP地址转换为链路层地址。

  • 如今,这通常是以太网的 MAC 地址,但许多其他“硬件类型”均受支持。

  • 这是必要的,因为链路层只关注同一链路上的事物(交换机、Wi-Fi 信道等)。

    • 要向不在同一链路上的内容发送信息,路由器必须位于该链路上,并且您的系统必须将流量发送给它,而不是直接发送给另一方。

关于ARP:

  • ARP(以及链路层)根本不关心 IP 地址或它来自哪里——无论是静态分配、通过 DHCP 还是通过 APIPA。

  • ARP 用于硬件支持广播的情况。

    • 在以太网上,这是通过向 MAC 地址 FF:FF:FF:FF:FF:FF 发送来实现的。链路上的所有 NIC 都会接收广播帧。

    • 因此 ARP 不需要 IP 地址就能到达链路上的所有系统。

如果您的设备具有静态 IP 并且其他系统 X 需要知道其 MAC 地址,则 X 将使用广播 MAC 发出 ARP 请求,并且具有该 IP 的系统将会响应。

(如果这听起来不安全,那确实如此,这是许多网络攻击的基础,也是使用 VLAN 来隔离企业网络上的设备的原因)

相关内容