Ответ
DNS использует порт 53 по умолчанию для обоих транспортных протоколов:
- UDP/53 — для большинства стандартных запросов. Это быстрее из-за отсутствия накладных расходов на установку соединения.
- TCP/53 — используется в случаях, когда:
- Размер ответа превышает 512 байт (традиционное ограничение для UDP).
- Выполняется передача зоны (AXFR/IXFR).
- Требуется повышенная надёжность (например, при использовании DNSSEC).
Пример запроса A-записи через UDP с помощью dig:
dig @8.8.8.8 example.com A +short
Пример принудительного использования TCP:
dig @8.8.8.8 example.com A +tcp
Почему два протокола? UDP обеспечивает скорость для простых запросов, а TCP гарантирует доставку больших или критически важных данных, что делает DNS надёжным и масштабируемым.
Ответ 18+ 🔞
А, ну это же про DNS, про эту древнюю магию, которая из «гугл точка ком» делает цифры, понятные железякам! Система доменных имён, мать её! И у неё, как у любого уважающего себя интернет-механизма, есть свои порты и протоколы, без которых нихуя не работает.
Так вот, слушай сюда, вся соль в порту 53. Это как её родная квартира, дверь всегда одна и та же. Но заходить в эту дверь она может двумя разными способами, как будто то пешком, то на лифте.
UDP/53 — это её основной, похуистичный режим. Быстро, без церемоний. Запрос — ответ, и все свободны. Как в булочную сходить: «Дай батон», получил — ушёл. Нахуй лишние рукопожатия и «как ваше ничего»? Именно так и работает 99% всех запросов в интернете. Быстро, потому что накладных расходов — ноль ебать.
TCP/53 — это уже для серьёзных разговоров. Включается, когда:
- Ответ такой здоровый, что в стандартный UDP-пакет не влезает (больше 512 байт, традиционное ограничение, ёпта). Представь, ты просишь батон, а тебе выкатывают целую тележку хлеба. По UDP её не передашь, нужен надёжный транспорт — TCP.
- Идёт передача всей зоны целиком (этот процесс называется AXFR/IXFR). Это как скопировать всю библиотеку, а не одну книжку.
- Когда требуется овердохуищенская надёжность, например, при использовании DNSSEC (это когда подписи криптографические, чтоб никто не подменил ответ). Тут уж никак нельзя потерять ни бита.
Вот, смотри, как это на практике выглядит, если тыкнуть в консоль:
Стандартный быстрый запрос по UDP (как все и делают):
dig @8.8.8.8 example.com A +short
А вот если приказать ей использовать TCP (например, для теста или когда что-то глючит):
dig @8.8.8.8 example.com A +tcp
А почему, собственно, два протокола? Да всё гениально и просто, как хуй с горы! UDP — для скорости, для ежедневной рутины, чтобы миллиарды запросов в секунду летали как надо. А TCP — это аварийный или тяжеловесный вариант, когда нужно гарантированно доставить большой или важный груз, не растеряв по дороге ни одного пакета. Вместе они и делают DNS такой, знаешь ли, живучей и масштабируемой системой, на которой, блядь, весь интернет и держится. Ёперный театр, а не система!