Когда я запускаю программу "dhcptest.exe" (на Win7), я получаю предупреждение брандмауэра. Блокировка создает два новых правила для входящих подключений, блокирующих TCP и UDP. (без исходящих правил). Когда я запускаю тест, он отправляет запрос DHCP (не удивительно) и получает ответ DHCP (WTF?). Ответ DHCP явно поступает в исполняемый файл, который сообщает об этом.

Конечно, существует правило для входящих запросов DHCP, которое разрешает клиенту DHCP получать ответы DHCP, но клиент не принимает новые предложения DHCP - и в любом случае это не имеет значения, когда я отключаю это правило, программа dhcptest.exe по-прежнему работает. сообщить о предложении DHCP.

Как почему? Предложения DHCP - это широковещательный протокол без установления соединения, поэтому он не должен входить в соединение, созданное исходящим запросом.

Что мне не хватает?

1 ответ1

1

Программа сначала начинает прослушивать порт 68. Это вызывает сообщение брандмауэра. Сообщения Windows показывают только о «серверах». Исходящие соединения не затрагиваются.

Затем, когда вы решите отправить запрос DHCP, будет создана ассоциация. Эта ассоциация позволяет ответам достигать программы.

Windows замечает, что программа отправляет на широковещательный адрес и поэтому позволяет получать ответы. В противном случае программа никогда не сможет выполнить обнаружение служб в локальной сети.

UDP действительно без соединения. Однако отслеживание «соединения» все еще требуется во многих случаях, таких как межсетевые экраны с отслеживанием состояния или NAT. Когда пакет отправляется, создается временная ассоциация. Это истекает через некоторое время без движения.

Из статьи «Как работает брандмауэр Windows» (выделено мое):

Поскольку UDP является протоколом без установления соединения и не имеет порядковых номеров или флагов, он не имеет механизма для завершения и закрытия соединения. Следовательно, время ожидания для соединений UDP намного короче, чем для соединений TCP. Время ожидания для установленных, но неактивных UDP-соединений составляет 60 секунд. Другими словами, если установленное соединение UDP неактивно в течение 60 секунд, запись таблицы состояний для этого соединения удаляется из таблицы сопоставления NAT. Это относится к UDP-соединениям на всех портах.

Есть некоторые исключения в 60-секундном таймауте для UDP-соединений. Когда компьютер отправляет многоадресное или широковещательное сообщение, брандмауэр Windows ожидает до 3 секунд одноадресного ответа. По сути, запись в таблице состояний для многоадресных или широковещательных соединений поддерживается до 3 секунд; если многоадресное или широковещательное соединение неактивно в течение 3 секунд (то есть ответа нет), то запись таблицы состояний удаляется из таблицы сопоставления NAT. Многоадресные сообщения DHCP (Dynamic Host Configuration Protocol) представляют собой особый случай и освобождаются от 3-секундного тайм-аута.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .