Программа сначала начинает прослушивать порт 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-секундного тайм-аута.