2009-11-24 4 views
8

Если клиент не прослушивает 68-й порт, когда DHCP-сервер получает запрос, он может отправить его на адрес, откуда он получил запрос (с эфемерным портом, выбранным клиентом во время отправки), то почему протокол указывает клиент прослушивать порт 68?Почему клиент DHCP прослушивает порт 68?

ответ

1

Потому что это в RFC (запрос комментариев), который указывает, как ведет себя DHCP. RFC 2131 - это документ, определяющий, как должен себя вести клиент и сервер DHCP.

Дополнительную информацию о DHCP см. В разделе here (раздел 4.1). См. here для получения информации о том, что такое RFC.

+5

Вопрос гласит: «Почему протокол указывает, что клиент прослушивает порт 68?», Поэтому то, что они задают, кажется более «почему RFC говорит об этом?». –

+1

DHCP основан на более раннем протоколе BOOTP, который использовал порты 67 (сервер) и 68 (клиент).Почему BOOTP использовал эти порты, вероятно, потому, что они не использовались ни одним из других протоколов в то время (SMTP использует 25, FTP использует 21 и т. Д.). Хотя хост обычно имеет один IP-адрес, он может иметь тысячи портов. Назначая определенные номера портов конкретным протоколам, несколько сторон могли разрабатывать стандартные службы и клиенты. Пока вы слушаете правильный порт, вы можете написать свой собственный DHCP-клиент или сервер. – TLiebe

+1

Хорошо, нет технической причины? – avd

16

Основная причина заключается в том, что DHCP-сервер может транслировать «предложение DHCP» на уровне Mac, вместо того, чтобы отправлять его одноадресной рассылке на адрес mac, на который он получил запрос. Если порт не был постоянным, некоторые хосты, которые случайно слушают этот же случайный порт, будут принимать пакет на уровень 5 - прикладной уровень. Другими словами, приложение получит сообщение от совершенно другого приложения, а не из-за здоровой ситуации.

+0

Этот ответ не кажется отличным от 3 лет назад. Если вы хотите что-то добавить, подумайте о том, чтобы предложить отредактировать существующий, принятый ответ :) –

+3

Спасибо, это на самом деле правильный ответ. – Parzifal

+0

Релевантный вопрос: могу ли я безопасно отключить брандмауэр от этого порта в обычной настройке, когда клиент DHCP используется для получения IP-адресов? То есть является * может * актуальным в реальном мире? – Zero3

1

Я просто пришлось столкнуться с такой же вопрос сам, и после некоторых исследований я обнаружил следующее на RFC 2131, который описывает протокол DHCP, в соответствии с разделом 1.6 Цели разработки:

  • DHCP должен предоставлять услуги существующие клиенты BOOTP

Также на RFC 951, которые описывают протокол BOOTP, можно найти следующее:

UDP-заголовок содержит номера портов источника и назначения. Протокол BOOTP использует два зарезервированных номера порта: «BOOTP client» (68) и «BOOTP server» (67). Клиент отправляет запросы с использованием «BOOTP server» в качестве порта назначения; это обычно широковещательная передача. Сервер отправляет ответы с использованием «BOOTP client» в качестве порта назначения; в зависимости от оборудования ядра или драйвера на сервере, это может быть или не может быть широковещательным (это объясняется далее в разделе под заголовком «Проблемы курицы/яйца» ниже). Причина, по которой используются два зарезервированных порта , заключается в том, чтобы избежать «пробуждения» и планирования сервера BOOTP , когда загрузочный запрос должен быть передан клиенту. Поскольку сервер и другие хосты не будут прослушивать порт «BOOTP client», , любые такие входящие широковещательные передачи будут отфильтрованы на уровне ядра . Мы не могли просто позволить клиенту выбрать «случайный» порт для поля порта источника UDP; так как ответ сервера может быть , случайный номер порта может путать другие хосты , которые прослушивали этот порт.

Так что ответ на вопрос исходит из вышесказанного. Клиенты DHCP должны использовать UDP-порт 68, чтобы DHCP мог быть совместим с протоколом BOOTP, а для протокола BOOTP требуется конкретный порт для клиента, поскольку BOOTPREPLIES можно транслировать, и если для клиента был выбран случайный порт , это может привести к путанице других хостов, прослушивающих один и тот же порт.

Смежные вопросы