tools
DNS для тестировщика: как имя превращается в IP
Около 12 мин чтения
Короткий ответ на собеседовании
DNS, или Domain Name System, это распределённая иерархическая система, которая сопоставляет доменные имена с ресурсными записями. Чаще всего нас интересуют IP-адреса из записей A и AAAA. Клиент обычно обращается к рекурсивному резолверу, а тот при отсутствии кэша проходит цепочку root, TLD и authoritative DNS. Результат кэшируется на время TTL.
Зачем вообще нужен DNS
Приложения соединяются с узлами по IP-адресам, но людям удобнее работать с именами вроде api.example.com. DNS отделяет понятное имя сервиса от его текущего сетевого адреса.
Это даёт несколько возможностей:
- менять IP сервера, не меняя адрес для пользователя;
- направлять разные поддомены на разные сервисы;
- распределять трафик между несколькими адресами;
- описывать почтовые серверы, служебные узлы и правила безопасности;
- кэшировать ответы и снижать нагрузку на инфраструктуру.
До DNS соответствия имён и адресов хранились в общем файле HOSTS.TXT. По мере роста сети централизованное обновление файла перестало масштабироваться. Основы современного DNS описал Пол Мокапетрис в RFC 1034 и RFC 1035.
Как проходит DNS-запрос
Упрощённый путь для api.example.com выглядит так: