我的服务器无法连接到任何网络,在与它争吵时,我找到了运行此命令的临时解决方案:/etc/init.d/network restart && dhclient
. 但是,我不太明白该dhclient
命令究竟做了什么来解决这个问题?任何帮助表示赞赏。谢谢!
1 回答
从dhclient
DHCP 服务器请求 IP 地址(参考文献 1、参考文献 2)。
根据您的描述,似乎正在发生以下情况:
最初,您机器上的所有网络接口都没有分配 IP 地址。因此,您无法使用基于 IP 的协议连接到其他服务器。
ip address
您可以使用或验证没有分配 IP 地址ifconfig -a
。然后开始
dhclient
,它将使用 DHCP 请求 IP 地址。它通过向网络的广播地址发送 DHCP 发现消息来实现。有一个 DHCP 服务器在您的本地网络中运行(例如在您的路由器/网关上)。DHCP 服务器接收 DHCP 发现消息并为您的机器保留一个 IP 地址。DHCP 服务器将 DHCP 提供消息发送回您的机器(基于 DHCP 发现消息中包含的机器的链路层地址,即网络接口的 MAC 地址)。DHCP 提供消息告诉您的机器正在向它提供哪个 IP。
您的机器会收到 DHCP 提供消息并回复提供的 IP 地址的 DHCP 请求消息。DHCP 服务器回复 DHCP 确认消息,告诉您该 IP 现在可以被您的机器使用。您的网络接口已配置为分配的 IP 地址。您现在可以使用基于 IP 的协议连接到其他服务器。
与dhclient
功能相似dhcpd
,只是行为上有一些细微差别,例如,dhclient
如果没有找到广播接口,将立即退出,而dhcpd
将继续在后台运行,直到接口可用(参考)。
使用 DHCP 的替代方法是为您的机器分配一个静态 IP。