Sobes.tech
Junior

Как работи DNS?

sobes.tech AI

Отговор от AI

DNS или Система за домейнни имена е разпределена база данни, която преобразува четими домейн имена (например google.com) в IP адреси (например 172.217.16.14), разбираеми за компютрите.

Процесът на преобразуване (разрешаване) на домейн име в IP адрес включва няколко стъпки, които изискват взаимодействие между различни компоненти:

  1. Потребителски заявка: Потребителят въвежда домейн името в браузъра.
  2. Резолвър (DNS Resolver): Операционната система или приложението изпраща заявка към локалния DNS резолвър (често предоставен от интернет доставчика или намиращ се на локалния рутер/компютър).
  3. Кеш на резолвъра: Резолвърът първо проверява своя локален кеш. Ако намери IP адрес, го връща на клиента. Това ускорява процеса.
  4. Коренови (Root) DNS сървъри: Ако в кеша няма запис, резолвърът изпраща заявка към един от 13-те коренови DNS сървъра (обозначени с точка .). Тези сървъри знаят къде да намерят TLD (Top-Level Domain) сървъри.
  5. TLD (Top-Level Domain) DNS сървъри: Кореновият сървър насочва резолвъра към TLD сървър, отговорен за домейна от горното ниво (например .com, .org, .ru).
  6. Авторитативни (Authoritative) DNS сървъри: TLD сървърът насочва резолвъра към авторитативен DNS сървър, отговорен за конкретния домейн (например google.com). Този сървър съхранява DNS записите за този домейн.
  7. Отговор от авторитативния сървър: Авторитативният сървър намира съответния запис (например A-запис за IPv4 или AAAA-запис за IPv6) и връща IP адреса на резолвъра.
  8. Кеширане от резолвъра: Резолвърът получава IP адреса, кешира го за определен период (TTL - Time To Live) и го връща на клиента.
  9. Клиентско свързване: Клиентът използва получения IP адрес за установяване на връзка с уеб сървъра.

DNS сървърите съхраняват различни типове записи:

  • A: Преобразува домейн името в IPv4 адрес.
  • AAAA: Преобразува домейн името в IPv6 адрес.
  • CNAME: Създава псевдоним за друго домейн име.
  • MX: Определя пощенските сървъри, отговорни за домейна.
  • NS: Посочва авторитативните DNS сървъри за домейна.
  • PTR: Преобразува IP адрес в домейн име (използва се в обратните DNS заявки).
# Пример за DNS заявка с dig
dig google.com A
; <<>> DiG 9.16.1-Ubuntu <<>> google.com A
;; глобални опции: +cmd
;; Получен отговор:
;; ->>HEADER<<- opcode: QUERY, статус: NOERROR, id: 42650
;; флагове: qr rd ra; ЗАЯВКА: 1, ОТГОВОР: 1, АВТОРИТАТИВЕН: 0, ДОПЪЛНИТЕЛЕН: 1

;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флагове:; udp: 65494
;; Въпросна секция:
;google.com.                    IN      A

;; Отговорна секция:
google.com.             300     IN      A       172.217.16.142

;; Време за заявка: 42 ms
;; Сървър: 127.0.0.53#53(127.0.0.53)
;; Когато: вторник, 26 октомври 2023 г., 10:00:00 UTC
;; Размер на съобщението  rcvd: 55

Този разпределен и йерархичен подход прави DNS мащабируем и отказоустойчива система.