Neviditelný tanec DNS: Jak prohlížeč najde cestu internetem
Neviditelný kouzelník DNS: Jak prohlížeč najde cestu na web
Každý klik na odkaz spustí v prohlížeči malý zázrak. Z lidského domainu se stane IP adresa. Server se najde rychle, kdekoliv na světě. Připojení proběhne za milisekundy. Za tím stojí DNS – Domain Name System. Je chytřejší, než si většina vývojářů myslí.
DNS vzniklo v roce 1983. Internet tehdy žil na modemech, web sotva existoval. Paul Mockapetris ho navrhl rychlý, škálovatelný a odolný. Sieť nekonfiabilních spojů. Po čtyřech desetiletích to pořád funguje. Podívejme se proč.
Rychlostní trik: UDP místo TCP
První vychytávka je jednoduchá: DNS jede primárně na UDP, ne TCP.
TCP potřebuje tříkovový handshake. To je cesta tam a zpět, než pošleš požadavek. Kdyby DNS tak chodilo, internet by se zasekl. Prohlížeč na jednu stránku spustí desítky lookupů. Představ si ty handshaky všude.
UDP to vyřeší hned. Klient pošle jeden paket na port 53 s otázkou. Server odpoví jedním balíčkem. Hotovo. Žádné ručení, žádné vyjednávání. Jen otázka a odpověď.
Nevýhoda? UDP pakety mizí. DNS to řeší jednoduše: bez odpovědi do timeoutu se zeptáš znovu. Více než 99 % dotazů se vejde do 512 bajtů, takže ztráty jsou vzácné.
Má to zálohu. Při velkých odpovědích – třeba s DNSSEC – server nastaví bit TC (Truncated). Klient pak přepne na TCP port 53 pro spolehlivou verzi. Perfektní dvojitý systém: rychle defaultně, spolehlivě jen když treba.
Hra na delegování: Obrácený strom
DNS škáluje díky tomu, že nemá centrální databázi všech domén světa.
Je to obrácený strom, čte se zprava doleva. Pro www.example.com. začne u rootu (ta skrytá tečka na konci) a jde dolů:
Root servery jsou start. Je jich 13 logických (A až M). Anycast je rozmnoží do tisíců kopií po světě. Tvůj dotaz jde k nejbližšímu. Neznají tvůj domain, jen řeknou, kdo řídí .com, .org nebo .cz.
TLD servery (Top-Level Domain) vedou registry. Verisign má .com, jiní ccTLD jako .cz. Zeptej se na example.com, ukážou NS servery pro ten domain.
Autoritativní nameservery jsou na dně. Hostí je registrar nebo provider jako Cloudflare, Route 53 či NameOcean. Mají zone file – A, AAAA, CNAME, MX záznamy. Odpovědí s bitem aa: "Jsem autorita, tohle je pravda."
Tu je háček: co když NS je ns1.example.com? Jak najít jeho IP dřív? TLD to vyřeší glue records – přidají IP nameserveru k delegaci. Bez nich by to nefungovalo.
Caching: Pravá síla internetu
Kdyby každý lookup prošel celým stromem, internet by padl.
Zachraňuje to caching na všech úrovních. Každý záznam má TTL v sekundách. Slíbí: "Platí X sekund, neptat se dřív."
Cache je všude:
- V prohlížeči – Chrome ho má v
chrome://net-internals/#dns. - V OS – Linux má
systemd-resolved, macOSmDNSResponder, Windows DNS Client. - U resolveru – 8.8.8.8 od Google, 1.1.1.1 od Cloudflare nebo ISP. Sdílí mezi miliony uživatelů. Chyba jednoho je hit pro ostatní.
Proto riď TTL při migracích. Při stěhování serveru sniž TTL dopředu – z 24 hodin na 5 minut. Jinak cache pošle traffic na starou IP celý den, i když jsi změnil.
Routingový kousek: Anycast
Teď ten chytrý trik.
Jak 8.8.8.8 odpoví z Tokia za 2 ms i z Prahy? Root servery škálují na tisíce instancí? Není to DNS, je to Anycast.
Normálně jedna IP = jeden server. Anycast nechá stovky serverů ohlásit stejnou IP přes BGP. Router tě pošle k nejbližšímu datacentru.
Proto Cloudflare dává DNS s latencí v milisekundách všude. DDoS na rooty selže – traffic se rozptýlí po všech PoP. Čistá magie infrastruktury.
Jak to sedí dohromady
DNS je mistrovské dílo distribuovaných systémů. Rychlé díky UDP bez spojů. Škálovatelné díky stromu delegací. Odolné díky cachingu všude. Blízko díky Anycast.
Navržené 1983 pro malý internet. Dnes zvládá biliony lookupů denně. Principy, co nestárnou.
U NameOcean nebo při správě DNS to změní tvůj pohled na domény, migrace a optimalizaci. DNS není trubka – je to cévní systém webu.