praca_magisterska/pytania/questions/pytanie_07.md

5.7 KiB
Raw Blame History

PYTANIE 7: DNS i caching (SKM)

Które serwery DNS zyskują najwięcej na cachingu? Jakie znasz rodzaje serwerów DNS?


Tło pojęciowe — słowniczek

DNS (Domain Name System) — rozproszony system tłumaczący nazwy domenowe (np. google.com) na adresy IP (np. 142.250.74.206). Bez DNS musielibyśmy zapamiętywać ciągi liczb zamiast nazw. Struktura hierarchiczna: root → TLD → domeny → subdomeny.

google.com.        ← końcowa kropka = root
│      │
│      └── TLD (.com)
└── domena II poziomu (google)

Serwer DNS — komputer odpowiadający na zapytania o adresy IP. Istnieje kilka typów o różnych rolach w hierarchii (root, TLD, authoritative, recursive, stub, forwarding).

Cache (pamięć podręczna) — szybki bufor przechowujący niedawne odpowiedzi. Zamiast pytać hierarchię DNS od zera, resolver sprawdza cache. Trafienie w cache = odpowiedź w <1 ms zamiast ~50-200 ms podróży przez internet.

Caching DNS — mechanizm zapisywania odpowiedzi DNS na określony czas (TTL). Kluczowy dla wydajności — bez caching root servers byłyby przeciążone miliardami zapytań dziennie.


Root server (serwer główny) — najwyższy poziom hierarchii DNS. 13 logicznych serwerów (a.root-servers.net … m.root-servers.net), ale setki fizycznych instancji rozproszonych po świecie (anycast). Nie znają adresów konkretnych domen — odsyłają (referral) do serwerów TLD.

TLD server (Top-Level Domain) — serwer obsługujący domeny najwyższego poziomu: .com, .pl, .org, .net itd. Zarządzane przez rejestry (np. Verisign dla .com, NASK dla .pl). Odsyłają do serwerów authoritative konkretnych domen.

Authoritative NS (serwer autorytatywny) — serwer znający ostateczne odpowiedzi dla danej domeny. Primary (master) — zawiera oryginalne rekordy (edytowalny); Secondary (slave) — kopia do nadmiarowości. To „źródło prawdy" dla danej domeny.

Recursive resolver (resolver rekurencyjny) — serwer wykonujący pełne rozwiązywanie: pyta root → TLD → authoritative, zbiera odpowiedź i zwraca klientowi. Przykłady: Google 8.8.8.8, Cloudflare 1.1.1.1, resolver ISP. To ON głównie korzysta z cache.

Stub resolver — prosty klient DNS wbudowany w system operacyjny. Nie rozwiązuje sam — wysyła zapytanie do recursive resolvera i czeka na odpowiedź.

Forwarding server — serwer DNS, który nie rozwiązuje sam, lecz przekazuje zapytania do innego resolvera (np. firmowy DNS przekazuje do ISP).


TTL (Time To Live) — czas w sekundach, przez który odpowiedź DNS może być przechowywana w cache. Po upływie TTL wpis jest usuwany i trzeba zapytać ponownie. Root referrals mają TTL 48h7 dni; TLD referrals 24h48h; typowe domeny 3003600s.

Przykład: TTL = 3600 → resolver pamięta odpowiedź przez 1 godzinę

Referral (odesłanie) — odpowiedź DNS mówiąca „nie wiem, ale zapytaj tamten serwer". Root referral → „zapytaj serwer TLD .com"; TLD referral → „zapytaj NS domeny google.com".

Anycast — technika routingu: ten sam adres IP jest ogłaszany z wielu lokalizacji na świecie. Klient automatycznie trafia do najbliższego serwera (routing BGP kieruje do najbliższego). Root servers używają anycast — dlatego 13 adresów obsługuje cały internet.

ISP (Internet Service Provider) — dostawca internetu. Zwykle udostępnia własny recursive resolver, z którego korzystają klienci domyślnie.

Dlaczego ROOT i TLD zyskują NAJWIĘCEJ na cachingu? Root servers to tylko 13 logicznych adresów dla CAŁEGO internetu. Bez cache każde zapytanie o dowolną domenę musi przejść przez root. Z cache: resolver pyta root RAZ o .com, cachuje referral na 48h+, i przez ten czas miliardy zapytań o domeny .com omijają root. Redukcja ruchu: z ~100% do ~0.01% zapytań.

Bez cache:     klient → resolver → ROOT → TLD → Auth (za każdym razem!)
Z cache:       klient → resolver → cache hit! (odpowiedź w <1ms)

Rodzaje serwerów DNS

  1. Root Servers (.) — 13 logicznych (a..m.root-servers.net), setki fizycznych (anycast)
  2. TLD Servers (.com, .pl, .org) — zarządzane przez rejestry
  3. Authoritative NS — Primary (master, edytowalny) i Secondary (slave, kopia)
  4. Recursive Resolvers — wykonują pełne rozwiązywanie (ISP, Google 8.8.8.8, Cloudflare 1.1.1.1)
  5. Stub Resolvers — prosty klient w OS, wysyła do recursive
  6. Forwarding Servers — przekazują zapytania dalej

Proces rozwiązywania

Klient → Recursive Resolver → Root → TLD → Authoritative → odpowiedź

ODPOWIEDŹ: ROOT i TLD zyskują NAJWIĘCEJ na cachingu

Dlaczego:

  • 13 root servers vs miliardy zapytań dziennie
  • BEZ cache: każde zapytanie o DOWOLNĄ domenę musi przejść przez root i TLD
  • Z cache: resolver pyta root RAZ o .com, cachuje referral na 48h+
  • Root referrals: TTL 48h7 dni (!); TLD referrals: TTL 24h48h
  • Redukcja ruchu do root: z ~100% do ~0.01% zapytań

Etymologia

DNS — Domain Name System; Paul Mockapetris (1983, RFC 882/883). Cache — fr. „cacher" = ukrywać; ukryte szybkie przechowywanie. TTL — Time To Live. Anycast — ten sam IP z wielu lokalizacji; klient dostaje odpowiedź od najbliższego serwera. Root servers — 13 logicznych identyfikatorów (am); infrastruktura krytyczna internetu. Recursive resolver — „rekurencyjny" bo iteracyjnie pyta kolejne poziomy hierarchii aż do odpowiedzi.

Jak zapamiętać

  • „Piramida DNS" — root (wierzchołek, najmniej serwerów) → TLD → Auth (podstawa, miliony)
  • Im mniej serwerów na poziomie, tym większy zysk z cache
  • TTL = Time To Live — im dłuższy, tym rzadziej odświeżany cache