Подтвердить что ты не робот

Почему предложение DHCP и Ack транслируются?

Почему сервер не может использовать IP-адрес назначения 0.0.0.0, который используется в исходном IP-адресе DHCP Discover и Request? Он может использовать MAC-адрес клиента, извлеченного из DHCP Discover и Request, для направления кадра на соответствующую клиентскую машину.

4b9b3361

Ответ 1

Одноадресный или широковещательный выбор указан в DHCP RFC 2131:

Если поле "giaddr" в сообщении DHCP от клиента отличное от нуля,    сервер отправляет любые возвращаемые сообщения на порт "DHCP-сервер" на    Ретранслятор BOOTP, адрес которого отображается в 'giaddr'. Если "giaddr"    поле равно нулю, а поле 'ciaddr' отличное от нуля, тогда сервер    одноадресные сообщения DHCPOFFER и DHCPACK на адрес в 'ciaddr'.    Если "giaddr" равен нулю, а "ciaddr" равен нулю, а широковещательный бит    set, то сервер передает сообщения DHCPOFFER и DHCPACK    0xffffffff. Если бит широковещательной передачи не установлен, а "giaddr" равен нулю и    'ciaddr' равно нулю, тогда сервер одноадресный DHCPOFFER и DHCPACK    сообщения на адрес аппаратного обеспечения клиента и адрес "yiaddr". В    все случаи, когда "giaddr" равен нулю, сервер передает любой DHCPNAK    сообщений в 0xffffffff.

с ciaddr и giaddr:

ciaddr        4  Client IP address; only filled in if client is in BOUND, RENEW or REBINDING state and can respond to ARP requests.
giaddr        4  Relay agent IP address, used in booting via a relay agent.

Таким образом, DHCP-сервер выбирает трансляцию или не соответствует текущему состоянию клиента (в основном, если он уже имеет IP-адрес или нет) и, соответственно, отправителю сообщения, если он ретранслятор или просто клиент.

Unicast DHCPOFFER

В этом случае мой сервер DCHP выбрал одноадресную рассылку DHCPOFFER, потому что у моей машины уже был IP-адрес, и у меня нет агента ретрансляции в локальной сети.

EDIT:

И никто не может использовать IP-адрес 0.0.0.0 в качестве адреса назначения. Как указано в IPv4 RFC 5735:

0.0.0.0/8 - Адреса в этом блоке ссылаются на исходные хосты на "this"   сеть. Адрес 0.0.0.0/32 может использоваться как адрес источника для этого    хост в этой сети; другие адреса в пределах 0.0.0.0/8 могут использоваться для    обратитесь к указанным хостам в этой сети ([RFC1122], раздел    3.2.1.3).

Ответ 2

Из RFC 2131, стр. 24:

Обычно DHCP-серверы и ретрансляторы BOOTP пытаются доставить DHCPOFFER, DHCPACK и DHCPNAK сообщения непосредственно клиенту, используя доставка uicast. IP-адрес назначения (в заголовке IP) установлен на адрес DHCP 'yiaddr', а адрес назначения уровня канала связи установите адрес DHCP 'chaddr'. К сожалению, некоторые клиенты реализации не могут получать такие одноадресные IP-дейтаграммы до тех пор, пока реализация была настроена с действительным IP-адресом (что приводит к тупику, в котором IP-адрес клиента не может быть до тех пор, пока клиент не будет настроен с IP-адресом).

Клиент, который не может получать одноадресные IP-датаграммы до своего программное обеспечение протокола настроено с IP-адресом СЛЕДУЕТ установить бит BROADCAST в поле "flags" равен 1 в любом DHCPDISCOVER или Сообщения DHCPREQUEST, отправленные клиентом. Бит BROADCAST обеспечит подсказка для сервера DHCP и агента ретрансляции BOOTP для трансляции любых сообщения клиенту в клиентской подсети.

Клиент, который может получать одноадресные IP-датаграммы до того, как его программное обеспечение протокола сконфигурирован СЛЕДУЕТ очистить бит BROADCAST до 0. BOOTP в документе о разъяснениях обсуждаются последствия использования BROADCAST бит.