[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ustroystvo-pk-i-seti-kak-rabotaet-dns":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},233,"kak-rabotaet-dns",7,"ustroystvo-pk-i-seti","Устройство ПК и сети","🖥️","Как работает DNS?","\u003C!-- grade: junior\u002Fmiddle -->\n\n**DNS (Domain Name System)** — распределённая иерархическая система, преобразующая доменные имена (например, `www.google.com`) в IP-адреса (например, `142.250.74.68`).\n\n> **Аналогия из жизни:** DNS — это телефонная книга Интернета. Вместо того чтобы запоминать номер `142.250.74.68`, вы ищете по имени «google.com», а телефонная книга возвращает нужный номер.\n\n### Иерархия DNS\n\n```\n                    .  (корневой домен, root)\n                   \u002F|\\\n                  \u002F | \\\n              .com .ru .org   ...    ← TLD (Top-Level Domain)\n               |     |\n           google  yandex            ← Домены второго уровня (SLD)\n             |       |\n           www     mail              ← Поддомены (subdomains)\n```\n\n- **Корневые серверы** — 13 групп серверов (от `a.root-servers.net` до `m.root-servers.net`), знающие адреса серверов доменов верхнего уровня. Каждая «группа» — это множество серверов, распределённых по миру через anycast\n- **TLD (Top-Level Domain)** — домены верхнего уровня: `.com`, `.ru`, `.org`, `.net`\n- **Авторитативные серверы** — хранят фактические DNS-записи для конкретных доменов\n\n### Процесс разрешения DNS (пошагово)\n\nПример: браузер запрашивает `www.example.com`\n\n1. **Кэш браузера** — проверяется локальный кэш. Если запись есть и не устарела (TTL не истёк) — возвращается сразу\n2. **Кэш ОС** — проверяется системный кэш DNS + файл `hosts` (`\u002Fetc\u002Fhosts` или `C:\\Windows\\System32\\drivers\\etc\\hosts`)\n3. **Рекурсивный DNS-резолвер** — обычно DNS-сервер провайдера или публичный (Google `8.8.8.8`, Cloudflare `1.1.1.1`). Если ответ в его кэше — возвращается клиенту\n4. Если нет в кэше, резолвер начинает **итеративный запрос**:\n   - Спрашивает у **корневого сервера**: «Где `.com`?» → получает адрес TLD-сервера для `.com`\n   - Спрашивает у **TLD-сервера `.com`**: «Где `example.com`?» → получает адрес авторитативного сервера для `example.com`\n   - Спрашивает у **авторитативного сервера**: «Какой IP у `www.example.com`?» → получает ответ: `93.184.216.34`\n5. Резолвер **кэширует** результат (на время TTL) и возвращает его клиенту\n6. Браузер устанавливает TCP-соединение с полученным IP\n\n```\nБраузер → Кэш браузера (miss) → Кэш ОС (miss) → Рекурсивный резолвер (miss)\n    → Корневой сервер: \"Где .com?\" → TLD .com: \"Где example.com?\"\n    → Авторитативный: \"www.example.com = 93.184.216.34\"\n    ← Ответ кэшируется на каждом уровне (TTL)\n```\n\n### TTL (Time To Live)\n\n**TTL** — время в секундах, в течение которого DNS-запись может кэшироваться:\n\n| TTL | Значение | Когда использовать |\n|-----|----------|-------------------|\n| 60 с | Короткий | Перед миграцией, при частой смене IP |\n| 300 с (5 мин) | Средний | Баланс между скоростью и гибкостью |\n| 3600 с (1 ч) | Стандартный | Для стабильных записей |\n| 86400 с (24 ч) | Длинный | Для редко меняющихся записей |\n\n### Для Java-разработчика\n\n- JVM кэширует DNS-ответы. По умолчанию при наличии `SecurityManager` — навсегда для положительных ответов (successful lookups), 30 с без него. Это может быть проблемой при использовании load balancer с меняющимися IP\n- Настройка: `networkaddress.cache.ttl` и `networkaddress.cache.negative.ttl` в `$JAVA_HOME\u002Fconf\u002Fsecurity\u002Fjava.security`\n- `InetAddress.getByName(\"example.com\")` — резолвинг DNS в Java\n- При работе с AWS ELB\u002FALB или Kubernetes Service рекомендуется установить `networkaddress.cache.ttl=30` для корректной балансировки\n\n### Вывод\n\nDNS — критически важная инфраструктура Интернета, без которой невозможна работа с доменными именами. Понимание многоуровневого кэширования (браузер → ОС → резолвер) помогает диагностировать проблемы с доступностью ресурсов и правильно настраивать TTL при миграциях.\n\n> **На собеседовании:** могут попросить описать полный путь DNS-запроса. Важно упомянуть кэширование на каждом уровне, разницу между рекурсивным (клиент просит резолвер сделать всю работу) и итеративным (резолвер сам обходит серверы) запросами. Для Java — обязательно расскажите про кэширование DNS в JVM и возможные проблемы в облачной среде.","","junior",[15,16,17,18,19,20],"кэширование","доменные-имена","сети","dns","резолвинг","ttl",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":35,"featuredSnippetReady":36},"Как работает DNS — иерархия, рекурсивный запрос и кэширование — Gymterview","DNS преобразует доменные имена в IP. Иерархия: корневые серверы → TLD (.com, .ru) → авторитативные. Рекурсивный запрос через резолвер, кэширование по TTL.","Как работает DNS — от домена до IP-адреса","DNS — распределённая иерархическая система. Запрос: кэш браузера → кэш ОС → резолвер → корневой сервер → TLD → авторитативный. Результат кэшируется по TTL.",[29,30,31,32,33,34],"DNS как работает","DNS резолвинг","рекурсивный DNS запрос","DNS иерархия","TTL DNS","DNS кэширование","DNS — распределённая иерархическая система, преобразующая доменные имена в IP-адреса. Процесс: кэш браузера → кэш ОС → рекурсивный резолвер (8.8.8.8) → итеративный запрос к корневому серверу → TLD-серверу (.com) → авторитативному серверу домена. Результат кэшируется на время TTL. JVM кэширует DNS-ответы (настройка networkaddress.cache.ttl).",true]