Что такое система DNS?

Ответ

DNS (Domain Name System) — это распределённая иерархическая система, выполняющая преобразование (резолвинг) удобных для человека доменных имён (например, google.com) в машиночитаемые IP-адреса (например, 142.250.185.78), необходимые для маршрутизации сетевых пакетов.

Как работает разрешение имени (на примере www.example.com):

  1. Браузер проверяет локальный кэш и файл hosts.
  2. Запрос отправляется резолверу (обычно провайдера).
  3. Резолвер запрашивает корневые DNS-серверы (.), которые указывают на серверы домена верхнего уровня .com.
  4. Серверы .com указывают на авторитативные серверы для example.com.
  5. Авторитативный сервер возвращает IP-адрес для www.example.com.
  6. Резолвер кэширует ответ и передаёт его браузеру.
Ключевые типы DNS-записей (RR): Тип Назначение Пример
A Сопоставляет имя с IPv4-адресом example.com. IN A 93.184.216.34
AAAA Сопоставляет имя с IPv6-адресом example.com. IN AAAA 2606:2800:220:1:248:1893:25c8:1946
CNAME Создаёт псевдоним для другого имени www.example.com. IN CNAME example.com.
MX Указывает почтовый сервер для домена example.com. IN MX 10 mail.example.com.
NS Указывает авторитативные DNS-серверы для домена example.com. IN NS ns1.example.com.
TXT Содержит текстовые данные (часто для проверок) example.com. IN TXT "v=spf1 ..."

Важность для архитектуры: DNS обеспечивает масштабируемость, отказоустойчивость (благодаря распределённости) и гибкость (легко менять IP-адреса серверов).

Ответ 18+ 🔞

А, слушай, ну это же как телефонный справочник для интернета, только в миллиард раз сложнее и без единого толстого тома на полке! Представь, ты каждый раз, когда пишешь в браузере «youtube.com», вместо того чтобы сразу получить контент, должен был бы зубрить цифры типа «142.250.185.78». Да ты б с ума сошел на втором сайте, ёпта! Вот DNS — это и есть тот самый волшебный переводчик с человеческого на машинный.

Как эта магия, блядь, происходит (на примере www.example.com):

  1. Твой комп или телефон сначала, как хитрая жопа, проверяет свою память: «А не спрашивал ли я про этот адрес только что?». Смотрит в кэш и в файлик hosts (это такой местный начальник, который может всё перебить).
  2. Если не нашел — начинает ныть. Шлёт запрос резолверу (обычно это сервер твоего интернет-провайдера). Это как позвонить в справочную: «Братан, где тут example.com?».
  3. Резолвер, если сам не знает, идёт выше. Прямо к корневым DNS-серверам (это точка . в конце адреса, которую мы не пишем). Те, не моргнув глазом, тычут пальцем: «Иди к тем, кто отвечает за .com, мудак».
  4. Резолвер бежит к серверам домена .com. Те, покопавшись в картотеке, выдают: «А, example.com? Вон ихние авторитативные сервера, спрашивай у них, они всё знают».
  5. И вот, наконец, авторитативный сервер для example.com с важным видом выдаёт священный грааль: IP-адрес для www.example.com.
  6. Резолвер, довольный как слон, кэширует этот ответ (чтобы не бегать по всей цепочке каждый раз) и отдаёт его твоему браузеру. Всё, можно идти грузить сайт. Ебать, какая беготня!

Главные типы записей в этой конторе (RR — Resource Records): Вот смотри, это как разные бланки в этой справочной:

Тип Для чего нужен (простыми словами) Пример (чтоб не обосраться)
A Основная привязка имени к обычному IP-адресу (IPv4). example.com. IN A 93.184.216.34
AAAA То же самое, но для длинного и модного IPv6-адреса. example.com. IN AAAA 2606:2800:220:1:248:1893:25c8:1946
CNAME Псевдоним. Говорит: «Этот адрес — просто клон, ищи оригинал вот там». www.example.com. IN CNAME example.com.
MX Указатель, куда нести почту для этого домена. Без него письма будут лететь в /dev/null. example.com. IN MX 10 mail.example.com.
NS Указующий перст: «Вот парни, которые за этот домен главные, спрашивай у них». example.com. IN NS ns1.example.com.
TXT Просто текстовая записка. Часто туда всякую хуйню для проверок пишут, вроде ключей безопасности. example.com. IN TXT "v=spf1 ..."

А почему это всё, блядь, так гениально устроено? Да потому что иначе интернет бы накрылся медным тазом на третьем году жизни! DNS — это и есть та самая масштабируемость: серверов дохуя, они по всему миру разбросаны, если один лег — запрос к другому пойдет. Отказоустойчивость, ёпта! И гибкость — сменил хостинг, поменял IP в записи А, и весь мир через какое-то время уже ходит на новый адрес, даже не заметив подмены. Хуй с горы, а не система!