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.
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 ;-)
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,,,,,,,,,
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.
Díky za skvělé články, vše je přehledné a srozumitelné! ;-)
Parádní články...podané srozumitelnou formou ...jen tak dál ;-)
Děkuji za super IT článek napsaný lidskou s srozumitelnou formou. Moc mi to pomohlo. Přelouskám si i ostatní články.
odpověď na [3]Samuraj: bohužel pokud to někdy fungovalo, tak už to nefunguje...
odpověď na [7]Vitas: ale funguje a spolehlive
Super články, všem doporučuji, díky. ;-)
odpověď na [8]Ondras: Myslím že chtěl říct že nefunguje ten router....