Если я правильно понял. Сервер 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 для интерфейса Ethernet (называемого usb0
), но суть его одинакова для всех операционных систем и всех интерфейсов.
Хотя это не совсем очевидно из вышесказанного, интерфейс отправляет на свой MAC-адрес (универсальный, уникальный адрес, которым обладает каждая сетевая интерфейсная карта), когда он пытается обнаружить, существует ли сервер DHCP на проводе (или на радиоволнах, если он подключен к сети Wi-Fi).
Получив положительный ответ, он запросит предыдущий IP-адрес (192.168.11.91, в приведенном выше случае). Это сделано для того, чтобы минимизировать влияние отключений: некоторые сетевые программы, такие как openvpn
, mosh
и правильно настроенный ssh
, способны беспрепятственно подключаться к своим серверам после локального отключения, и повторное получение того же адреса локальной сети будет способствовать сделать это возможным
Сервер проверяет, находится ли требуемый IP-адрес в диапазоне, который он имеет для выдачи IP-адресов, взят ли адрес и, если он взят, назначен ли он тому же MAC-адресу, который его запрашивает. Если на первый вопрос ответ « да», а на второй - « нет», то вы можете получить запрошенный IP-адрес. Но вы также можете получить его, если ответ « да» на все три вопроса, как это случилось со мной выше.