
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:
![]() |
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.
![]() |
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).