Система доменных имён
Система доменных имён (DNS) — это распределённый каталог Интернета, преобразующий удобочитаемые доменные имена в IP-адреса, необходимые сети, посредством иерархии делегированных авторитетных серверов и повсеместного кэширования.
Definition
Система доменных имён — это иерархическая, распределённая служба именования, которая сопоставляет доменные имена с IP-адресами и другими записями, реализованная сетью делегированных авторитетных серверов имён и кэширующих резолверов.
Scope
Эта тема охватывает DNS: её иерархическое пространство имён и зоны; роли корневых серверов, серверов доменов верхнего уровня и авторитетных серверов имён; рекурсивное и итеративное разрешение; ресурсные записи (такие как A, AAAA, NS, MX и CNAME); кэширование и значения времени жизни (time-to-live), которые обеспечивают масштабируемость системы; а также зависимость DNS от UDP для большинства запросов. Также отмечается роль DNS, выходящая за рамки простого поиска, например, в распределении нагрузки и перенаправлении CDN. Исключаются прикладные протоколы и системы доставки контента, которые от неё зависят.
Core questions
- Почему Интернету нужна система именования, отдельная от IP-адресов?
- Как пространство имён DNS иерархически организовано в зоны и делегирования?
- Как рекурсивные и итеративные запросы разрешают имя в адрес?
- Как кэширование и значения времени жизни делают DNS масштабируемой и быстрой?
- Какие типы ресурсных записей использует DNS и что каждый из них представляет?
Key concepts
- иерархия доменных имён
- зоны и делегирование
- корневые, TLD и авторитетные серверы
- рекурсивное и итеративное разрешение
- ресурсные записи (A, AAAA, NS, MX, CNAME)
- кэширование и время жизни (TTL)
- DNS через UDP
- распределение нагрузки на основе DNS
Key theories
- Иерархическое, делегированное именование
- DNS разделяет пространство имён на дерево доменов и делегирует полномочия по поддеревьям серверам имён различных организаций, так что ни одна сущность не должна знать все имена, а администрирование распределено.
- Разрешение и кэширование
- Резолвер отвечает на запрос, следуя иерархии от корневых до авторитетных серверов, затем кэширует результат на время его жизни; агрессивное кэширование означает, что большинство запросов никогда не достигают авторитетных серверов, что крайне важно для масштабируемости DNS.
Clinical relevance
DNS является критически важной зависимостью почти каждого онлайн-взаимодействия: просмотр веб-страниц, электронная почта и подключения приложений начинаются с поиска имени, поэтому производительность и доступность DNS формируют пользовательский опыт, а сбои DNS каскадно распространяются на все службы. DNS также используется для направления пользователей к ближайшим серверам для доставки контента и балансировки нагрузки, а её безопасность (через DNSSEC и зашифрованный DNS) является актуальной проблемой.
History
До появления DNS имена хостов сопоставлялись с адресами с помощью одного общего файла, который не масштабировался. Пол Мокапетрис разработал Систему доменных имён в середине 1980-х годов (RFC 1034 и 1035, 1987) как распределённую, иерархическую альтернативу. С тех пор DNS значительно выросла, добавив типы записей, интернационализированные имена, расширения безопасности (DNSSEC) и зашифрованный транспорт, оставаясь при этом архитектурно верной своему первоначальному дизайну.
Debates
- Зашифрованный DNS против операционной видимости
- Шифрование DNS-запросов (DNS over HTTPS/TLS) защищает конфиденциальность пользователей от наблюдателей в сети, но также снижает видимость для сетевых операторов, используемую для фильтрации и устранения неполадок, и может централизовать разрешение у нескольких крупных провайдеров; обсуждается компромисс между конфиденциальностью и контролем.
Key figures
- Paul Mockapetris
- James F. Kurose
- Keith W. Ross
Related topics
Seminal works
- rfc1034
- rfc1035
- kurose2021
Frequently asked questions
- Что делает DNS?
- DNS преобразует удобное для человека имя, такое как example.com, в IP-адрес, который необходим сети для маршрутизации пакетов к нужному серверу. Это телефонная книга Интернета, и она выполняет этот поиск через распределённую иерархию серверов с интенсивным кэшированием, что позволяет ей масштабироваться на весь Интернет.
- Почему DNS распределена, а не является одним большим сервером?
- Один сервер не смог бы справиться с объёмом запросов, был бы единой точкой отказа и не мог бы администрироваться всеми организациями мира. Вместо этого DNS делегирует полномочия по частям пространства имён множеству серверов и широко кэширует результаты, так что нагрузка и контроль распределены, а система устойчива.