计算机如何为自己分配IP地址?IP地址不是由路由器分配给计算机的吗?

gaa*_*kam 2 routing ip ip-address

我可以做这个:

/sbin/ip addr add 172.17.0.12 dev eth0
Run Code Online (Sandbox Code Playgroud)

这种可能性与我的(显然过于简单和不真实的)分配 IP 地址如何工作的心理模型相冲突。

根据这个心智模型:

  • 计算机不会为自己分配 IP 地址;
  • 相反,计算机由管理它们连接到的网络的服务器分配 IP 地址。
  • 这将意味着家用 PC 的路由器、这些路由器的 ISP 服务器等等。

对我来说,给自己分配 IP 地址的想法似乎……毫无意义?那么如果计算机声明“这是我的 IP 地址”怎么办?IP 地址的目的是让路由器知道数据包应该转发到哪里。

在上面的例子中,当一台计算机为172.17.0.12自己分配一个私有网络地址时,只有当该私有网络的路由器知道并同意这台计算机拥有这个地址时,这才有意义。但在这种情况下,这不会是真的!那么任何数据包都可以eth0到达这台计算机吗?

Her*_*ann 6

虽然其他答案概述了静态 IP 地址存在的原因,但我想回答您关于它如何工作的部分问题。

你在这里缺少的是ARP。想象一个 172.17.0.0/16 专用网络。您的一个客户端“给自己”了静态 IP 地址 172.17.0.12。第二个客户端 172.17.0.42 想要与 172.17.0.12 通信。在 ARP 之后,172.17.0.42 发送广播。它实际上是到处大喊“谁拥有 IP 地址 172.17.0.12?”。172.17.0.12 答复和通信建立。请注意,如果有两个客户端声称拥有相同的 IP 地址,则会出现混乱。

  • 这是关键。它解释了计算机如何为自己分配地址并让其他人发现这一点,以及为什么计算机需要知道自己的地址。 (3认同)