Šis raksts ir par tīkla protokolu. Par citām jēdziena Arp nozīmēm skatīt nozīmju atdalīšanas lapu.

ARP (angļu: Address Resolution Protocol) ir tīkla slāņa protokols, kas nodrošina IP adrešu sasaisti ar kanāla slāņa protokolu adresēm. ARP parasti lieto kopā ar ethernet, jo tā ir visizplatītākā kanāla slāņa tīklu tehnoloģija (variants kopā ar 802.11 būtiski neatšķiras, jo adresēm ir tāds pat garums).

ARP lieto 4 gadījumos:

  1. Ja divi datori ir pieslēgti pie viena un tā paša tīkla un viens grib nosūtīt paketi otram (te dators, kas sūta paketi mēģina noskaidrot otra datora MAC adresi)
  2. Ja divi datori ir pieslēgti dažādiem tīkliem un tiem ir jālieto rūteris lai sasniegtu vienam otru (te dators, kas sūta paketi, mēģina noskaidrot rūtera MAC adresi)
  3. Ja rūterim ir jāpārsūta paketi uz kādu citu datoru, caur citu rūteri (pieslēgtu pie tā paša tīkla) (pirmais rūteris mēģina noskaidrot otrā rūtera MAC adresi)
  4. Ja rūterim ir jāpiegādā paketi tā paša tīkla datoram (parasti no ārpuses)(rūteris mēģina noskaidrot attiecīgā datora MAC adresi).

Pirmajā gadījumā datori ir pieslēgti pie viena tīkla, pārējos gadījumos dati iet caur rūteri (vai vairāk nekā vienu rūteri).

Pakešu struktūra

labot šo sadaļu

Nosūtāmajām un saņemamajām paketēm ir līdzīga struktūra. Ethernet tīklos ARP paketēm ether type lauku ethernet freima hederī uz liek 0x0806 un nosūta uz broadcast MAC adresi FF:FF:FF:FF:FF:FF. Šajā tabula SHA, SPA, THA un TPA lauki ir parādīti ka būtu 32 bitus gari, lai arī ethernet SHA un THA ir 48 biti un IPv4 SPA un TPA ir 32 biti.

+ Biti 0 - 7 8 - 15 16 - 31
0 Hardware type (HTYPE) Protocol type (PTYPE)
32 Hardware length (HLEN) Protocol length (PLEN) Operation (OPER)
64 Sūtītāja MAC adrese (SHA)
? Sūtītāja IP adrese (SPA)
? Mērķa MAC adrese (THA)
? Mērķa IP adrese (TPA)
  • HTYPE (hardware type) - kanāla slāņa protokols (ethernetam šī lauka vērtība ir 1)
  • PTYPE (protocol type) - tīkla slāņa protokols (IPv4 šī lauka vērtība ir 0x0800)
  • HLEN (hardware length) - kanāla slāņa protokola adreses garums (ethernet ir 48 biti (6 baiti))
  • PLEN (protocol length) - tīkla slāņa protokola adreses garums (IPv4 ir 32 biti (4 baiti))
  • Operation - sūtītāja izpildītā operācija (paketes veids)(1 ir pieprasījumiem un 2 ir atbildēm)
  • Sūtītāja MAC adrese (SHA)(sender hardware address) - paketes nosūtītāja MAC (kanāla slāņa protokola adrese), šī lauka garums ir atkarīgs no šīs adreses garuma, kas dažādiem protokoliem var atšķirties.
  • Sūtītāja IP adrese (SPA)(sender protocol address) - paketes nosūtītāja IP (tīkla slāņa protokola adrese), šī lauka garums ir atkarīgs no šīs adreses garuma, kas dažādiem protokoliem var atšķirties.
  • Mērķa MAC adrese (THA)(target hardware address) - saņēmēja MAC (kanāla slāņa protokola adrese), pieprasījumos šis lauks satur nulles, šī lauka garums ir atkarīgs no šīs adreses garuma, kas dažādiem protokoliem var atšķirties.
  • Mērķa IP adrese (TPA)(target protocol address) - saņēmēja IP (tīkla slāņa protokola adrese), šī lauka garums ir atkarīgs no šīs adreses garuma, kas dažādiem protokoliem var atšķirties.

Ja dators ar IPv4 adresi 10.10.10.123 (heksadecimālā formā 0A.0A.0A.7B) un MAC adresi 00:09:58:D8:11:22 grib nosūtīt IP paketi uz datoru ar IP adresi 10.10.10.140 (heksadecimālā formā 0A.0A.0A.8C), un nezināmu MAC adresi, tad tam ir jāsūta ARP pieprasījumu lai noskaidrotu to adresi. Ja 10.10.10.140 ir ieslēgts un darbojas, tas saņemtu pieprasījumu un aizsūtītu atbildi. Pieprasījums:

+ Biti 0 - 7 8 - 15 16 - 31
0 Hardware type = 1 Protocol type = 0x0800
32 Hardware length = 6 Protocol length = 4 Operation = 1
64 SHA (pirmie 32 biti) = 0x000958D8
96 SHA (pēdējie 16 biti) = 0x1122 SPA (pirmie 16 biti) = 0x0A0A
128 SPA (pēdējie 16 biti) = 0x0A7B THA (pirmie 16 biti) = 0x0000
160 THA (pēdējie 32 biti) = 0x00000000
192 TPA = 0x0A0A0A8C

Ja saņēmēja datoram (10.10.10.140) MAC adrese ir 00:09:58:D8:33:AA, tad atbilstošā atbildes pakete būtu šāda:

+ Biti 0 - 7 8 - 15 16 - 31
0 Hardware type = 1 Protocol type = 0x0800
32 Hardware length = 6 Protocol length = 4 Operation = 2
64 SHA (pirmie 32 biti) = 0x000958D8
96 SHA (pēdējie 16 biti) = 0x33AA SPA (pirmie 16 biti) = 0x0A0A
128 SPA (pēdējie 16 biti) = 0x0A8C THA (pirmie 16 biti) = 0x0009
160 THA (pēdējie 32 biti) = 0x58D81122
192 TPA = 0x0A0A0A7B

Šajā gadījumā 10.10.10.140 ir sūtītājs. Atbiles, atšķirībā no pieprasījumiem, nesūta kā broadcast, tās sūta tieši, jo visas adreses (atbildes sūtītājam) ir zināmas.

ARP announcements

labot šo sadaļu

Tās ir ARP pieprasījumu paketes, kas satur derīgus SHA un SPA un kuri ir vienādi attiecīgi ar THA un TPA. Šādi pieprasījumi negaida atbildi, tos lieto lai atjaunotu (update) visu saņēmēju ARP kešus.

Lai pirms katras IP paketes nosūtīšanas nebūtu jāsūta ARP paketi, saņemtās atbildes kādu laiku glabā ARP kešā (ARP cache). Tā ir tabula, kuras ierakstus aizpilda ARP pieprasījumu atbildes. Windowā šo tabulu var apskatīties ar komandu arp -a. Piemērs:

Interface: 10.0.0.150 --- 0x3
  Internet Address      Physical Address      Type
  10.0.0.136            02-ff-d1-c7-ab-f8     dynamic

Ja ir vairāki tīkla interfeisi, tad ir vairākas tabulas, tos identificē pēc IP adresēm. Šajā piemērā IP adrese ir 10.0.0.150. Internet address ir zināmās IP adreses (šeit tāda ir tikai viena, bet var būt daudz), Physical address ir atbilstošā MAC adrese. Type ir ieraksta tips, šajai tabulai manuāli ir iespējams pievienot permanentos ierakstus (normāli tiem ierakstiem derīguma termiņš ir dažas sekundes), kas saglabājas bezgalīgi ilgi. Ja datoram ir jāsūta paketi uz IP adresi, kura atrodas ARP kešā (vienalga dinamiskais vai permanentais ieraksts), tad nav nepieciešams ARP pieprasījums un IP paketi var sūtīt uzreiz. Ja ierakstam atbilstošā MAC adrese neatbilst, tad (ja ir permanentais ieraksts) ir traucētas komunikācijas (ja ir dinamiskais, tad nosūta ARP pieprasījumu). Permanentos ierakstus dažreiz lieto lai cīnītos pret MAC spoofing un ARP cache poisoning kurus lieto snifošanai switchotos tīklos.