DNS (Domain Name System) — это иерархическая и распределенная система, которая связывает доменные имена с соответствующими IP-адресами. Серверы DNS играют ключевую роль в этом процессе, и существует несколько типов серверов, каждый из которых выполняет (или не выполняет) определенные функции.
Типы серверов DNS:
- Корневые серверы (Root servers). Эти серверы находятся на вершине иерархии DNS и содержат информацию о топ-уровне доменов (top-level domains — TLDs) вроде .com, .org, .net и других. Корневые серверы имен контролируются некоммерческой организацией под названием ICANN. Хотя существует 13 корневых серверов DNS, это не означает, что в корневой системе есть только 13 машин. Существует 13 типов корневых серверов имен, но существует несколько копий каждого из них по всему миру, которые используют Anycast маршрутизацию для обеспечения быстрых ответов. Если сложить все экземпляры корневых серверов имен, получится 632 разных сервера (по состоянию на октябрь 2018 года).
- TLD-серверы (Top-Level Domain servers). Сервер имен TLD хранит сведения обо всех доменных именах с общим доменным расширением, например, .com, .net или другие, после последней точки в url-адресе. Например, .com сервер содержит информацию для каждого сайта, который заканчивается «.com». Если пользователь искал google.com после получения ответа от корневого сервера имен, то рекурсивный резолвер отправил бы запрос .com в DNS, который мог бы ответить, указав на авторитетный сервер имен для этого домена.
- Авторитетные серверы имен (Authoritative servers). Авторитетные серверы содержат точную информацию о доменах и соответствующих им IP-адресах. Они управляются организациями или индивидуумами, которые регистрируют домены. Когда рекурсивный резолвер получает ответ от сервера имен TLD, этот ответ направляет резолвер на авторитетный сервер имен. Этот сервер обычно является последним шагом розольвера в пути для IP-адреса.
- Кэширующие DNS-серверы (Caching DNS servers) или резолверы. Это серверы, которые используются для выполнения DNS-запросов от клиентов. Они хранят временные копии результатов запросов для ускорения будущих запросов. Обычно ваш интернет-провайдер предоставляет кэширующий DNS-сервер. Большинство пользователей интернета используют рекурсивный резолвер, предоставляемый их провайдером. Например для Беларуси это DNS от BYFLY для Беларуси. Но возможны и другие варианты, например, Cloudflare 1.1.1.1.
Принцип работы серверов DNS:
- Пользователь вводит доменное имя (например, example.com) в веб-браузере.
- Запрос отправляется на кэширующий DNS-сервер (резолвер), который проверяет свою локальную кэш-память на наличие соответствующего IP-адреса.
- Если IP-адрес не найден в кэше, резолвер отправляет запрос к корневому серверу.
- Корневой сервер перенаправляет запрос к соответствующему TLD-серверу (например, .com).
- TLD-сервер перенаправляет запрос к авторитативному серверу для домена второго уровня (например, example.com).
- Авторитативный сервер возвращает IP-адрес, связанный с доменом, кэширующему DNS-серверу.
- Резолвер кэширует IP-адрес и передает его веб-браузеру пользователя.
- Веб-браузер устанавливает соединение с сервером по найденному IP-адресу и запрашивает веб-страницу.
- Сервер отправляет веб-страницу веб-браузеру, который отображает ее пользователю.
Важно отметить, что кэширующие DNS-серверы имеют временные хранилища (TTL, Time-to-Live) для каждой записи. Это означает, что записи удаляются из кеша по истечении определенного времени, и новые запросы к этим записям инициируют новый процесс разрешения.
В целом, работа серверов DNS обеспечивает быструю (скорость DNS можно измерить) и надежную коммуникацию между устройствами в сети Интернет, преобразуя понятные человеку доменные имена в машинные IP-адреса.