3. díl - Sítě - Address Resolution Protocol

Sítě Sítě - Address Resolution Protocol

Dosud jsem nezmínil, že pro komunikaci přes internet potřebujete kromě MAC adresy také přidělenou IP adresu. Dále řeknu něco o ARP protokolu, pomocí něhož si PC může podle IP adresy vyžádat MAC adresu daného zařízení. Ale nejprve - co jsou to ty IP adresy:

IP adresa

IP adresa je 32-bitové číslo, které slouží jako adresa (identifikátor) pro dané zařízení. Pěkné přirovnání je číslo popisné a orientační. MAC adresa je popisné číslo, IP adresa orientační. Kromě toho můžeme mít ještě jméno zařízení (hostname), o tom ale až v budoucnu, když budeme řešit DNS.

IP adresa se zapisuje jako čtyři osmibitové bloky (oktety) oddělené tečkou – binární zápis se převádí na decimální čísla. Příklady: 192.168.20.3 nebo 10.211.6.90.

Od MAC adresy se liší tím, že ji můžeme snadno přiřadit nebo odebrat jakékoliv NIC. Možná zní ta definice zmateně – vždyť už máme MAC adresu, která identifikuje daný stroj. Na co tedy IP adresy?

Zaprvé – pokud má zařízení IP adresu, může procházet přes router – a připojit se tedy na internet.

Zadruhé – jak jsem říkal, IP adresy můžeme snadno přiřazovat a odebírat. Představte si, že doma vyměníte tiskárnu. Kdyby PC komunikovaly pouze přes MAC adresy, tak musíte každý s PC na síti překonfigurovat, že MAC adresa tiskárny už není ABCD, ale EFGH. Protože komunikujeme pomocí IP adres, tak stačí připojit novou tiskárnu, a dát jí stejnou IP adresu, jako měla stará. Novou MAC adresu si počítače automaticky zjistí právě pomocí ARP.

Už jsem zmínil, že ke spojení zařízení ve skutečnosti potřebujeme MAC adresu i IP adresu. MAC adresu proto, že všechna data nese Ethernetový rámec, a pomocí MAC adres switch rámce přesměrovává na správná zařízení.

A IP adresu proto, že zařízení vysílají pomocí IP adres (tzn. PC dokáže formovat příkaz pro NIC tak, aby poslala data na IP adresu). Jenomže NIC potřebuje MAC adresu cílového zařízení, aby mohla sestavit samotný Ethernetový rámec a poslat jej. Jak se tedy provádí tento překlad IP adresy na MAC adresu?

Address Resolution Protocol – ARP

Protokol ARP specifikuje věci týkající překladu IP adres na MAC adresy. Základem je ARP cache:

ARP cache

Každé zařízení má v paměti své NIC tabulku s IP adresami přiřazený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

Poslat něco na adresu 192.168.2.18 tedy znamená seskládat Ethernetový rámec s cílovou MAC 3D:45:11:FE:F4:09. Podle této MAC adresy je rámec ve Switchi přesměrován na správný PC.

Představme si, že jsme administrátor sítě se dvěma počítači, jednou tiskárnou, a jedním routerem. Aby PC spolu mohli např. sdílet soubory, nebo tisknout a připojit se na internet, musíme všechny 4 zařízení obejít, a dát jim IP adresy (v realitě je tohle automatizované, dělá to DHCP server, tohle jen pro jednoduchost). Naše síť bude tedy vypadat takto:

ARP network

Pokud vidíte v IP adresách nějakou pravidelnost, vidíte správně – IP adresy nejsou přidělovány jen tak náhodně, a můžete z nich vyčíst spoustu informací. Jinak, diagram i s IP adresami je reálný příklad (konkrétně mojí) sítě. Switch IP adresu nedostane, protože jenom přeposílá rámce – pro komunikující zařízení je de facto transparentní (nevědí, že mezi nimi nějaký switch je).

ARP cache všech zařízení je na začátku prázdná (buď mohou být nová, nebo je cache resetovaná). Nyní nastane případ, že z PC1 potřebujeme tisknout – takže budeme posílat pakety na 192.168.4.3. Na to potřebujeme zjistit MAC adresu tiskárny. Pošleme tedy dotaz všem zařízením na síti: „Jaká NIC má IP adresu 192.168.4.3 ?“ Odpoví nám tiskárna – pošle svoji MAC adresu. PC1 si ji zapíše do ARP cache, a poté může posílat rámce s příkazy k tisku.

Rámec pro všechna zařízení na síti – ethernetový broadcast

Odpovědí na otázku „Jak pošleme rámec všem zařízením na síti?“ je broadcast – to znamená rozeslání informace všem dostupným zařízením. V Ethernetu je pro tento účel vyhrazená broadcastová MAC adresa, jejíž všechny bity mají hodnotu jedna. Hexadecimální zápis je tedy ff:ff:ff:ff:f­f:ff.

Pokud tedy chceme poslat něco všem na síti, musí NIC sestavit rámec s touto cílovou MAC adresou. Rámec odešleme na switch, ten jej proskenuje a zjistí, že rámec je broadcastový a rozešle jej na všechny aktivní porty (porty, kde jsou připojena nějaká zařízení). Každé zařízení, co obdrží takový rámec, jej přijme a zpracuje dále -> v tomto případě zjistí, že je to rámec s ARP dotazem na IP adresu 192.168.4.3. Takže router a PC2 rámec po tomto kroku zahodí, tiskárna sestaví ARP odpověď, přiloží svou MAC adresu, a pošle rámec na PC1.

ARP paket

Asi vám už došlo, že ARP dotaz a ARP odpověď je pouze balík dat (neboli přesně proud bitů), který v Ethernetovém rámci přijde do pole Data. Pro označení takového balíku dat (ať už request nebo response) máme termín ARP paket.

A zde se také vracíme k poli Ether type (viz minulý díl). Pokud je hodnota v tomto poli menší než 1500, pak určuje délku pole Data v bytech (poněvadž toto pole nemá být delší než 1500 bytů). Pokud je větší, pak se jedná o označení typu paketu, který je nesen rámcem – např. IP paket nebo právě ARP paket. Které hodnoty přísluší kterým typům (protokolům) spravuje opět IETF. ARP protokol má přiřazenou hodnotu 2054 (další hodnoty najdete třeba na Wikipedii).

V tomto případě tedy bude hodnota Ether type sloužit jako informace pro NIC, že má poslat data v rámci pro další zpracování jako ARP paket.

Struktura ARP paketu

ARP struktura paketu

Použil jsem celkem nesrozumitelné jména polí, která však vystihují jejich význam - inženýři v IETF nevymysleli ARP protokol jenom pro překlad MAC na IP – dá se použít pro překlad jakékoliv „HW adresy“ (pevně zakódovaná v NIC) na nějakou jinou adresu než je IP.

Význam jednotlivých polí polopaticky:

Protokol linkové vrstvy [2 byty]

Říká nám typ rámce (jakým protokolem sestavuje NIC rámce), a tím pádem i adresu (která se označuje jako Hardwarová adresa), na kterou se ptáme – v našem případě to bude MAC adresa a Ethernet, pro který je tato hodnota 1.

Protokol síťové vrstvy [2 byty]

Typ adresy (jejího protokolu), podle které nám má její vlastník sdělit svou HW adresu. Náš případ: Cílové zařízení nám má poslat MAC adresu podle svojí IP adresy – tedy IP protokol. Mimochodem, hodnoty se berou ze seznamu pro pole Ether type. Hodnota pro IP protokol je 2048.

Délka adresy protokolu linkové vrstvy [1 bajt]

Specifikuje délku HW adresy v bytech (ta je v šestém poli ARP paketu). Ethernetová MAC adresa je 6 bytů dlouhá => hodnota bude 6.

Délka adresy protokolu síťové vrstvy [1 bajt]

Specifikuje délku adresy (opět v bytech), pomocí které se tážeme (viz sedmé pole ARP paketu) – my se tážeme IP adresou, v poli tedy bude 4.

Operace [2 byty]

Odtud se dozvíme, zda se jedná o request (hodnota 1) nebo o reply (hodnota 2).

HW adresa odesílatele & Protokolová adresa odesílatele

V těchto polích bude MAC a IP adresa odesílajícího zařízení (v případě requestu toho PC, který se dotazuje; v případě response toho PC, který odpovídá). Důvodem je optimalizace – jakmile PC obdrží ARP request, zapíše si IP a MAC z těchto polí do vlastní ARP cache.

HW adresa příjemce

V ARP requestu je toto pole vynechané – protože na tuto adresu se teprve ptáme (ARP request je tedy kratší než response). V ARP response je zde MAC toho zařízení, které posílalo ARP request.

Protokolová adresa příjemce

V requestu je to IP adresa, ke které chceme získat MAC. V response je to opět IP adresa toho, kdo poslal ARP request.

Na závěr by neuškodila simulace

Máme PC a router propojené pomocí switche. MAC adresy jsou pro jednoduchost zkrácené.

Simulace ARP

PC se potřebuje připojit k internetu – potřebuje tedy MAC adresu routeru. PC tedy vysílá ARP request do sítě, a ptá se na MAC adresu zařízení 192.168.2.1 (tato adresa je v PC nastavená jako default gateway):

ARP request

Router přijme rámec a podívá se do Ether type. Vidí, že rámec nese ARP paket. Podívá se tedy do něj a zjistí, že je to request žádající jeho adresu. Nyní si jako optimalizační krok zapíše do své ARP cache údaje o PC (XYC --- > 192.168.2.3). Poté odešle ARP response:

ARP response

PC response přijme, a do své ARP cache si zapíše údaje o routeru (ABZ --- > 192.168.2.1). Nyní může posílat rámce s dotazy na webové stránky přímo na router.

To je k ARP protokolu vše. Následující díl bude patřit protokolu IP – podíváme se trochu blíž na účel IP adres, objasníme si několik pojmů, a zjistíme, co dělají routery.


 

  Aktivity (1)

Článek pro vás napsal Lukas C#
Avatar
Věnuji se IT spíše co se týče SW, baví mě programování v C#. Nejvíc mě však těší, když můžu pomáhat a učit ostatní :-)

Jak se ti líbí článek?
Celkem (20 hlasů) :
4.94.94.94.94.9


 


Miniatura
Předchozí článek
Sítě - Ethernet a rozbočovače
Miniatura
Všechny články v sekci
Síťové technologie
Miniatura
Následující článek
Sítě - Internet a směrování dat

 

 

Komentáře

Avatar
Lako
Člen
Avatar
Lako:

Zajímavý článek, díky za něj !

 
Odpovědět  +1 5.10.2015 0:41
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Lako
Lukas C#:

Díky za tvé díky :-)

 
Odpovědět 5.10.2015 13:23
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Máš to pěkné. Já tedy síťařině nehovím vůbec, ale právě proto si rád o tom přečtu.
Pokud budeš dělat další protokoly šikla by se jedna taková "potvrzovací" záležitost ve smyslu co nevidím - tomu nevěřím. Něco takového jako , pokud chcete vidět co tam vlastně lítá, spusťte si Wireshark nebo netscantool/fid­dlera a tam to máte jako na dlani.

 
Odpovědět  +2 5.10.2015 14:21
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Milan Křepelka
Lukas C#:

S wiresharkem ještě moc neumím, ale díky za nápad, něco takového udělám, až budou články o protokolech všech TCP/IP vrstev - například [Ethernet[IP[TCP[H­TTP]]]].

 
Odpovědět 5.10.2015 15:03
Avatar
Lukáš Slabý (LynSis):

Super článek :)

 
Odpovědět 5.10.2015 19:52
Avatar
Pavel Chmelař:

velice krasne vysvetleno :]

Odpovědět 9.10.2015 10:39
když to nejde, zkus to jinak
Avatar
jantleman
Člen
Avatar
jantleman:

Perfektný článok, nenašiel som nikde na nete nič lepšie. Už sa teším na pokračovanie :)

 
Odpovědět 11.11.2015 11:16
Avatar
-Mirec-
Člen
Avatar
-Mirec-:

Vyborny clanok, vdaka

 
Odpovědět 24. května 15:04
Avatar
Odpovědět 30. listopadu 11:12
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.