Zeptáte-li se průměrného uživatele na příklad internetové adresy, uvede nejspíš cosi jako www.seznam.cz nebo slashdot.org. Tedy nikoli číselnou IP adresu, ale doménové jméno. I když by i zde přiměřená osvěta jistě neškodila, z hlediska uživatele je to celkem logická a užitečná abstrakce. Na rozdíl od počítačů si lidé daleko lépe pamatují jména než dlouhá čísla. Doménová jména také umožňují nepřímou adresaci serverů a služeb, což se hodí třeba v následujících případech:
- Změna IP adresy serveru, například při přechodu k jinému ISP, se uživatelů vůbec nedotkne, protože doménové jméno se nemění.
- Pomocí doménového jména lze rozložit zátěž na více fyzických serverů – uživatelé přistupují k dané službě pomocí stejného doménového jména, jsou ale připojováni na různé IP adresy.
- Ještě propracovanější model mají služby typu Akamai, které provozují globálně distribuovaný systém serverů a přidělují příchozí uživatele konkrétnímu serveru podle geografické blízkosti či jiných kritérií.
Domény a zóny
V internetovém pravěku, kdy byla v síti zapojena jen hrstka počítačů, se převod jmen na IP adresy řešil velmi jednoduše: Na serveru sri-nic.arpa byl uložen soubor HOSTS.TXT, v němž byla zapsána jména všech známých počítačů i s jejich adresami. Na každém správci pak bylo, aby tento soubor pravidelně stahoval a instaloval ve svém systému. Informace o nově připojených strojích či jiné změny se správcům výše zmíněného serveru posílaly emailem. V první polovině 80. let začal tento systém v důsledku zvětšování rozsahu i dynamiky internetu praskat ve švech. V rámci IETF se proto skupina kolem Paula Mockapetrise dala do vývoje nové robustní on-line databáze, které se začalo říkat DNS (Domain Name System). První specifikace vyšly v roce 1983 jako RFC 882 a 883.
DNS používá osvědčenou metodu organizace velkého objemu dat do hierarchického stromu. Jeho kořen tvoří jedna – v podstatě virtuální – kořenová doména (root domain), pod níž najdeme zhruba 270 domén nejvyšší úrovně (TLD = top-level domain), které jsou dále rozmanitými způsoby větveny. Předpokládám, že způsob skládání doménových jmen z jednotlivých uzlů stromu DNS oddělených tečkami je dostatečně znám a nebudu se jím proto zabývat.
Valná většina (přesně 243) domén nejvyšší úrovně má svá návěští tvořena dvoupísmenným kódem země podle normy ISO 3166-1. Tyto domény se označují ccTLD (country code). Kromě nich existuje ještě 22 generických domén nejvyšší úrovně (gTLD). Některé z nich, jako třeba com, edu, net nebo org se používají už dlouho, ale od roku 2001 je k dispozici i sedm nových gTLD - biz, info, name, pro, aero, coop a museum.
Stromová struktura také umožňuje databázi DNS přirozeným způsobem distribuovat. S tím souvisí důležitý pojem zóny autority, který se dost často plete s pojmem domény. Oč tedy jde? Každá doména DNS, která má již přiděleného správce, tvoří zpočátku jednolitou zónu autority. Její správce ale může podle potřeby založit kdekoli ve své zóně novou doménu a delegovat autoritu stran této domény na někoho jiného. Nová doména se pak stává samostatnou zónou autority.
V praxi to vypadá tak, že každá TLD je samostatnou zónou. Každá z domén ccTLD má svého národního správce, v případě domény cz je jím sdružení CZ.NIC. Jednotlivci nebo instituce si mohou za mírný poplatek v řádu stokorun na rok zaregistrovat libovolné jméno domény druhé úrovně, ovšem za předpokladu, že v dotyčné TLD takové jméno dosud není. Registrace se obvykle provádí nikoli přímo u správce TLD, ale prostřednictvím některého z oprávněných registrátorů. U některých TLD musí navíc uchazeč splňovat jisté dodatečné podmínky. Například do domény mil vás nepustí, pokud nemáte nic společného s Pentagonem.
Servery DNS
Provozování zóny DNS vyžaduje jistou administrativní a technickou infrastrukturu. Správce zóny musí především zřídit dva jmenné servery (hlavní a záložní), které budou zodpovídat dotazy na jména patřící do této zóny. K delegaci zóny pak fakticky dojde tím, že správce rodičovské domény zanese tyto servery do databáze své zóny a odkazuje na ně nadále všechny dotazy týkající se delegované zóny.
Referenční implementací serveru DNS je program BIND (Berkeley Internet Name Domain). První slovo názvu souvisí s jeho původními autory, jimiž byli začátkem 80. let čtyři studenti této kalifornské univerzity. Vývoj poté převzala firma Digital Equipment Corporation, která tento program dovedla do skutečně produkční kvality. Největší zásluhu na tom má Paul Vixie, který BINDu věnoval, nejprve coby zaměstnanec DEC a poté jako soukromý podnikatel, mnoho programátorského i organizačního úsilí. Podle publikovaných průzkumů existuje dnes ve veřejném internetu zhruba 7,5 milionu jmenných serverů a na 77 % z nich běží právě BIND. S velkým odstupem je na druhé místě s 10 % Microsoft DNS, který je k dispozici na serverových platformách Windows. Zbývajících 13 % je rozděleno mezi poměrně velký počet alternativních implementací, mezi nimiž najdeme jak komerční, tak i open source programy.
Vyřizování dotazů
Na straně klientů jsou softwarové funkce, které pro práci s DNS potřebují – odborně se jim říká DNS resolver – obvykle integrovány do hlavních knihoven operačních systémů. Před použitím je třeba resolver zkonfigurovat, což v nejjednodušším případě obnáší následující údaje: jméno vlastní domény, v níž je klient zapojen, a dále IP adresu jednoho či více serverů DNS, na něž se bude klient obracet.
Rozlišujeme dva typy klientských dotazů: rekurzivní a iterativní. V prvním případě předá klient svůj dotaz jmennému serveru a očekává kompletní a vyčerpávající odpověď. Pokud ji server sám nezná, musí se v zastoupení klienta sám tázat dalších serverů, aby se požadovaného údaje dobral.
U iterativních dotazů naproti tomu klient posílá opakované dotazy různým serverům a prochází přitom strom DNS od kořene dolů po jednotlivých úrovních. Chce-li klient například zjistit adresu příslušející jménu www.priklad.cz může v iterativním režimu postupovat takto:
Nejprve pošle dotaz některému ze jmenných serverů kořenové domény. Dostane od něj seznam jmenných serverů top-level domény cz.
Posláním dotazu na některý ze serverů domény cz zjistí jmenné servery domény priklad.cz.
O některého z těchto serverů pak už zjistí požadovaný údaj – adresu stroje www.priklad.cz.
Pro servery kořenové domény by ovšem bylo smrtící, pokud by přes ně tímto způsobem musel projít absolutně každý dotaz. Resolvery proto zjištěné informace kešují, a tak každý dotaz nemusí nutně začínat od kořenové domény. Každá síť má z geografických či jiných důvodů určitý okruh frekventovaných domén, a ty pak její servery dokáží v naprosté většině případů zodpovědět přímo z keše. Iterativním klientům je třeba jejich keš po spuštění naplnit záznamy o jmenných serverech kořenové domény, jichž v současné době funguje celkem 13 a jsou fyzicky umístěny v USA (10), Evropě (2) a Japonsku (1). Všechny ostatní informace si už pak iterativní klient zjistí sám dotazováním vhodných serverů. |
Rekurzivní dotazy mají své místo pouze v lokálních sítích, kde se připojené koncové počítače obracejí na svůj místní jmenný server. Všude jinde by se měly zásadně používat iterativní dotazy – mnoho jmenných serverů na vyšších úrovních stromu DNS také rekurzivní dotazy odmítá.
V příštím pokračování se dostaneme k vlastnímu obsahu databáze DNS a popíšeme některá důležitá rozšíření.
Zajímá vás seriál Technologie Internetu?
Všechny dosud publikované díly jsou k dispozici zde.