Protokół Odwzorowania Adresów (ARP)
Opisaliśmy już schemat adresowania TCP/IP, w
którym każdy komputer ma przypisany 32-bitowy
adres jednoznacznie identyfikujący go w sieci.
Jak jednak wiemy, dwie maszyny mogą się
komunikować tylko wtedy, kiedy znają nawzajem
swoje adresy fizyczne. Zachodzi więc potrzeba
opracowania oprogramowania, które “zasłoni”
adresy fizyczne i umożliwi programom wysokiego
poziomu pracę tylko z adresami IP. Docelowo
jednak komunikacja jest prowadzona za pomocą
sieci fizycznej i przy użyciu schematu adresów
fizycznych, który zapewnia sprzęt. Nasuwa się
pytanie jak dochodzi do przekształcenia adresu
IP na adres fizyczny tak aby informacja mogła
być poprawnie przesyłana?
Problem ten przedstawimy na
przykładzie sieci Ethernet, w której
mamy do czynienia z długim 48-bitowym
adresem fizycznym przypisanym w
trakcie procesu produkcyjnego do
urządzeń sieciowych. W efekcie podczas
wymiany karty sieciowej w komputerze,
zmienia się adres fizyczny maszyny.
Ponadto nie ma sposobu na zakodowanie
48-bitowego adresu ethernetowego w 32-
bitowym adresie IP
.
Przekształcenia adresu IP na adres fizyczny
dokonuje protokół odwzorowania
adresów ARP (ang. Address Resolution
Protocol), który zapewnia dynamiczne
odwzorowanie i nie wymaga
przechowywania tablicy przekształcania
adresowego. Wykorzystuje on możliwość
rozgłaszania danych w sieci ethernet. W
rozwiązaniu tym nowe maszyny mogą być
łatwo dodawane, ponadto nie wymagane
jest przechowywanie centralnej bazy
danych.
ARP i Pamięć Podręczna
Przedstawiony sposób odwzorowywania adresów ma jednak
wady. Jest zbyt kosztowny aby go używać za każdym razem
gdy jakaś maszyna chce przesłać pakiet do innej: przy
rozgłaszaniu każda maszyna w sieci musi taki pakiet
odebrać i przetworzyć.
W celu zredukowania kosztów komunikacji, komputery
używające protokołu ARP przechowują w pamięci
podręcznej ostatnio uzyskane powiązania adresu IP z
adresem fizycznym, w związku z tym nie muszą ciągle
korzystać z protokołu ARP. Gdy tylko komputer otrzymuje
odpowiedź ARP, zapamiętuje adres IP jego nadawcy i
odpowiadający mu adres sprzętowy, aby móc później go
wykorzystać. Przy przesyłaniu pakietu komputer zawsze,
zanim wyśle prośbę ARP, zagląda do pamięci podręcznej czy
nie ma tam odpowiedniego dowiązania, jeżeli takie
znajduje, to nie musi nic rozgłaszać w sieci.
Zasada Działania ARP
Tak więc protokół ARP umożliwia komputerowi odnajdywanie fizycznego
adresu maszyny docelowej z tej samej sieci fizycznej przy użyciu jedynie
adresu IP.
Możliwe jest wiele udoskonaleń protokołu ARP. Jeśli
komputer A wysyła prośbę o adres fizyczny komputera
C może od razu dowiązać informację o swoim adresie
fizycznym do wysyłanej prośby. Ponieważ prośba ta
dociera do wszystkich komputerów w sieci (jest
przecież rozgłaszana), mogą one automatycznie
umieścić w swoich pamięciach podręcznych
informację o adresie fizycznym komputera A.
Jeśli w komputerze zostanie zmieniony adres fizyczny
(np. w wyniku zmiany karty sieciowej), to może on bez
zapytania o jego adres fizyczny rozgłosić go do innych
komputerów, tak aby wszystkie maszyny uaktualniły
informacje o jego adresie fizycznym w swoich
pamięciach podręcznych.
ARP
(ang. Address Resolution Protocol) - w sieciach
komputerowych jest to metoda znajdowania adresu
sprzętowego hosta, gdy dany jest adres warstwy
sieciowej. Zdefiniowany został w RFC 826.
Jest wykorzystywany przy różnych typach sieci,
zarówno w znaczeniu warstwy sieciowej, jak i
niższych warstw modelu OSI. Oznacza to, iż ARP
nie ogranicza się jedynie do sieci typu Ethernet
przy wykorzystaniu protokołu IPv4, gdzie na
podstawie adresu IP odnajduje sprzętowy adres
MAC. ARP jest wykorzystywane w takich
technologiach LAN jak Token Ring, FDDI, 802.11
oraz w technologiach sieci rozległych, jak IP over
ATM.
Standard ARP
opisuje także zachowanie systemu operacyjnego,
który zarządza tzw. tablicą ARP. Znajdują się w niej
pary: adres warstwy sieciowej i przypisany do niego
adres fizyczny. Zapobiega to tworzeniu zapytania
ARP przy próbie wysłania każdego pakietu. Warto
przy tym zauważyć, że hosty mogą się ze sobą
komunikować za pośrednictwem adresu fizycznego
tylko w obrębie danej sieci w znaczeniu warstwy
drugiej modelu OSI. Jeśli jakieś informacje mają
być przesłane do innej sieci (lub podsieci w sieci
złożonej, sieci oddzielonej routerem, itp.), to
protokół ARP jest wykorzystywany najwyżej do
uzyskania informacji o adresie bramy sieciowej.
ARP jest protokołem komunikacyjnym
pracującym na styku warstw drugiej i
trzeciej modelu ISO/OSI, czyli warstwie
sieciowej. Komunikaty ARP są
enkapsulowane w ramkach warstwy
drugiej, nie służą jednak do przenoszenia
danych poza adresami w hostów i urządzeń.
Protokół ARP nie jest niezbędny do działania
sieci komputerowych, może zostać
zastąpiony przez statyczne wpisy w tablicy
ARP, przyporządkowujące adresom warstwy
sieciowej adresy fizyczne na stałe. Jest to
jednak ekonomicznie nieopłacalne
rozwiązanie.
Format komunikatu ARP
Typ warstwy fizycznej (HTYPE) - typ protokołu
warstwy fizycznej. Możliwe wartości dla pola
HTYPE w tabeli po prawej stronie.
Typ protokołu wyższej warstwy (PTYPE) - dla
protokołu IPv4 jest to 0x0800. Dopuszczalne
wartości są zawarte w tabeli EtherType.
Długość adresu sprzętowego (HLEN) - długość
adresu sprzętowego (MAC) podana w bajtach.
Długość protokołu wyższej warstwy (PLEN) -
długość adresu protokołu, np. IP (4 bajty).
Format komunikatu ARP
Adres sprzętowy źródła
(SHA) - sprzętowy adres (MAC)
nadawcy
Adres protokołu wyższej
warstwy źródła (SPA) - adres
protokołu warstwy wyższej
nadawcy, np. adres IP
Adres sprzętowy
przeznaczenia (THA) -
sprzętowy adres (MAC)
odbiorcy
Adres protokołu wyższej
warstwy przeznaczenia
(TPA) - adres protokołu
warstwy wyższej odbiorcy, np.
adres IP
Operacja (OPER) - kod
operacji ARP. Poniżej
cztery najważniejsze
wartości:
Załóżmy, że komputer X chce przesłać dane do komputera Y.
Adresy sprzętowy przechowywany jest w tablicy ARP, która
jest swego rodzaju pamięcią podręczną. Przed wysłaniem
ramki host sprawdza tablicę ARP, czy znajduje się już tam
adres hosta docelowego. Jeśli jest już tam ten adres
wpisany, to ramka jest wysyłana.
Natomiast jeśli nie ma tam wpisanego MAC adresu to
komputer X wysyła żądanie przesłania MAC adresu
komputera Y, na adres rozgłoszeniowy 255.255.255.255.
Pakiet taki zostanie odebrany przez wszystkie komputery w
sieci. Komputer Y, którego adres IP został przypisany do
poszukiwanego MAC adresu odpowie poprzez wysłanie
swojego adresu sprzętowego. Adres ten zostanie wpisany
w tablicę ARP hosta X, który wysyłał żądanie ARP. Dla
zmniejszenia nakładów potrzebnych do ustalenia MAC
adresu komputera X, który żądał przesłania adresu również
komputer Y, który odpowiedział wysyłając swój adres
sprzętowy zapisuje sobie adres fizyczny komputera X
W ten sposób w przypadku potrzeby późniejszego wysyłania
pakietów do tego samego hosta, komputer wysyłający ma
już w pamięci podręcznej wpisany ten adres. Gdyby za
każdym razem, każdy komputer wysyłał taki żądanie na
adres rozgłoszeniowy, to nastąpiłoby znaczne obciążenie
sieci. Z tego względu algorytm ten ma kilka udoskonaleń.
Jednocześnie z przesłaniem żądania ARP wszystkie
komputery, które to żądanie otrzymały zapisują sobie
MAC adres nadawcy takiego żądania (komputera X) do
tablicy ARP oraz odpowiedź komputera Y. Zwykle
pierwsze zapytanie ARP jest wysyłane tuż po
uruchomieniu komputera. Gdy poszukiwanego
komputera nie ma w sieci lokalnej na zapytanie
odpowiada router podając MAC adres swojego interfejsu.
Prezentację wykonała: