Skuteczna komunikacja w sieci lokalnej wymaga tłumaczenia logicznych adresów IP na fizyczne adresy MAC — to kluczowe ogniwo między rutingiem (warstwa 3) a transmisją ramek (warstwa 2). W IPv4 odpowiada za to Address Resolution Protocol (ARP), a w IPv6 — Neighbor Discovery Protocol (NDP)

Niniejszy materiał przedstawia mechanizmy ARP i NDP, ich przebieg działania, strukturę pakietów, implikacje bezpieczeństwa oraz najważniejsze różnice projektowe i operacyjne.

Podstawy adresowania w warstwie sieci i warstwie łącza danych

Dwupoziomowy system adresowania

Rodzina protokołów IP korzysta z dwóch typów adresów działających na różnych warstwach. W warstwie sieci (L3) używane są adresy IP (IPv4: 32 bity, IPv6: 128 bitów). W warstwie łącza danych (L2) używane są adresy MAC (Media Access Control) — 48‑bitowe identyfikatory interfejsów sieciowych.

Problem do rozwiązania jest prosty: jeśli host zna adres IP celu w tym samym segmencie, musi jeszcze poznać jego adres MAC, aby poprawnie zbudować ramkę L2. Bez dynamicznego mapowania IP→MAC komunikacja lokalna byłaby nieefektywna lub wymagałaby ręcznej konfiguracji na każdym urządzeniu.

Proces enkapsulacji

Aby zobaczyć, gdzie ARP i NDP są niezbędne, warto prześledzić enkapsulację danych w stosie sieciowym:

  1. warstwa transportowa – dodaje nagłówki (np. porty TCP/UDP) do danych aplikacji;
  2. warstwa sieciowa – dodaje nagłówek IP ze źródłowym i docelowym adresem IP;
  3. warstwa łącza danych – tworzy ramkę z adresami MAC źródła i celu; tu wymagane jest ustalenie MAC odbiorcy.

Protokół ARP w IPv4 – mechanizm i działanie

Podstawowe funkcje i przeznaczenie

ARP (RFC 826, STD 37) działa lokalnie w obrębie jednej domeny rozgłoszeniowej i służy do mapowania IPv4→MAC. Routery nie przekazują żądań ARP, a więc protokół nie wykracza poza jeden segment L2 — to zamierzona cecha projektu.

ARP jest bezstanowy (stateless): hosty nie utrzymują stanu wymian, choć prowadzą pamięć podręczną ARP dla wydajności. Ta prostota ułatwia implementację, ale tworzy również znane wektory ataków.

Proces żądania i odpowiedzi ARP

Poniżej znajduje się skrócony przebieg wymiany w ARP, gdy w pamięci ARP brak wpisu dla celu:

  1. host wysyła ARP Request jako rozgłoszenie na FF:FF:FF:FF:FF:FF, zawierając własny IP i MAC oraz poszukiwany adres IPv4;
  2. każdy węzeł odbiera ramkę, ale tylko ten, którego IP pasuje do zapytania, przygotowuje ARP Reply z własnym adresem MAC;
  3. odpowiedź jest wysyłana unikastowo do nadawcy żądania, który zapisuje mapowanie w pamięci ARP.

Struktura i pola pakietu ARP

Dla większej przejrzystości kluczowe pola ARP (RFC 826) zestawiono w tabeli wraz z typowymi wartościami dla Ethernet/IPv4:

Pole Znaczenie Typowe wartości
HTYPE typ adresowania sprzętowego Ethernet: 1
PTYPE typ protokołu warstwy sieci IPv4: 0x0800
HLEN długość adresu sprzętowego 6 bajtów (MAC 48‑bit)
PLEN długość adresu protokołu 4 bajty (IPv4)
OPER rodzaj operacji 1: Request, 2: Reply
SHA adres MAC nadawcy np. 00:11:22:33:44:55
SPA adres IP nadawcy np. 192.0.2.10
THA adres MAC celu nieznany w Request, uzupełniany w Reply
TPA adres IP celu np. 192.0.2.20

Zarządzanie pamięcią podręczną ARP i działanie czasów wygasania

Pamięć ARP przyspiesza wysyłanie pakietów, eliminując konieczność ciągłych zapytań. Po wygaśnięciu wpisu host ponawia rozwiązywanie adresu. Poniżej zestawiono przykładowe wartości domyślne:

System/Platforma Domyślny timeout ARP Uwagi
Windows 10 minut dynamiczne wpisy wygasają przy bezczynności
Cisco IOS 240 minut (+ losowe 0–30 min) jitter zapobiega skokowym odświeżeniom

Wpisy statyczne ARP nie wygasają do czasu usunięcia lub restartu. Podstawowe operacje na większości systemów można wykonać następującymi poleceniami:

  • arp -a – podgląd tabeli ARP;
  • arp -s – dodanie wpisu statycznego;
  • arp -d – usunięcie wskazanego wpisu.

Warianty protokołu ARP – kiedy i po co?

Poniżej zebrano popularne rozszerzenia ARP wraz z zastosowaniami:

  • Proxy ARP – router odpowiada w imieniu hosta w innej podsieci, umożliwiając przekazywanie ruchu bez świadomości trasowania po stronie hostów;
  • Gratuitous ARP (GARP) – host ogłasza własne IP→MAC, wspiera aktualizację pamięci ARP, wykrywanie duplikatów i protokoły pierwszego skoku (HSRP/VRRP);
  • RARP – przestarzały mechanizm uzyskiwania adresu IP na podstawie MAC (zastąpiony przez BOOTP/DHCP);
  • InARP – w technologiach takich jak Frame Relay/ATM mapuje znane identyfikatory L2 na adresy L3 (IP).

Protokół odkrywania sąsiadów (NDP) w IPv6 – rozszerzone rozwiązywanie adresów i zarządzanie siecią

Różnice architektoniczne między ARP a NDP

NDP (RFC 4861) zastępuje ARP w IPv6 i łączy w sobie więcej funkcji: rozwiązywanie adresów, odkrywanie routerów, autokonfigurację i monitorowanie osiągalności.

NDP używa adresowania multicast (zamiast broadcast) i utrzymuje stan sąsiadów (m.in. reachable, stale, probe). To podejście poprawia wydajność i niezawodność oraz ułatwia wprowadzenie kontroli bezpieczeństwa.

Typy i funkcje komunikatów NDP

NDP korzysta z pięciu komunikatów ICMPv6. Zestawienie ról i typów:

Komunikat Typ ICMPv6 Rola
Router Solicitation (RS) 133 host prosi routery o natychmiastowe RA (do FF02::2)
Router Advertisement (RA) 134 router ogłasza prefiksy, parametry i bramę (do FF02::1)
Neighbor Solicitation (NS) 135 zapytanie o adres L2 celu lub sprawdzenie osiągalności (multicast solicited-node)
Neighbor Advertisement (NA) 136 odpowiedź na NS lub ogłoszenie zmiany (zwykle unicast)
Redirect 137 router wskazuje lepszy pierwszy skok dla danego celu

Adresy multicast typu solicited-node – podstawa efektywności NDP

Adresy solicited-node multicast ograniczają „zasięg” zapytań do faktycznie zainteresowanych węzłów. Tworzy się je z prefiksu FF02::1:FF00:0/104 i ostatnich 24 bitów docelowego IPv6 (np. ff02::1:ff28:9c5a dla …:fe28:9c5a).

Na warstwie MAC używane są adresy multicast 33:33:xx:xx:xx:xx, więc ramki trafiają tylko do interfejsów subskrybujących daną grupę. W efekcie NDP jest wydajniejszy i mniej inwazyjny niż rozgłoszeniowy ARP.

Adresy link-local i automatyczna konfiguracja

Każdy interfejs IPv6 posiada adres link-local (prefiks FE80::/64) wymagany do działania NDP i odkrywania routerów. Często stosowano EUI‑64 do budowy identyfikatora interfejsu, choć obecnie preferowane są losowe identyfikatory ze względów prywatności.

Przed użyciem adresu wykonywany jest DAD (Duplicate Address Detection) z nieokreślonego źródła ::. Brak odpowiedzi NA w oknie czasowym potwierdza unikalność adresu.

Autokonfiguracja bezstanowa adresów (SLAAC)

Proces SLAAC można streścić w kilku krokach:

  1. host generuje adres link-local i wykonuje DAD;
  2. wysyła Router Solicitation do FF02::2, żądając bieżących parametrów;
  3. router przesyła Router Advertisement z prefiksami (zwykle /64) i flagami konfiguracji;
  4. host tworzy pełny adres 128‑bit, łącząc prefiks z identyfikatorem interfejsu (EUI‑64 lub losowym);
  5. wykonuje DAD dla nowego adresu i po potwierdzeniu zaczyna go używać.

Wykrywanie zduplikowanych adresów (DAD) i niedostępności sąsiadów (NUD)

NUD utrzymuje stan osiągalności sąsiadów i reaguje na zmiany topologii. Stany NUD:

  • incomplete – oczekiwanie na rozstrzygnięcie adresu (brak kompletnego wpisu);
  • reachable – sąsiad potwierdzony jako osiągalny w ostatnim interwale;
  • stale – wpis istnieje, ale ostatnie potwierdzenie jest przestarzałe;
  • delay – krótkie oczekiwanie na ruch potwierdzający przed sondowaniem;
  • probe – aktywne sondowanie sąsiada komunikatami NS.

Analiza porównawcza – ARP w IPv4 vs. NDP w IPv6

Fundamentalne różnice filozofii projektowej

ARP jest prosty i bezstanowy, ale przez to podatny na fałszowanie (spoofing). NDP jest stanowy, korzysta z multicast i łączy dodatkowe funkcje (RA, SLAAC, NUD), co zwiększa niezawodność i efektywność.

Poniższa tabela syntetyzuje różnice operacyjne:

Aspekt ARP (IPv4) NDP (IPv6)
Zakres działania jedno łącze L2 (broadcast) jedno łącze L2 (multicast)
Tryb dystrybucji broadcast na FF:FF:FF:FF:FF:FF multicast (grupy solicited-node)
Model stanu bezstanowy (stateless) stanowy (stany NUD: reachable/stale/probe…)
Funkcje dodatkowe brak (tylko IP→MAC) RA, SLAAC, DAD, Redirect, NUD
Bezpieczeństwo brak wbudowanego uwierzytelniania opcjonalne SeND, CGA
Wpływ na segment obciążenie wszystkich hostów przy każdym zapytaniu trafianie tylko zainteresowanych węzłów

Implikacje bezpieczeństwa

Różnice projektowe przekładają się na konkretne ryzyka i metody obrony:

  • ARP spoofing/poisoning – bezstanowość ARP umożliwia wstrzykiwanie fałszywych odpowiedzi, co ułatwia ataki MITM;
  • NDP + SeND – podpisy kryptograficzne i Cryptographically Generated Addresses wiążą adres z kluczem publicznym i utrudniają podszywanie;
  • RA/Redirect abuse – w IPv6 możliwe jest nadużycie RA/Redirect; ogranicza się to kontrolą dostępu, filtrowaniem na brzegu i wdrożeniem SeND.

Praktyczna implementacja i zarządzanie

Zarządzanie pamięcią podręczną ARP i rozwiązywanie problemów

Diagnostyka ARP zwykle zaczyna się od weryfikacji tabeli i ponownego rozwiązywania adresów. Przydatne narzędzia i polecenia:

  • arp -a – podgląd bieżących mapowań IP→MAC;
  • Wireshark – analiza ramek ARP (Request/Reply);
  • show arp / show ip arp (Cisco) – status wpisów i ich starzenie.

Różnice w timeoutach (np. Windows: 10 min, Cisco IOS: 240 min + jitter) tłumaczą okresowe opóźnienia przy ponownym rozwiązywaniu adresów.

Monitorowanie i konfiguracja NDP w IPv6

W środowiskach IPv6 standardem jest monitoring stanu sąsiadów i parametrów RA.

  • show ipv6 neighbors – przegląd wpisów NDP wraz ze stanem (incomplete/reachable/stale/delay/probe);
  • konfiguracja RA – kontrola interwałów i zawartości ogłoszeń (prefiksy, flagi SLAAC/DHCPv6);
  • DAD/Optimistic DAD – dostrajanie liczby prób i polityk użycia adresu przed finalnym potwierdzeniem.