\n\n\n\n\n// Каждый домен требует отдельного DNS запроса!\n\n// Хорошо - минимум доменов + prefetching\n\n\n```\n\n### Заключение\n\nБраузер определяет DNS сервер через иерархию: локальный кеш браузера -> кеш ОС -> файл hosts -> системные DNS серверы (провайдера или настроенные вручную). Понимание этого процесса помогает оптимизировать производительность сайта, особенно через DNS prefetching и выбор провайдера с быстрым DNS разрешением. Медленное DNS может быть одной из скрытых причин медленной загрузки сайта, что часто упускается при оптимизации.\n","dateCreated":"2026-04-02T22:20:51.488148","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

К браузер определяет, к какому DNS обращаться

2.0 Middle🔥 171 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как браузер определяет, к какому DNS обращаться?

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

Иерархия DNS серверов

Когда ты вводишь в браузер адрес example.com, начинается цепочка запросов:

1. Браузер проверяет свой кеш
2. Если не найдено - спрашивает операционную систему
3. Если не найдено - спрашивает рекурсивный резолвер (обычно провайдера)
4. Рекурсивный резолвер спрашивает Root nameserver
5. Root nameserver указывает на TLD nameserver (.com)
6. TLD nameserver указывает на authoritative nameserver
7. Authoritative nameserver возвращает IP-адрес

1. Локальный кеш браузера

Когда ты первый раз посещаешь сайт, браузер кеширует IP-адрес:

// Примерный TTL (Time To Live) — время хранения в кеше
// Может быть от нескольких минут до часов

// Посещаешь google.com
// Браузер: "Хм, 142.250.185.46 — запомню на несколько часов"

// Через 10 минут посещаешь google.com снова
// Браузер: "Я уже знаю, что google.com это 142.250.185.46"
// DNS запрос не нужен!

2. Кеш операционной системы

Если в кеше браузера нет, он спрашивает операционную систему:

# Windows - посмотреть DNS кеш
ipconfig /displaydns

# macOS/Linux - посмотреть DNS кеш
sudo dscacheutil -cachedump -entries

3. Локальный файл hosts

Операционная система проверяет файл hosts:

# /etc/hosts (macOS, Linux)
# C:\Windows\System32\drivers\etc\hosts (Windows)

127.0.0.1       localhost
192.168.1.100   mysite.local
8.8.8.8         google.com

Это приоритет выше, чем DNS:

# На локальной машине
8.8.8.8 localhost

# Теперь когда откроешь localhost в браузере,
# он перенаправится на google.com!

4. DNS-серверы провайдера

Если информация не найдена локально, браузер использует DNS-серверы, которые настроены в операционной системе.

Как браузер узнаёт, какие DNS использовать?

# Windows
nslookup

# macOS/Linux
cat /etc/resolv.conf

# Типичный результат:
# nameserver 192.168.1.1 (маршрутизатор)
# nameserver 8.8.8.8 (Google Public DNS)
# nameserver 1.1.1.1 (Cloudflare DNS)

5. Настройка DNS в браузере

Современные браузеры поддерживают DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT):

// Firefox, Chrome и Edge позволяют:
// 1. Использовать системные DNS
// 2. Использовать QUIC/HTTP3 для запросов
// 3. Использовать зашифрованный DNS

Как включить кастомный DNS в Chrome:

Параметры -> Безопасность и приватность -> 
Безопасность -> Использовать защищенный DNS

Процесс DNS разрешения (подробно)

1. USER: "Браузер, дай мне example.com"

2. BROWSER: "Проверю кеш... нет. Спросу систему"

3. OS: "Проверю /etc/hosts... нет. Спросу DNS"

4. OS -> DNS Resolver (8.8.8.8 или провайдер)

5. DNS Resolver: "Спросю root nameserver"
   
6. Root Nameserver: "Это .com домен? Вот адрес TLD сервера"
   
7. TLD Nameserver: "Это example.com? Вот адрес authoritative сервера"
   
8. Authoritative Nameserver: "example.com это 93.184.216.34"
   
9. ДНС Резолвер кеширует результат
   
10. BROWSER: "Спасибо! Кешу на несколько часов"
    
11. BROWSER -> TCP Connection на 93.184.216.34:80/443

Практический пример из JavaScript

// Браузер делает это за кулисами
async function fetchData() {
  // 1. Браузер разрешает DNS
  // example.com -> 93.184.216.34
  
  // 2. Браузер создаёт TCP соединение
  // 3. Отправляет HTTP запрос
  
  const response = await fetch('https://example.com/api/data');
  const data = await response.json();
  return data;
}

// Если разрешение домена занимает время,
// это видно в DevTools (DNS lookup)

DevTools: смотрим DNS времени

# Откройте Developer Tools -> Network
# Посмотрите колонки:
# - Waiting (TTFB) — включает DNS lookup time
# - Queuing
# - DNS Lookup — время разрешения
# - Initial Connection — время установки TCP
# - TLS Handshake — время установки HTTPS

Типичные DNS серверы

Google Public DNS:
  8.8.8.8
  8.8.4.4

Cloudflare DNS:
  1.1.1.1
  1.0.0.1

Яндекс DNS:
  77.88.8.8
  77.88.8.2

OpenDNS:
  208.67.222.222
  208.67.220.220

Проблемы с DNS

1. Медленное разрешение

// Может быть причиной slow page load
// Решение: использовать faster DNS provider
// или DNS prefetching

2. DNS кеширование может устаревать

<!-- Если IP адрес сайта изменился, -->
<!-- браузер может использовать старый IP -->
<!-- пока кеш не истечет (TTL) -->

<!-- Решение: очистить DNS кеш браузера -->

3. DNS hijacking

// Вредоносный маршрутизатор может
// перенаправить запрос на поддельный сайт
// Решение: использовать DoH/DoT для зашифрованных запросов

DNS Prefetching - оптимизация производительности

<!-- Браузер предварительно разрешает DNS -->
<!-- ДО того, как пользователь кликнет -->

<link rel="dns-prefetch" href="//example.com">
<link rel="preconnect" href="//cdn.example.com">

<!-- preconnect - ещё сильнее, устанавливает соединение полностью -->

Практический пример: когда DNS замедляет сайт

// Плохо - множество разных доменов
<link href="https://fonts.googleapis.com/...">
<script src="https://analytics.google.com/..."></script>
<img src="https://cdn1.example.com/...">
<img src="https://cdn2.example.com/...">
<img src="https://cdn3.example.com/...">

// Каждый домен требует отдельного DNS запроса!

// Хорошо - минимум доменов + prefetching
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//cdn.example.com">

Заключение

Браузер определяет DNS сервер через иерархию: локальный кеш браузера -> кеш ОС -> файл hosts -> системные DNS серверы (провайдера или настроенные вручную). Понимание этого процесса помогает оптимизировать производительность сайта, особенно через DNS prefetching и выбор провайдера с быстрым DNS разрешением. Медленное DNS может быть одной из скрытых причин медленной загрузки сайта, что часто упускается при оптимизации.