CZ 
06.10.2024 Hanuš VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
TCP/IP - finding MAC address to IP - ARP

TCP/IP - nalezení MAC adresy k IP - ARP

| Petr Bouška - Samuraj |
Zatím poslední dvanáctá část seriálu o počítačových sítích se stručně věnuje protokolu ARP. Jedná se o důležitý protokol, který slouží k nalezení MAC adresy stanice, která má určitou IP adresu. Protože MAC adresy potřebujeme při každé komunikaci, tak se ARP využívá velice často.
zobrazeno: 75 017x (74 994 CZ, 23 EN) | Komentáře [10]

Počítačové sítě jsou často založeny na technologii ethernet a používají protokol TCP/IP. Ve chvíli, kdy chtějí spolu dvě zařízení komunikovat, tak potřebují znát MAC adresu a IP adresu. Svoje údaje samozřejmě stanice zná (má je nastaveny). Cílová stanice se běžně adresuje pomocí doménového jména (DN - domain name či FQDN - full qualified domain name), které lze (a musíme) převést na IP adresu.

Princip komunikace mezi stanicemi v síti jsem pospal v článku TCP/IP a ethernet - cesta v síti, aktivní síťové prvky. Zde vidíme, že vždy potřebujeme MAC adresu buď cílové stanice nebo routeru/gatewaye na cestě (další hop). Takže potřebujeme najít MAC adresu nějaké stanice, u které známe její IP adresu.

Standardizovaný protokol, který hledá MAC adresu k zadané IP adrese, se jmenuje Address Resolution Protocol (ARP) a je definován v RFC 826. Jedná se o protokol, který běží na síťové vrstvě TCP/IP modelu (2. vrstva), tedy na stejné úrovni jako IP protokol.

Pozn.: Protokol ARP je sice primárně určen pro ethernet, ale pracuje i v dalších technologiích jako Token Ring, IEEE802.11, FDDI či ATM.

Princip funkce ARP

Pozn.: Jako zdrojovou stanici označuji ten stroj, který hledá MAC adresu podle IP adresy. Cílová stanice má nastavenu hledanou IP adresu.

  • zdrojová stanice sestaví ARP žádost (request) a odešle ji jako broadcast
  • všechny stanice na lokálním segmentu přijmou žádost, a pokud nemají tuto IP, tak ji ignorují
  • cílová stanice sestaví ARP odpověď (response) a odešle ji jako unicast zdrojové stanici

Pozn.: Jako broadcastová adrese se používá ff:ff:ff:ff:ff:ff

Struktura ARP paketu

Formát žádosti i odpovědi je obdobný. Rozdíl je v typu u rámce, požadavek má v ethernetové hlavičce nastaven typ na 0x0806 a odpověď na 0x0835. Dále se liší vyplněné hodnoty, operation code je 1 pro žádost a 2 pro odpověď. V žádosti je cílová hardwarová adresa nastavena na nuly a v odpovědi je nastavena na správnou hodnotu.

Pozn.: V obecném případě je MAC adresa hardwarová adresa a IP adresa je protokol adresa. Já zde popisuji použití pro IP a MAC adresy, ale všude je možno zaměnit dle technologie.

bits 0 - 7 8 - 15 16 - 31
0 Hardware type (2B) Protocol type (2B)
32 Hardware size (1B) Protocol size (1B) Operation code (2B)
64 Sender MAC address (6B)
96 Sender MAC address (cont.) Sender IP address (4B)
128 Sender IP address (cont.) Target MAC address (6B)
160 Target MAC address (cont.)
192 Target IP address (4B)

ARP oznámení (announcement)

Speciálním typem ARP paketu je ARP oznámení (announcement), které neslouží ke zjištění něčí MAC adresy, ale oznámení mojí MAC adresy ostatním stanicím na síti. Paket je většinou podobný ARP dotazu, má vyplněny IP a MAC adresu odesílatele a jako IP adresu cíle má svoji IP. Používá se například, když se změní IP adresa stanice, rozesláním oznámení se aktualizuje ARP cache ostatních stanic.

ARP cache

Aby se při probíhající komunikaci nemusely stále posílat ARP dotazy, tak se na zařízeních používá ARP cache, kde se po určitou dobu (v řádu minut) uchovávají kombinace IP adresy a MAC adresy.

V operačním systému Windows nemáme nástroj pro vytvoření ARP dotazu, ale stačí použít například příkaz ping na patřičnou IP adresu. ARP se používá automaticky pokaždé, když je třeba zaslat rámec (data do sítě). Pro prohlížení ARP cache můžeme použít řádkový příkaz arp -a.

Inverse ARP

Opačným protokolem k ARP je Inverse Address Resolution Protocol (Inverse ARP nebo InARP), který k zadané MAC adrese hledá IP adresu. InARP se používal u Frame Relay a ATM sítí, dnes se s ním asi nesetkáme.

Reverse ARP

Protokol Reverse ARP (RARP), podobně jako InARP, slouží k nalezení IP adresy k MAC adrese. RARP ovšem hledá IP adresu pro sebe sama. Tato metoda se již dnes nepoužívá, protože byla nahrazena nejprve pomocí BOOTP (Bootstrap protocol) a dnes DHCP (Dynamic Host Configuration Protocol). Pro RARP musely být na serveru manuálně nastaveny přiřazení MAC adresy a IP adresy, navíc to není protokol nad IP, ale samostatně na stejné úrovni. Je definován v RFC 903.

Související články:

Počítačové sítě - Computer networks

Tento seriál se věnuje základům počítačových sítí. Jsou zde stručně popsány důležité praktické aspekty, které by měl znát každý, kdo se o sítě zajímá. Obsahuje jedny z nejčtenějších článků na tomto webu. Je využíváno pro výuku na školách.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] yuko

    Diky za clanok, skoro som uz zabudol na toto arp-ovatko , prave som instaloval nmap ale vdaka clanku som si este spomenul na mladi, dik ;-)

    Pátek, 28.09.2007 14:35 | odpovědět
  2. [2] STANDA-CHEB

    jezis marja,,,ja fekt nejsem odbornik,,,zni to tady zajimave...ale moc mi to nepomohlo,,,me totiz zajima jak prakticky (nejenom teoreticky)jak tu MAC adresu ziskam,,,jedna se totiz o to ze mam routr u nehoz tuto vecicku nemuzu nikde najit ..original stitek je jaksi osoupany a necitelny,,,takze bych potreboval poradit pokud to jde,jakym prikazem (nejspis v dos radku) tuto informaci ziskam,,diky ,,pokud nekdo poradite budu rad,,,,,,,,,

    Sobota, 17.11.2007 18:56 | odpovědět
  3. [3] Samuraj

    odpověď na [2]STANDA-CHEB: V článku je popsaná i praktická možnost zjištění MAC adresy pod Windows. Jinak pro ten router je řada možností, ale asi nejjednodušší bude to co je v článku. Je potřeba, aby router běžel a znát jeho IP adresu. Pak ve Windows v příkazové řádce zadáme ping ip-adresa-routeru, následně zadat arp -a. Ve výpisu se najde řádek s danou IP adresou a k ní je vidět MAC adresa.

    Neděle, 18.11.2007 17:33 | odpovědět
  4. [4] Mišák

    Díky za skvělé články, vše je přehledné a srozumitelné! ;-)

    Pátek, 22.05.2009 21:23 | odpovědět
  5. [5] Čoudů Tajp-ár

    Parádní články...podané srozumitelnou formou ...jen tak dál ;-)

    Pátek, 31.07.2009 11:27 | odpovědět
  6. [6] Pavlína

    Děkuji za super IT článek napsaný lidskou s srozumitelnou formou. Moc mi to pomohlo. Přelouskám si i ostatní články.

    Středa, 16.06.2010 15:06 | odpovědět
  7. [7] Vitas

    odpověď na [3]Samuraj: bohužel pokud to někdy fungovalo, tak už to nefunguje...

    Pátek, 03.09.2010 17:31 | odpovědět
  8. [8] Ondras

    odpověď na [7]Vitas: ale funguje a spolehlive

    • na komentář odpověděl [10]TT
    Pátek, 08.10.2010 09:28 | odpovědět
  9. [9] Jakub

    Super články, všem doporučuji, díky. ;-)

    Středa, 17.12.2014 20:49 | odpovědět
  10. [10] TT

    odpověď na [8]Ondras: Myslím že chtěl říct že nefunguje ten router....

    Pátek, 31.03.2023 11:14 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách