1 ARP Address Resolution Protocol (RFC 826) aby wysyłać dane tak po sieci lokalnej, jak i pomiędzy różnymi sieciami lokalnymi konieczny jest komplet czterech adresów: adres IP nadawcy i odbiorcy oraz adres MAC nadawcy i odbiorcy ARP to protokół odpowiedzialny za pozyskanie adresu sprzętowego MAC hosta o adresie docelowym IP w sieciach o rozgłoszeniowej topologii logicznej gdy adres sprzętowy odbiorcy zostanie pozyskany, para: adres IP - adres MAC przechowywana jest w tablicy ARP przez pewien czas (wpis dynamiczny) konieczność odświeżania tabeli ARP: wyłączenie węzła, zmiana miejsca podłączenia do sieci w segmencie lokalnym, przeniesienie węzła do innego segmentu, kilkukrotne bezskuteczne próby połączenia alternatywnie można zrobić stały wpis do tablicy ARP (wpis statyczny), co redukuje ruch rozgłoszeniowy protokołu ARP w celu pozyskania takiego adresu, ale nadaje się tylko dla hostów o stałym adresie IP np. drukarek, serwerów itp. oprócz tabeli ARP protokół posługuje się buforem ARP (ARP cache), w którym znajduje się skopiowany fragment tabeli tabela i bufor ARP przechowywane są w pamięci RAM kolejność przeszukiwania: zwykle najpierw bufor, potem tabela tablica ARP jest przeglądana w poszukiwaniu adresu MAC dla danego IP zawsze przed rozpoczęciem procedury pozyskania adresu z sieci jeśli wpis: IP - MAC nie zostanie odnaleziony w tablicy ARP, host rozgłasza żądanie ARP i wszystkie urządzenia w sieci analizują to żądanie jeżeli jedno z urządzeń lokalnych będzie miało pasujący do żądania adres IP, wyśle odpowiedź ARP zawierającą parę adresów IP-MAC w wypadku gdy adres IP należy do sieci lokalnej, a komputer nie istnieje lub jest wyłączony, nie pojawi się odpowiedź na żądanie ARP - w tej sytuacji urządzenie źródłowe zgłasza błąd istnieją dwie metody zbierania przez urządzenia adresów MAC potrzebnych do enkapsulacji danych o monitorowanie ruchu w lokalnym segmencie sieci - wszystkie stacje w sieci Ethernet analizują ruch, aby sprawdzić, czy dane są przeznaczone dla nich - częścią tego procesu jest zapisywanie adresu IP i MAC źródła datagramu w tablicy ARP - zatem podczas przesyłania danych przez sieć pary adresów są umieszczane w tablicy ARP o rozgłoszenie żądania ARP jeśli host docelowy znajduje się poza lokalnym segmentem sieci (co host źródłowy sprawdza przed rozpoczęciem komunikacji przez porównanie prefiksu sieci swojej i docelowej), to pozyskaniem adresu musi się zająć brama domyślna
2 struktura tabeli i bufora wiersz odpowiada jednemu urządzeniu fizycznemu o indeks IF port fizyczny (przyłącze) o adres fizyczny (MAC) o adres logiczny (IP) o typ wartość 4 odwzorowanie statyczne (nie zmienia się) 3 odwzorowanie dynamiczne (zmienia się) 2 pozycja niepoprawna 1 żadne z powyższych działanie protokołu ARP 1. host zamierza wysłać dane do IP docelowego 2. protokół ARP szuka dopasowania IP-MAC w buforze i tabeli 3. jeśli znalazł - host używa tego adresu MAC do wysłania ramki koniec 4. jeśli nie znalazł - ARP rozgłasza komunikat poszukiwania hosta o docelowym IP (komputer, który rozpoznał swoje IP wysyła odpowiedź ARP na adres stacji, z której rozgłoszenie wyszło) 5. host dokonuje wpisu w tabeli ARP i w buforze
3 dane ramki żądania ARP (ARP request) i odpowiedzi ARP (ARP reply) 32 bits Typ sprzętu Typ protokołu HLEN PLEN Kod operacji Adres sprzętowy nadawcy (oktety 0-3) zmienna długość Adres sprzętowy nadawcy (oktety 4-5) Adres protokołowy nadawcy (oktety 2-3) Adres protokołowy nadawcy (oktety 0-1) Adres sprzętowy odbiorcy (oktety 0-1) Adres sprzętowy odbiorcy (oktety 2-5) Adres protokołowy odbiorcy (oktety 0-3) odpowiedź wypełnia wszystkie pola, żądanie zostawia puste pole adresu sprzętowego odbiorcy Typ sprzętu (Hardware Type) 16 bitów określa typ interfejsu sprzętowego np. 1 Ethernet, 6 IEEE 802.X, 15 - Frame Relay, 16 ATM Typ protokołu (Protocol Type) 16 bitów określa typ protokołu wykorzystywanego przez urządzenie wysyłające np. 0x800=2048 IP, 2054 ARP, 32821 RARP, 32813 AppleTalk Długość adresu sprzętowego (HLEN, Hardware Address Length) 8 bitów podaje długość adresu sprzętowego w datagramie (w bajtach), dla Ethernetu 6 bajtów Długość adresu protokołowego (PLEN, Protocol Address Length) 8 bitów podaje długość adresu protokołu warstwy wyższej w datagramie (w bajtach), dla IP 4 bajty
4 Kod operacji (Opcode) 16 bitów informuje czy datagram jest żądaniem ARP (wartość 1), czy odpowiedzią ARP (wartość 2) Adres sprzętowy nadawcy (Sender Hardware Address) adres fizyczny urządzenia wysyłającego Adres protokołu nadawcy (Sender Protocol Address) adres IP urządzenia wysyłającego, jeśli jest używany protokół IP Adres sprzętowy odbiorcy (Recipient Hardware Address) adres fizyczny urządzenia odbierającego Adres protokołu odbiorcy (Recipient Hardware Address) adres IP urządzenia odbierającego, jeśli jest używany protokół IP przykład: stacja 2 chce wysłać dane do stacji 4, obie stacje znajdują się w tym samym segmencie sieci stacja 2 : adres MAC=AF2, IP=AL2 stacja 4 : adres MAC=AF4, IP=AL4 rozgłaszane żądanie ARP w sieci Ethernet od stacji 2
5 odpowiedź ARP w sieci Ethernet od stacji 4 protokół ARP jest hermetyzowany bezpośrednio w warstwie łącza danych - nie jest hermetyzowanyny przez protokoły warstw sieci (np. IP), dlatego pakiety ARP nie mogą być przekazywane przez routery! jeśli nie zdefiniowano domyślnej bramy sieć będzie działała tylko w ramach segmentu lokalnego wykrywanie powielonych adresów IP niektóre implementacje TCP/IP (np. w MS Windows) wysyłają żądanie ARP zawierające w polu adresu docelowego adres własny - jeśli na takie żądanie odpowie jakaś inna stacja posiadająca taki sam adres w danym segmencie sieci - oznacza to błąd przydziału adresów lub zamierzone działania godzące w bezpieczeństwo sieci polecenie pozwalające modyfikować tabele ARP (Linux/Windows) arp a wyświetla aktualne wpisy ARP arp s IP MAC dodaje statyczny wpis arp d IP usuwa wpis w tablicy
6 Jak można uzyskać połączenie z hostem spoza swojego segmentu sieci? Załóżmy, że na interfejsie sieciowym hosta mamy skonfigurowany adres IP i maskę, a w jego tablicy routingu nie ma adresu IP bramy. Chcemy wysłać pakiet do innego hosta. Zachodzą tu trzy sytuacje: 1. host docelowy Y jest w tej samej podsieci oraz w tym samym segmencie sieci, co host źródłowy X (host źródłowy widzi to analizując swoją maskę) ramka wyjdzie z X na adres MAC Y (wcześniej X rozgłosi zapytanie ARP kto ma IP=Y i odpowie mu Y) 2. host docelowy Y jest dla hosta źródłowego X hostem odległym aby zaistniała komunikacja pomiędzy X i Y konieczne jest: ustawienie na hoście źródłowym bramy domyślnej (wtedy router widząc rozgłoszenie ARP z X o treści kto ma IP=router odpowie przesyłając swój adres MAC X używa wtedy następujących adresów docelowych: IP=Y, MAC=router, a router routuje pakiet do tej obcej sieci) 3. host docelowy Y jest w tej samej podsieci, co host źródłowy X, ale w innym segmencie sieci (oba hosty są rozdzielone routerem; taka sytuacja jest możliwa, kiedy maska na hoście źródłowym jest mniej restrykcyjna, niż ustawiona na routerze) aby zaistniała komunikacja pomiędzy X i Y konieczne jest: włączenie protokół proxy-arp na routerze, do którego podłączony jest host źródłowy (wtedy router widząc rozgłoszenie ARP z X o treści kto ma IP=Y sam odpowie przesyłając swój adres MAC X używa wtedy następujących adresów docelowych: IP=Y, MAC=router) Brama domyślna brama domyślna to opcja hosta umożliwiająca przechowywanie adresu IP interfejsu routera w konfiguracji hosta jak używany jest adres IP bramy? zanim host wyśle pakiet, musi określić, czy adres docelowy należy do jego własnej podsieci host wykonuje binarny AND pomiędzy adresem docelowym i maską podsieci rezultat jest porównywany z binarnym AND pomiędzy własnym adresem i maską podsieci jeśli prefiksy sieci nie są te same konieczne jest odesłanie takiego pakietu do bramy domyślnej (która wyśle go dalej) host musi ustalić adres fizyczny bramy domyślnej (zakładamy, że została skonfigurowana na nim brama) wysyłane jest zapytanie protokołu ARP przez rozgłoszenie rozgłoszenie takie odbierają w segmencie sieci wszystkie stacje oraz router, który odsyła na adres fizyczny, skąd rozgłoszenie przyszło swój adres fizyczny MAC
7 Proxy ARP (RFC 1027) protokół Proxy ARP jest odmianą protokołu ARP: router wysyła do hosta odpowiedź ARP z adresem MAC interfejsu, na którym otrzymał żądanie - router odpowiada takim adresem MAC na żądania, których adres IP nie należy do zakresu segmentu hosta wysyłającego, ale nie jest kierowany na adres bramy kiedy taka sytuacja jest możliwa? możliwa jest sytuacja, że host sprawdza, że stacja docelowa jest w jego sieci lokalnej, natomiast w rzeczywistości znajduje się w innym segmencie sieci (na innym interfejsie routera - jest to możliwe gdy maska maski ustawione na routerze są bardziej restrykcyjne, niż maski ustawione na hostach w obu segmentach) w takiej sytuacji host wysyłający wyśle rozgłoszenie ARP, które nie przyniesie oczekiwanego rezultatu, ponieważ host docelowy jest w innej sieci lokalnej i rozgłoszenie zostanie zatrzymane na routerze aby w takim przypadku była możliwa komunikacja, konieczne jest włączenie na interfejsie routera, na który mogą trafiać rozgłoszenia protokołu ARP - protokołu Proxy ARP protokół Proxy ARP odeśle stacji wysyłającej adres MAC interfejsu routera, do którego rozgłoszenie doszło - stacja użyje go do przesłania ramki do routera, a router dostarczy pakiet do hosta docelowego znajdującego się na innym interfejsie przykład host 160.30.100.20/16 lub host 160.30.100.10/16 chce wysłać dane do hosta 160.30.100.20/16 obecność lub brak wpisu bramy domyślnej na hoście wysyłającym nie gra roli konieczny jest protokół Proxy ARP uruchomiony na interfejsie routera o adresie 160.30.100.1/24