Faktablad

ARP/RARP

(Address Resolution Protocol / Reverse Adress Resolution Protocol)

Johan Futsæther 1998

 

På et lokalnett, som baserer seg på TCP/IP, foregår kommunikasjonen mellom maskinene (nodene) ved hjelp av MAC-adresser. En MAC-adresse er den fysiske adresse som nodens nettverkskort har. MAC-adressen er en 6-byters adresse, vanligvis skrevet i hexadesimal form. For eksempel 08:00:20:0A:8C:6D, hvorav de de 3 første byte er leverandørspesifike og de tre siste byte er unike for kortet. En node som ønsker å kommunisere med en annen node, kjenner ikke i utgangspunktet den andre nodens MAC-adresse. Det må derfor lages en tabell på alle maskiner som viser alle noders MAC-adresser med tilhørende IP-adresse. I prinsippet gjøres dette ved at det sendes ut en forespørsel som kalles ”Broadcast” til alle andre maskiner på nettet. Forespørselen har denne formen: ”Hva er MAC-adressen til noden med denne IP-adressen: (Ip-adresse)”. Siden denne forespørselen går ut som en ”broadcast”, betyr det at alle maskiner sjekker sin egen IP-adresse i forhold til den forespurte IP-adresse. Den maskin som har samsvarende IP-adresse, svarer ved å si: ”Min MAC-adresse er (MAC-adresse)”. Nettverkskortene forstår at dette er en ”Broadcast” ved at de er konstruert slik at de lytter til MAC adressen FF:FF:FF:FF:FF:FF. (255.255.255.255.255 eller 8 enere i hvert felt). En slik forespørsel/svar-prosess foregår ved en protokoll som heter ARP (Adress Resolution Protocol), og som er en del av TCP/IP-familien. ARP lager en tabell (ARP-cache) i den maskinen som sender forespørselen som viser MAC-adressen med tilhørende IP-adresse. For å dekke et helt lokalnett, må det i prinsippet (fra hver maskin) sendes ut like mange ARP-forespørsler som det er noder på nettet. Men siden alle ARP-forespørsler inneholder både MAC-adresse og IP-adresse til senderen, så vil alle maskiner oppdatere sin ARP-cache med dette, selv om Arp-forespørselen ikke er rettet til dem. I praksis vil dette gjøre at ikke ”alle maskiner” trenger å sende ARP-forespørsler til ”alle” maskiner for å få en helt oppdatert ARP-cache. De oppdaterer seg rett og slett ved å bruke informasjonen som ligger i ARP-forespørsler som til en hver tid måtte ligge på nettet. Når en maskin kjenner en annen maskins MAC-adresse, forgår kommunikasjonen deretter ved hjelp av MAC-adressen og ethernet-protokollen. RARP er det motsatte (Recerse) av ARP. RARP finner IP-adressen ved hjelp av MAC-adressen..

 

Hver inngang i ARP-cachen er ikke evigvarende, men kan være gyldig fra 30 sekunder til flere timer. Dette vil si at de ”eldste” inngangene i tabellen kan være borte neste gang du trenger dem. Dette betyr at det må sendes ut en ny ARP-forespørsel på lokalnettet. Det er nærliggende å tro at det må være fornuftig å ha en ARP-cache med lang gyldighet (flere timer). Problemet med dette er at viss du i mellomtiden skifter nettverkskort og dermed får en annen MAC-adresse, så vill ikke denne noden være tilgjengelig før den gamle inngangen i ARP-cachen går ut og en ny ARP-forespørsel sendes ut.  Hvis inngangene i ARP-cachen har for kort gyldighet, får vi problemet med at det blir stor nettverkstrafikk som består av ARP-forespørsler. (Stor broadcasttrafikk). Hvor lenge inngangene i ARP-cachen er gyldig, er avhengig av hva leverandøren av TCP/IP har lagt inn.  I noen tilfelle kan vi som brukere selv konfigurere dette.

 

Slik ser en ARP/RARP-forespørsel ut:

 

Hardware-type (16)

Identifiserer hvilken type net det er, f.eks ethernet.

Protokoll (16)

Identifiserer protokollen f. Eks. IP, apple talk etc.

Mac-adresselengde (8)

Lengden av hver Mac-adresse i byte.

Protokoll-adresselengde (8)

Lengden av protokolladressen i byte.

Type av ARP-forespørsel (16)

1. ARP-forespørsel, 2. ARP-svar, 3. RARP-forespørsel,           4. RARP-svar   

Mac-adressen til sender (32)

De fire første byte senderens Mac-adresse.

Mac-adressen til sender (16)

De to siste byte i senderens Mac-adresse.

IP-adresse til sender (16)

De to første byte i senderens IP-adresse.

IP-adresse til sender (16)

De to siste byte i senderens IP-adresse.

Mac-adresse til mottager. (16)

De to første byte i mottagerens Mac-adresse.

Mac-adresse til Mottager (32)

De fire siste byte i mottagerens Mac-adresse.

Innholdet av denne er avhengig av Type ARP-forespørsel.

IP-adresse til mottager (32)

Mottagerens IP-adresse.

Innholdet av denne er avhengig av Type ARP-forespørsel.

 

Slik ser ARP-cachen ut:

 

 

 

Fysisk port

 

Mac-adresse

 

IP-adresse

Inngangstype

1..xxxx, 2. Feil i denne rad, 3. Dynamisk adresse, 4. Statisk adresse.

Inngang A

 

 

 

 

Inngang B

 

 

 

 

Inngang B+1

 

 

 

 

 

Slik er formatet for ethernetpakken som går i et lokalnett: (tallene i parentes er antall bit)

 

Mac-adressen til mottageren (32)

De fire første byte i Mac-adressen til mottager.

Mac-adressen til mottageren (16)

De to siste byte i Mac-adressen til mottager.

Mac-adressen til senderen. (16)

De to første byte i Mac-adressen til sender

Mac-adsressen til senderen. (32)

Det siste fire byte i Mac-adressen til sender.

Typecode (16)

XXX (16) (XXX betyr: Jeg vet ikke. J.Futs.)

IP-header

(Se eget faktablad: FBtcp-IP-pakker.doc)

TCP-header

 (Se eget faktablad: FBtcp-IP-pakker.doc))

Data

Ethernet CRC (32)

 

  …eller vist på en annen måte….

 

Ethernet-header

Ip-header

TCP-header

Data

TCP-CRC

IP-CRC

Ethernett-CRC.