Vyšlo v týdeníku CHIPweek č. 28/96, 10. července 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a628k130.php3

Domain, domain name

V Internetu se pro adresování jednotlivých uzlů používají číselné adresy v rozsahu 32 bitů, označované jako IP adresy - o této skutečnosti i různých zajímavých důsledcích jsme se v této rubrice již několikrát zmiňovali. Faktem je, že až na drobné výjimky (jako třeba v případě tzv. privátních Internetů, viz CW 25/96) tyto adresy plně postačují pro jednoznačnou identifikaci každého uzlového počítače či jiného zařízení (např. směrovače) připojeného k Internetu. Otázkou ale je, zda jsou tyto číselné adresy také nejšikovnější pro daný účel?

Když mají s číselnými IP adresami pracovat lidé, zapisují je symbolicky - v takovém tvaru, že celých 32 bitů adresy rozdělí na čtyři osmibitové části (tedy vlastně po bytech), obsah každé části zapíší jako desítkové číslo, a jednotlivé části od sebe oddělí tečkou. Pak z toho vychází zápisy jako například 147.32.1.3, 193.84.252.190 apod. Ale připadá vám to šikovné? Hlavně dostatečně mnemonické a dobře zapamatovatelné? Asi ne, že.

Číselné IP adresy jsou vhodné pro počítače, ale nikoli pro lidi. Lidé naopak chtějí pracovat se skutečně symbolickými jmény, která jsou pro ně snáze zapamatovatelné, a také se o nich snáze hovoří a píše - lidé by nejraději přidělovali uzlovým počítačům jména jako „alpha", „sun", „pc1", „www" apod. Celá věc ale má jeden háček - pokud by se používání takovýchto symbolických jmen povolilo, pak by bylo nutné zachovat jejich jednoznačnost v rámci celého Internetu. Tedy to, aby i symbolické jméno stačilo k jednoznačnému určení konkrétního uzlu. Pokud se takováto podmínka dodrží, pak budou mít symbolická jména stejnou „vypovídací schopnost" jako číselné adresy, a z principu bude muset existovat algoritmus vzájemného převodu mezi symbolickými jmény a číselnými adresy (tam i zpět). Bude pak již jen technickou záležitostí, jak vzájemné převody implementovat co možná nejefektivněji (o tom si také povíme, až bude řeč o systému DNS).

Při dnešním počtu uzlů Internetu ale není možné, aby přidělovaná symbolická jména byla brána „z jedné hromady" - ta by se jednak rychle vyčerpávala, a hlavně by bylo organizačně zcela neúnosné udržovat něco takového jako společný rejstřík již použitých symbolických jmen - vzpomeňte si na to, jak komplikované je přidělování číselných IP adres v celosvětovém měřítku (viz díl slovníku o Internet registry). V podstatě jediné řešení je rozdělit velký problém na mnoho menších, snadněji zvládnutelných problémů - neboli delegovat pravomoc k přidělování jmen na takové subjekty, které budou mít přesně definovaný „okruh působnosti", a budou moci přidělovat symbolická jména pouze v rámci tohoto svého okruhu působnosti. No a takovýmto subjektům se říká domény (domains). Příkladem může být doména odpovídající určité organizaci či firmě, s pravomocí přidělovat symbolická jména počítačům a dalším uzlům v rámci příslušné organizace (firmy).

Pouhé rozdělení „celého světa" na domény, které by si byly navzájem rovny, by však problém ještě neřešilo - pořád by musel existovat jeden centrální subjekt, který by musel evidovat existenci všech stávajících i nově vznikající domén, a značný problém by byl i s pojmenováváním domén (jak uvidíme záhy, i ty musí mít své jméno). Proto se do systému domén zavedlo hierarchické uspořádání, umožňující aby si kterákoli doména vytvářela sobě podřízené „dceřinné" domény (tzv. subdomény), a delegovala jim část svých pravomocí. Představíme-li si například doménu odpovídající Karlově univerzitě, pak tato může vytvořit subdomény odpovídající jednotlivým fakultám a delegovat jim právo přidělovat jména v rámci příslušné fakulty. Příslušné subdomény pak mohou (ale nemusí) učinit totéž, a také vytvořit své vlastní subdomény a těm delegovat část své pravomoci přidělovat symbolická jména. Výsledný efekt je pak ten, že vzniká celá hierarchie domén a subdomén, se stromovitým uspořádáním.

Ale zpět k přidělování symbolických jmen - jestliže má každá doména právo přidělovat tato symbolická jména v okruhu své působnosti, musí se přitom nějak koordinovat s ostatními doménami? Například chce-li přidělit určité konkrétní jméno, musí se zajímat o to zda již bylo stejné jméno přiděleno v nějaké jiné doméně? Kdyby odpověď byla kladná, negovala by celou myšlenku delegování pravomocí a způsobovala nepřekonatelné organizační problémy. Každá doména proto musí dbát pouze na to, aby sama, v rámci svého okruhu působnosti, nezpůsobila žádnou duplicitu jmen, tj. nepřidělila více stejných jmen.

Přidělená symbolická jména proto musí být jednoznačná pouze v rámci té domény, která je přidělila - ale již nemusí být jednoznačná celosvětově. Jak se pak ale toto slučuje s požadavkem na celosvětovou jednoznačnost symbolických jmen?

Zde pomáhá skutečnost, že i jednotlivé domény mají svá jména, a jsou uspořádány hierarchicky - pokud se totiž vezme jméno dané domény i jména všech jejích nadřízených domén, vzniká tím celosvětově jednoznačné označení dané domény. No a když se tento výsledný údaj přidá k symbolickému jménu, které daná doména přidělila určitému uzlu v rámci svého okruhu působnosti, pak bude i toto jméno celosvětově jednoznačné, a půjde o tzv. plně kvalifikované doménové jméno. Například www.ms.mff.cuni.cz, kde „www" je symbolické jméno konkrétního uzlového počítače (v roli WWW serveru) přidělené doménou „ms" (část MFF UK na Malostranském náměstí), a „mff", „cuni", a „cz" jsou po řadě její nadřízené domény (odpovídající Matematicko-fyzikální fakultě, Univerzitě Karlově a České republice). No a to je právě to, co jsme potřebovali.