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 (45):
Adresování v TCP/IP sítích - II.
V minulém dílu našeho seriálu jsme se podrobněji
zabývali IP adresami. Víme již, že představují jednotné
adresy, které používá libovolný konglomerát vzájemně
propojených sítí na bázi soustavy protokolů TCP/IP. Jsou
však stále jen abstrakcí na úrovni síťové vrstvy, která
odpovídá představě jednotné virtuální sítě. Ta je ale ve
skutečnosti realizována dílčími sítěmi více či méně
odlišného typu, které používají své vlastní mechanismy
adresování a formáty adres. Proto také IP adresy musí být
převáděny na takové konkrétní (fyzické) adresy, jaké
příslušná dílčí síť skutečně používá (na úrovni vrstvy
síťového rozhraní). Otázkou ovšem je, jak takovýto převod
vůbec realizovat.
Představme si dva hostitelské počítače A a B, které
mají po řadě IP adresy IA a IB. Předpokládejme dále, že jde
o uzly téže (dílčí) sítě, které díky tomu mohou komunikovat
mezi sebou přímo (resp. nejsou odkázány na bránu, resp. IP
směrovač, propojující různé dílčí sítě). V rámci "své" dílčí
sítě přitom mají oba uzly fyzické adresy FA a FB. Jestliže
nyní síťová vrstva (IP vrstva) počítače A dostane od své
transportní vrstvy za úkol přenést určitá data počítači s IP
adresou IB(tj. počítači B), musí být schopna zajistit
převod IP adresy IB na fyzickou adresu FB. Tu totiž
potřebuje příslušný ovladač v bezprostředně nižší vrstvě
(vrstvě síťového rozhraní), aby mohl přenášená data skutečně
doručit. Podobně počítač B: jakmile bude chtít počítači
A odpovědět, musí vědět, jaká fyzická adresa (FA) odpovídá
IP adrese počítače A (IA).
Problém transformace adres a jeho řešení
Problém transformace adres vyšší úrovně na adresy nižší
úrovně, konkrétně nalezení odpovídající fyzické adresy k IP
adrese, se označuje jako address resolution problem. Je
možné jej řešit například formou tabulky, obsahující seznam
vzájemně si odpovídajících adres. Je to ovšem spojeno
s četnými problémy - kdo a jak zajistí počáteční naplnění
tabulky, kdo ji bude udržovat a přizpůsobovat momentálnímu
stavu sítě, kdo zajistí, aby její velikost nepřesáhla
únosnou mez atd.
Tam, kde je to jen trochu možné, se proto používají
spíše jiná řešení, která jsou ovšem závislá na konkrétní
povaze (dílčí) sítě a jím používaném mechanismu adresování.
Řešení pomocí přímého převodu
Velmi jednoduchá myšlenka, které se v této souvislosti
sama nabízí, je neřešit převod výčtem (tj. pomocí tabulky),
ale pomocí vhodné tranformační funkce (vzorečku pro převod).
To je ale možné jen tam, kde si uživatel resp. zřizovatel
sítě může fyzické adresy jednotlivých uzlových počítačů
volit sám, podle vlastních potřeb. Tak je tomu například v
sítích ARCnet či proNET-10, kde si uživatel při instalaci
síťové karty do svého počítače sám volí její fyzickou adresu
(a tím i fyzickou adresu počítače, připojeného
prostřednictvím této síťové karty). Má-li například
volitelná fyzická adresa rozsah 8 bitů (jako je tomu právě
u sítí ARCnet i proNET-10), je nejjednodušší volit ji shodně
s posledním oktetem (posledními osmi bity) IP adresy.
Transformace IP adresy na fyzickou se pak stává zcela
triviální.
Řešení pomocí dynamické vazby
Možnost volit fyzickou adresu přímo na síťovém adaptéru
při jeho instalaci je v praxi únosná jen pro adresy malého
rozsahu. Především je ale spojena s potenciálním nebezpečím
lidských chyb, které mohou vyústit v existenci dvou adaptérů
resp. uzlů se stejnou fyzickou adresou v jedné síti. Jiné
síťové technologie se proto k celému problému staví opačně
- uživateli nedávají žádnou možnost ovlivnit fyzickou adresu
síťového adaptéru. Ten ji má v sobě jednou provždy pevně
zabudovánu.
Takto je tomu například u lokálních sítí typu Ethernet.
Ty používají fyzické adresy v rozsahu 48 bitů, které
v příslušných síťových adaptérech nastavuje přímo jejich
výrobce. Aby se zajistila jednoznačnost adres i mezi
síťovými adaptéry různých výrobců, musí si každý z nich
nechat přidělit určitý rozsah adres od centrální autority,
která Ethernetovské adresy spravuje (a kterou je v tomto
konkrétním případě americké sdružení IEEE).
Jakmile je ale potřeba transformovat 32-bitové IP
adresy na 48-bitové Ethernetovské (či jiné "velké" adresy,
které není možné podle potřeby volit), nezbývá než vrátit se
zpět k převodním tabulkám, definujícím vzájemnou vazbu mezi
jednotlivými adresami. Pokud možno ale nikoli ke statickým
tabulkám, ale naopak k tabulkám dynamickým, které se vytváří
a modifikují průběžně, podle okamžitého stavu sítě.
Protokol ARP
V soustavě protokolů TCP/IP je zahrnut velmi elegantní
mechanismus dynamického budování a udržování převodních
tabulek mezi IP adresami a fyzickými adresami, založený na
protokolu ARP (Address Resolution Protocol). Ten využívá
schopnosti všesměrového vysílání (tzv. broadcastingu)
v některých sítích, které umožňují adresovat datový rámec
všem uzlům dané lokální (resp. dílčí) sítě současně - bez
nutnosti znát jejich konkrétní adresy. Například v sítích
typu Ethernet lze vyslat datový rámec na jednu, předem
známou speciální adresu, na kterou "slyší" všechny síťové
adaptéry bez ohledu na svou konkrétní fyzickou adresu.
Protokol ARP této možnosti využívá tak, že si jejím
prostřednictvím nechá najít majitele příslušné IP adresy:
 |
Obr. 45.1.: Zjištění fyzické adresy podle IP adresy (protokol ARP)
Představme si situaci, kdy jeden uzlový počítač chce
zaslat nějaká data jinému počítači v téže dílčí síti. Zná
však pouze jeho IP adresu, nikoli jeho fyzickou adresu.
Protokol ARP prvního počítače proto využije možnosti
všesměrového vysílání, a všem uzlům dané dílčí sítě pošle
zvláštní rámec resp. paket s dotazem: "Kdo má IP
adresuţ....?" (viz obr. 45.1. a/). Tento rámec přijmou
všechny uzly, a všechny také vyhodnotí paket, který je v něm
obsažen. Pouze uzel B však rozpozná, že obsahuje jemu určený
dotaz, a tak na něj odpoví zasláním své fyzické adresy (opět
prostřednictvím speciálního paketu, jehož formát definuje
protokol ARP). Ostatní uzly přitom na původní dotaz
neodpovídají - viz obr. 45.1. b/.
Nebylo by ale únosné se takovýmto způsobem ptát při
každém jednotlivém přenosu vždy znovu. Každý uzlový počítač
si proto sám průběžně vytváří potřebnou převodní tabulku
mezi IP adresami a fyzickými adresami (ve vhodné vyrovnávací
paměti), a právě naznačený mechanismus využívá až v případě,
kdy ji potřebuje doplnit či aktualizovat.
Protokol RARP
Protokol ARP umožňuje, aby každý hostitelský počítač
(uzel) po svém spuštění vystačil jen se znalostí své vlastní
fyzické adresy a své vlastní IP adresy (kterou si obvykle
přečte z konfiguračního souboru na svém pevném disku). Na
fyzické adresy všech ostatních uzlů ve své dílčí sítí se pak
vhodně "doptá". Otázkou ovšem je, jak tomu bude v případě
bezdiskových stanic, které si svou IP adresu z vlastního
pevného disku přečíst nemohou.
 |
Obr. 45.2.: Zjištění vlastní IP adresy pro bezdiskovou stanici (protokol RARP)
Po svém spuštění si každá bezdisková stanice musí svou
vlastní IP adresu nejprve vyžádat na jiném uzlovém počítači,
který vůči ní vystupuje v roli serveru IP adres. Způsob,
jakým se na něj bezdisková stanice obrací, je analogický
výše naznačenému mechanismu protokolu ARP - prostřednictvím
všesměrového vysílání bezdisková stanice rozešle všem
ostatním uzlům dotaz typu: "Jaká je moje IP adresa?". Sebe
sama přitom stanice identifikuje prostřednictvím fyzické
adresy, kterou má zabudovánu ve svém síťovém adaptéru - viz
obrázek 45.2. a/.
Konkrétní protokol, prostřednictvím kterého si
bezdisková stanice může svou IP adresu vyžádat, vychází
z protokolu ARP, a je označován jako RARP (Reverse Address
Resolution Protocol).
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