zpět do archivu článků |
rejstřík |
předchozí díl |
následující díl
Jiří Peterka: Co je čím ... v počítačových sítích (52):
Jména v TCP/IP sítích - II.
V minulém dílu jsme se zabývali otázkou symbolických
jmen počítačů a bran v TCP/IP sítích a dospěli jsme k tomu,
jakým způsobem se přidělují doménová jména v Internetu. Nyní
se budeme věnovat otázce, jak na základě symbolických jmen
získávat odpovídající IP adresy.
Připomeňme si ještě jednou, že otázku doménových jmen
v TCP/IP sítích řeší standard DNS (Domain Name System),
který má dvě základní části: první z nich určuje syntaxi
doménových jmen a pravidla pro delegování pravomoci
a odpovědnosti za jejich přidělování, zatímco druhá část se
týká implementace mechanismu pro převod doménových jmen na
jim odpovídající IP adresy.
 |
Obr. 52.1.: Část adresového prostoru doménových jmen
Jestliže pravomoc a odpovědnost za přidělování
doménových jmen je distribuována na jednotlivé domény
a subdomény, je vcelku přirozené očekávat, že také
mechanismus pro převod těchto doménových jmen na IP adresy
bude obdobně distribuován - že bude tvořen soustavou
vzájemně spolupracujících částí, nazývaných servery jmen
(name servers), jejichž uspořádání bude odrážet
hierarchickou strukturu domén a subdomén. Základní myšlenka
takovéhoto řešení je založena na tom, že s každou doménou
a subdoménou bude spojen prostředek (zmíněný server jmen),
který všechna jména z příslušné domény či subdomény buď umí
převést sám, nebo alespoň zná jiný server jmen, který to
dokáže.
 |
Obr. 52.2.: První představa struktury serverů jmen
Představme si příklad na obrázku 52.1., který ukazuje
malou část adresového prostoru doménových jmen Internetu se
třemi doménami nejvyšší úrovně - edu (pro vzdělávací
instituce v USA), com (pro komerční instituce v USA), a cs
(pro celé Československo), s některými jejich subdoménami.
Dále si představme stejně strukturovaný systém serverů jmen
pro jednotlivé domény a subdomény dle obrázku 52.2.
a předpokládejme, že některý hostitelský počítač potřebuje
odeslat zprávu počítači s adresou aviion.mff.cuni.cs. Obrátí
se proto nejprve na server jmen domény cs, který jej odkáže
na server jmen domény cuni.cs, a ten pak zase na server jmen
domény mff.cuni.cs. Ten již je schopen odpovědět na dotaz,
jaká je IP adresa počítače aviion.mff.cuni.cs.
Jak je tomu ve skutečnosti
Právě naznačený příklad je samozřejmě dosti
zjednodušený, ale jinak dobře vystihuje celkovou filosofii
převodu symbolických doménových jmen na IP adresy.
Prvním praktický problém vyvstává hned v okamžiku, kdy
je třeba se obrátit na server jmen domény nejvyšší úrovně
- každý potenciální tazatel by totiž musel znát adresy
serverů jmen všech domén nejvyšší úrovně. Proto se všem
těmto serverům nejvyšší úrovně nadřazuje ještě jeden, tzv.
kořenový server (root server), a pouze tento kořenový server
musí být znám všem potenciálním žadatelům o převod
doménových adres. V praxi je tento kořenový server
několikanásobně zálohován.
 |
Obr. 52.3.: Realističtější představa struktury serverů jmen
Další odlišností skutečné realizace od naší ideální
představy je hloubka výsledného stromu serverů jmen, v jehož
kořeni je právě zmíněný kořenový server. Jednotlivé servery
jmen totiž mohou obsahovat potřebné informace o doménových
jménech pro více různých domén a subdomén - velice často
totiž různé organizace soustřeďují informace o jménech ze
všech svých subdomén v jediném serveru jmen. Kořenový server
naopak obsahuje informace i o všech doménách nejvyšších
úrovních, takže výsledný strom serverů jmen bývá v praxi
mnohem "mělčí" (viz obr. 52.3.), než naše původní představa
na obrázku 52.2.
Rekurzivní a iterativní převod
Iniciátorem převodu doménového jména na IP adresu
(anglicky: name resolution) je vždy programová entita
hostitelského počítače (tzv. name resolver), která vůči celé
soustavě serverů jmen vystupuje jako klient. Se svým
požadavkem na převod doménového jména se tato entita obrací
na některý ze serverů, který může postupovat dvojím
způsobem: pokud není schopen převod zajistit, sám se obrátí
na jiný server jmen, který převod zajistí, výsledek vrátí
prvním serveru, a ten jej pak vrátí původnímu žadateli. Pak
jde o tzv. rekurzivní převod (recursive resolution).
Alternativou je tzv. iterativní převod (iterative
resolution), při kterém dotázaný server jmen buď provede
převod sám, nebo pouze vrátí adresu jiného serveru jmen, na
který se pak musí žadatel o převod znovu obrátit sám.
Zajímavou otázkou je to, kam se má žadatel o převod
obrátit nejprve - zda má začít shora, a obrátit se na
kořenový server, nebo má naopak postupovat naopak odspodu,
a obrátit se nejprve na "místní" server jmen? Ve prospěch
druhé možnosti hovoří hned několik skutečností: kdyby se
všichni obraceli přímo na kořenový server, tento by byl brzy
zahlcen. Navíc požadavky na převod doménových jmen se
nejčastěji týkají právě "místních" jmen, které dokáže
převést místní server. Ten je kromě toho schopen fungovat
i v případě eventuálního výpadku vyšších vrstev celého
stromu name serverů (i když to je vzhledem k jejich
zálohování nepříliš pravděpodobné).
Použití vyrovnávacích pamětí (caching)
Kdyby se každý hostitelský počítač musel obracet na
soustavu serverů jmen pokaždé, kdy potřebuje převést některé
doménové jméno na jemu odpovídající IP adresu, byla by to
pro celou síť neúnosně velká zátěž. Pro zefektivnění celého
mechanismu převodu se proto počítá s tím, že hostitelské
počítače si po určitou dobu pamatují výsledky dříve
uskutečněných převodů. Každý hostitelský počítač si proto
bude udržovat ve vhodné vyrovnávací paměti (paměti cache)
databázi symbolických jmen a jim odpovídajících IP adres.
Aby tuto svou databázi udržel v konzistentním stavu,
odpovídajícím skutečnosti, bude každá položka této databáze
"zastarávat" - po určité době ztratí svou platnost,
a příslušný převod bude muset být v okamžiku potřeby vyvolán
znovu.
Podobně postupují i servery jmen. Kromě doménových
jmen, které jsou schopny (přesněji: oprávněny) převádět
samy, se při rekurzivních převodech dozvídají i odpovídající
IP adresy k jiným doménovým jménům. Také ty si udržují ve
své vyrovnávací paměti, a v případě žádosti o převod je
mohou poskytnout - ovšem s poznámkou, že nejsou k jejich
převodu kompetentní (tj. že jde o tzv. neautoritativní
(nonauthoritative) převod). Současně s tím poskytnou
žadateli o převod i odkaz na ten server jmen, který je
k převodu kompetentní. Iniciátor převodu pak naloží s touto
informací podle vlastního uvážení. Jde-li mu o rychlost,
použije tento neautoritativní převod, jde-li mu naopak
o spolehlivost, obrátí se na příslušný server jmen, který je
pro daný převod kompetentní.
Ještě většího zefektivnění celého mechanismu převodu
doménových jmen na IP adresy lze pak dosáhnout tím, že
jednotlivé hostitelské počítače si v okamžiku svého spuštění
vyžádají od místního serveru jmen celou jeho databázi
doménových jmen a jim odpovídajících IP adres. Z té pak
vychází, a na server jmen se obrací jen při její aktualizaci
(po "zastarání" některé položky) či pro její doplnění o nové
doménové jméno, jehož odpovídající IP adresa ještě
v databázi není.
zpět do archivu článků | rejstřík |
předchozí díl |
následující díl
Tento článek může být volně šířen, pokud se tak děje pro studijní účely, na nevýdělečném základě a se zachováním tohoto dovětku. Podrobnosti hledejte zde, resp. na adrese
http://ksi.ms.mff.cuni.cz/~peterka/archiv/copyleft.htm