如果我理解正确的话。当您首次连接到学校网络时,DHCP 服务器将向您租用一个 IP 地址。如果我从 8 楼搬到 2 楼,那么我很可能连接到另一个路由器。如果租约尚未到期,新路由器如何确定我的租用 IP 是什么?如果我连接到子网 192.168.3.0,但租用了属于另一个子网的 IP,这会不会有点令人困惑?
答案1
当你请求 IP 地址时会发生以下情况:
# dhclient -v usb0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/usb0/9c:eb:e8:2c:46:66
Sending on LPF/usb0/9c:eb:e8:2c:46:66
Sending on Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0x663c9e23)
DHCPREQUEST of 192.168.11.91 on usb0 to 255.255.255.255 port 67 (xid=0x239e3c66)
DHCPOFFER of 192.168.11.91 from 192.168.11.1
DHCPACK of 192.168.11.91 from 192.168.11.1
bound to 192.168.11.91 -- renewal in 34984 seconds.
这发生在 Linux 中,对于以太网接口(称为usb0
),但其本质对于所有操作系统和 ll 接口都是相同的。
虽然从上面看不是完全明显的,但是接口会发送其 MAC 地址(每个网络接口卡 NIC 都拥有的通用、唯一地址)来尝试发现线路上(或者如果连接到 wifi 网络,则在无线电波上)是否存在 DHCP 服务器。
一旦收到肯定答复,它将请求它之前持有的 IP 地址(在上述情况下为 192.168.11.91)。这样做是为了将断线的影响降到最低:一些网络程序(如openvpn
、mosh
和 )在正确配置后ssh
能够在本地断线后无缝重新连接到其服务器,而重新获取相同的 LAN 地址将有助于实现这一点。
服务器检查所需的 IP 地址是否在其分配 IP 地址的范围内,检查该地址是否已被占用,如果已被占用,检查该地址是否分配给请求该地址的 MAC 地址。如果第一个问题的答案是是的第二个是不,那么你就可以得到你要求的 IP 地址。但如果答案是是的对于所有三个问题,正如我上面遇到的情况一样。