3. diel - Siete - Address Resolution Protocol
Doteraz som nespomenul, že pre komunikáciu cez internet potrebujete okrem MAC adresy tiež pridelenú IP adresu. Ďalej poviem niečo o ARP protokolu, pomocou ktorého si PC môže podľa IP adresy vyžiadať MAC adresu daného zariadenia. Ale najprv - čo sú to tie IP adresy:
IP adresa
IP adresa je 32-bitové číslo, ktoré slúži ako adresa (identifikátor) pre dané zariadenie. Pekné prirovnanie je číslo popisné a orientačné. MAC adresa je popisné číslo, IP adresa orientačné. Okrem toho môžeme mať ešte meno zariadení (hostname), o tom ale až v budúcnosti, keď budeme riešiť DNS.
IP adresa sa zapisuje ako štyri osembitové bloky (oktety) oddelené bodkou - binárne zápis sa prevádza na decimálna čísla. Príklady: 192.168.20. 3 alebo 10.211.6.90.
Od MAC adresy sa líši tým, že ju môžeme ľahko priradiť alebo odstrániť akékoľvek NIC. Možno znie tá definícia zmätene - veď už máme MAC adresu, ktorá identifikuje daný stroj. Na čo teda IP adresy?
Po prvé - ak má zariadenie IP adresu, môže prechádzať cez router - a pripojiť sa teda na internet.
Po druhé - ako som hovoril, IP adresy môžeme ľahko priraďovať a odoberať. Predstavte si, že doma vymeníte tlačiareň. Keby PC komunikovali iba cez MAC adresy, tak musíte každý s PC na sieti prekonfigurovať, že MAC adresa tlačiarne už nie je ABCD, ale EFGH. Pretože komunikujeme pomocou IP adries, tak stačí pripojiť novú tlačiareň, a dať jej rovnakú IP adresu, ako mala stará. Novú MAC adresu si počítača automaticky zistí práve pomocou ARP.
Už som spomenul, že k spojeniu zariadenie v skutočnosti potrebujeme MAC adresu i IP adresu. MAC adresu preto, že všetky dáta nesie Ethernetový rámec, a pomocou MAC adries switch rámca presmerováva na správne zariadenia.
A IP adresu preto, že zariadenie vysielajú pomocou IP adries (tzn. PC dokáže formovať príkaz pre NIC tak, aby poslala dáta na IP adresu). Lenže NIC potrebuje MAC adresu cieľového zariadenia, aby mohla zostaviť samotný Ethernetový rámec a poslať ho. Ako sa teda vykonáva tento preklad IP adresy na MAC adresu?
Address Resolution Protocol - ARP
Protokol ARP špecifikuje veci týkajúce preklade IP adries na MAC adresy. Základom je ARP cache:
Arp cache
Každé zariadenie má v pamäti svoje NIC tabuľku s IP adresami priradeným k MAC adresám.
192.168.2.1 -> E5: 25: 35: AD: C6: 78
192.168.2.18 -> 3D: 45: 11: FE: F4: 09
192.168.2.9 -> 90: 01: 23: E4: A2: 47
192.168.2.3 -> 10: 12: AC: C4: 67: 2E
Poslať niečo na adresu 192.168.2.18 teda znamená poskladať Ethernetový rámec s cieľovou MAC 3D: 45: 11: FE: F4: 09. Podľa tejto MAC adresy je rámec vo Switch presmerovaný na správny PC.
Predstavme si, že sme administrátor siete s dvoma počítačmi, raz tlačiarňou, a jedným routerom. Aby PC spolu mohli napr. Zdieľať súbory, alebo tlačiť a pripojiť sa na internet, musíme všetky 4 zariadení obísť, a dať im IP adresy (v realite je toto automatizované, robí to DHCP server, toto len pre jednoduchosť). Naša sieť bude teda vyzerať takto:
Ak vidíte v IP adresách nejakú pravidelnosť, vidíte správne - IP adresy nie sú prideľované len tak náhodne, a môžete z nich vyčítať veľa informácií. Inak, diagram is IP adresami je reálny príklad (konkrétne mojej) siete. Switch IP adresu nedostane, pretože len preposiela rámca - pre komunikujúce zariadenie je de facto transparentný (nevedia, že medzi nimi nejaký switch je).
ARP cache všetkých zariadení je na začiatku prázdna (buď môžu byť nová, alebo je cache Reštart). Teraz nastane prípad, že z PC1 potrebujeme tlačiť - takže budeme posielať pakety na 192.168.4.3. Na to potrebujeme zistiť MAC adresu tlačiarne. Pošleme teda dotaz všetkým zariadeniam na sieti: "Aká NIC má IP adresu 192.168.4.3?" Odpovie nám tlačiareň - pošle svoju MAC adresu. PC1 si ju zapíše do ARP cache, a potom môže posielať rámca s príkazmi na tlač.
Rámec pre všetky zariadenia na sieti - ethernetový broadcast
Odpoveďou na otázku "Ako pošleme rámec všetkým zariadeniam na sieti?" Je broadcast - to znamená rozoslanie informácie všetkým dostupným zariadením. V Ethernetu je pre tento účel vyhradená broadcastové MAC adresa, ktorej všetky bity majú hodnotu jedna. Hexadecimálne zápis je teda ff: ff: ff: ff: ff: ff.
Ak teda chceme poslať niečo všetkým na sieti, musí NIC zostaviť rámec s touto cieľovou MAC adresou. Rámec odošleme na switch, ten ho preskenuje a zistí, že rámec je broadcastové a rozošle ho na všetky aktívne porty (porty, kde sú pripojené nejaká zariadenia). Každé zariadenie, čo dostane taký rámec, ho prijme a spracuje ďalej -> v tomto prípade zistí, že je to rámec s ARP dotazom na IP adresu 192.168.4.3. Takže router a PC2 rámec po tomto kroku zahodí, tlačiareň zostaví ARP odpoveď, priloží svoju MAC adresu, a pošle rámec na PC1.
Arp paket
Asi vám už došlo, že ARP dotaz a ARP odpoveď je len balík dát (čiže presne prúd bitov), ktorý v Ethernetovom rámci príde do poľa Data. Pre označenie takéhoto balíka dát (či už request alebo response) máme termín ARP paket.
A tu sa tiež vraciame k poľu Éter type (pozri minulý diel). Ak je hodnota v tomto poli menšie ako 1500, potom určuje dĺžku poľa Dáta v bytoch (lebo toto pole nemá byť dlhší ako 1500 bytov). Ak je väčšia, potom sa jedná o označení typu paketu, ktorý je nesený rámcom - napr. IP paket alebo práve ARP paket. Ktoré hodnoty prislúcha ktorým typom (protokolom) spravuje opäť IETF. ARP protokol má priradenú hodnotu 2054 (ďalšie hodnoty nájdete napríklad na Wikipédii).
V tomto prípade teda bude hodnota Éter type slúžiť ako informácia pre NIC, že má poslať dáta v rámci pre ďalšie spracovanie ako ARP paket.
Štruktúra ARP paketu
Použil som celkom nezrozumiteľné mená polí, ktorá však vystihujú ich význam - inžinieri v IETF nevymysleli ARP protokol len pre preklad MAC na IP - dá sa použiť pre preklad akékoľvek "HW adresy" (hardcoded v NIC) na nejakú inú adresu ako je IP.
Význam jednotlivých polí polopaticky:
Protokol linkové vrstvy [2 byty]
Hovorí nám typ rámca (akým protokolom zostavuje NIC rámca), a tým pádom aj adresu (ktorá sa označuje ako Hardvérová adresa), na ktorú sa pýtame - v našom prípade to bude MAC adresa a Ethernet, pre ktorý je táto hodnota 1.
Protokol sieťovej vrstvy [2 byty]
Typ adresy (jej protokolu), podľa ktorej nám má jej vlastník oznámiť svoju HW adresu. Náš prípad: Cieľové zariadenie nám má poslať MAC adresu podľa svojej IP adresy - teda IP protokol. Mimochodom, hodnoty sa berú zo zoznamu pre pole Éter type. Hodnota pre IP protokol je 2048.
Dĺžka adresy protokolu linkovej vrstvy [1 bajt]
Špecifikuje dĺžku HW adresy v bytoch (tá je v šiestom poli ARP paketu). Ethernetová MAC adresa je 6 bytov dlhá => hodnota bude 6.
Dĺžka adresy protokolu sieťovej vrstvy [1 bajt]
Špecifikuje dĺžku adresy (opäť v bytoch), pomocou ktorej sa pýtame (pozri siedme pole ARP paketu) - my sa pýtame IP adresou, v poli teda bude 4.
Operácie [2 byty]
Odtiaľ sa dozvieme, či sa jedná o request (hodnota 1) alebo o reply (hodnota 2).
HW adresa odosielateľa & Protokolová adresa odosielateľa
V týchto poliach bude MAC a IP adresa odosielajúceho zariadenia (v prípade requestu toho PC, ktorý sa pýta, v prípade response toho PC, ktorý zodpovedá). Dôvodom je optimalizácia - akonáhle PC dostane ARP request, zapíše si IP a MAC z týchto polí do vlastnej ARP cache.
HW adresa príjemcu
V ARP requestu je toto pole vynechané - pretože na túto adresu sa ešte len pýtame (ARP request je teda kratšia ako response). V ARP response je tu MAC toho zariadenia, ktoré posielalo ARP request.
Protokolová adresa príjemcu
V requestu je to IP adresa, ku ktorej chceme získať MAC. V response je to opäť IP adresa toho, kto poslal ARP request.
Na záver by neuškodila simulácie
Máme PC a router prepojené pomocou switche. MAC adresy sú pre jednoduchosť skrátené.
PC sa potrebuje pripojiť k internetu - potrebuje teda MAC adresu routera. PC teda vysiela ARP request do siete, a pýta sa na MAC adresu zariadenia 192.168.2.1 (táto adresa je v PC nastavená ako default gateway):
Router prijíma rámec a pozrie sa do Éter type. Vidí, že rámec nesie ARP paket. Pozrie sa teda do neho a zistí, že je to request žiadajúci jeho adresu. Teraz si ako optimalizačný krok zapíše do svojej ARP cache údaje o PC (XYC ---> 192.168.2.3). Potom odošle ARP response:
PC response prijme, a do svojej ARP cache si zapíše údaje o routeru (ABZ ---> 192.168.2.1). Teraz môže posielať rámca s dotazy na webové stránky priamo na router.
To je k ARP protokolu všetko. Nasledujúci diel bude patriť protokolu IP - pozrieme sa trochu bližšie na účel IP adries, objasníme si niekoľko pojmov, a zistíme, čo robia routery.