Классический DNS использует UDP и TCP на порту 53. При получении UDP-ответа с флагом TC клиент обычно повторяет запрос через TCP. EDNS позволяет сообщить допустимый размер UDP-сообщения, поэтому 512 байт — не универсальный предел. TCP может использоваться сразу; полная передача зоны AXFR требует TCP.
Какой порт использует DNS и когда вместо UDP применяется TCP?
DNS работает не только через UDP. Усечённый ответ, EDNS, передача зон и возможность сразу выбрать TCP; другие транспорты имеют отдельные правила.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
DNS — распределённая система записей об именах: адресов, почтовых серверов, делегирования и других данных. Для обычного незашифрованного обмена сервер слушает UDP и TCP на порту 53.
UDP позволяет обменяться сообщениями без установки TCP-соединения. В классическом формате без EDNS размер DNS-сообщения через UDP ограничен 512 байтами. EDNS позволяет клиенту объявить больший допустимый размер, но это не отменяет ограничений сети и риска фрагментации.
Если ответ не помещается в допустимый размер, сервер может вернуть усечённое сообщение с флагом TC. Клиент повторяет запрос по TCP, чтобы получить полный ответ. Поддержка TCP не является исключительно аварийной опцией: его можно выбрать сразу и использовать соединение для нескольких запросов. Это описано в RFC 7766.
Полная передача зоны AXFR использует TCP. Не стоит переносить это утверждение на любой механизм обновления или передачи DNS-данных без уточнения протокола.
На собеседовании важно не говорить «всё больше 512 байт всегда TCP»: при EDNS более крупный UDP-ответ допустим. И не любой тайм-аут автоматически означает переход на TCP — это зависит от реализации резолвера и политики повторов.
DNS over TLS и DNS over HTTPS — отдельные защищённые транспорты; их не следует описывать как обычный UDP/53.