Menu Zavrieť

5.4. Preklad z IPv4 adries na MAC adresy: sieťový protokol ARP

Keďže máme dvojitú adresáciu (IP a MAC adresy) musí samozrejme existovať spôsob, ako sa pri znalosti jednej adresy vieme dopracovať k druhej adrese. Znalosť oboch adries je potrebná na komunikáciu, ktorá využíva sieťovú vrstvu, to znamená minimálne pri komunikácii medzi sieťami, ale napríklad aj na ľubovoľnú komunikáciu v rámci siete, ktorá využíva protokol IP a jeho nadstavby TCP a UDP. V každom prípade je na unicastovú komunikáciu v Ethernete potrebné poznať MAC adresu.

Konkrétne ARP protokol umožňuje preklad z IPv4 adries na MAC adresy. Ten je potrebný v prípade, ak MAC adresu cieľového uzla v našej sieti nepoznáme. Tento stav je dosť bežný, keďže takmer všetky sieťové aplikácie používajú adresáciu buď cez doménové mená alebo IP adresy.

Pred tým, ako si povieme o tom, ako funguje ARP protokol, musíme spomenúť ARP tabuľku. ARP tabuľku obsahuje každý uzol v sieti (každé rozhranie routra aj koncových zariadení). V ARP tabuľke sa uchovávajú dvojice IPv4 adresa a MAC adresa, ktoré boli v poslednom období zistené (dá sa vypísať príkazom arp -a). ARP tabuľka nemusí obsahovať preklady adries všetkých uzlov v sieti. Jednotlivé dvojice adries sa z ARP tabuľky môžu dokonca zmazať, pokiaľ od daného uzla neprišiel dlho žiaden rámec. Čas, za ktorý sa maže, závisí od implementácie v danom operačnom systéme, ale býva to 5-20 minút.

Keď spojová vrstva vytvára rámec, má od sieťovej vrstvy k dispozícii IP adresu príjemcu a odosielateľa a má do rámca dopísať MAC adresu príjemcu a odosielateľa. S adresou odosielateľa je to ľahké, keďže ide o tú istú stanicu. MAC adresu príjemcu je potrebné odvodiť od IP adresy najbližšieho uzla, cez ktorý má prechádzať datagram k cieľu, určenom cieľovou IP adresou. Keďže cez MAC adresu vieme komunikovať iba s uzlom v rovnakej sieti, východiskom na zistenie cieľovej MAC adresy je teda IP adresa nejakého rozhrania v našej sieti. Nakoľko konečný príjemca nemusí byť v tej istej sieti, musíme sa najprv pozrieť do smerovacej tabuľky, ktorá sa uchováva v každom uzle. Ak cieľová IP adresa nie je z rovnakej siete, musíme si zo smerovacej tabuľky zistiť bránu, cez ktorú ideme posielať náš paket. Táto brána už musí byť z našej siete.

Teraz už máme IP adresu, ku ktorej chceme nájsť jej MAC adresu. Najprv sa pozrieme do ARP tabuľky. Ak sa v nej preklad tejto IP adresy nachádza, použijeme ho a vytvoríme žiadaný rámec. Ak sa v ARP tabuľke táto IP adresa nenachádza, musíme ju najskôr zistiť v našej sieti cez ARP protokol.

ARP protokol funguje nasledovne. Stanica vyšle ARP request paket všetkým zariadeniam v sieti na broadcastovú MAC adresu FF:FF:FF:FF:FF:FF. Ako MAC adresu odosielateľa zadá svoju MAC adresu. Tento paket musí byť spracovaný všetkými zariadeniami v lokálnej sieti. To zariadenie, ktoré zistí, že IP adresa je jeho, pošle ARP response paket tejto hľadajúcej stanici. Nakoľko už vie jej MAC adresu, pošle jej ARP response už priamo – teda nie broadcastom, ale unicastom. Keď naša stanica dostane ARP response, doplní si záznam do svojej ARP tabuľky a môže vygenerovať hlavičku rámca pre pôvodný dátový paket.

Rovnaký postup sa aplikuje na každom uzle na ceste k cieľovému príjemcovi, v každej sieti, cez ktorú datagram prechádza.

Je folklórom spolu s protokolom ARP spomínať aj protokol RARP (Reverse ARP). Ten slúži na opačný preklad – teda z MAC adresy na IP adresu. Scenár protokolu RARP predpokladá, že RARP sa posiela so žiadosťou o zistenie vlastnej IP adresy na základe vlastnej MAC adresy. Tento protokol bol však už dávno prekonaný protokolom DHCP, ktorý okrem IP adresy poskytuje oveľa viac, najmä predvolenú bránu a lokálne rekurzívne DNS servery a ďalšie iné služby (napr. bootovanie po sieti).