1/35Pola identyfikacyjne w tagu 802.1Q

TPID i VID w standardzie 802.1Q

W standardzie 802.1Q kluczową rolę w procesie znakowania ramek odgrywają dwa pola: TPID oraz VID. Pole TPID (Tag Protocol Identifier) to dwubajtowy znacznik o stałej wartości 0x8100. Informuje on urządzenia sieciowe, że dana ramka Ethernet posiada dodatkowy nagłówek i powinna być interpretowana zgodnie z regułami sieci wirtualnych.

Pole VID (VLAN Identifier) to 12-bitowa wartość, która precyzyjnie wskazuje, do której konkretnie sieci wirtualnej (VLAN) przypisana jest ramka. Pozwala to na rozróżnienie aż 4094 unikalnych identyfikatorów. Prawidłowa interpretacja tych pól przez przełączniki jest niezbędna do poprawnego działania mechanizmu trunkingu, czyli przesyłania ruchu z wielu odizolowanych sieci przez jeden wspólny kabel.

Pole TPID i VID w tagu 802.1Q

Pole TPID o wartości 0x8100 działa jak swoisty "sygnalizator" dla urządzeń sieciowych – gdy przełącznik odczyta tę wartość, wie, że za polem źródłowego adresu MAC znajduje się 4-bajtowy tag 802.1Q, a nie standardowe pole EtherType. Dzięki temu urządzenia obsługujące tagowanie mogą prawidłowo interpretować zmodyfikowaną ramkę Ethernet.

VID o długości 12 bitów pozwala na adresację od 0 do 4095, przy czym wartości 0 i 4095 są zarezerwowane. Zakres użytecznych VLAN-ów to 1–4094. W praktyce wiele starszych urządzeń obsługuje tylko zakres 1–1005 (tzw. zakres normalny), podczas gdy nowoczesne przełączniki obsługują również zakres rozszerzony (1006–4094).

2/35Bezpieczeństwo i rola Native VLAN

Koncepcja natywnej sieci VLAN

Native VLAN (natywny VLAN) to specjalna sieć skonfigurowana na porcie typu trunk. Cechą charakterystyczną jest to, że ramki należące do tego konkretnego VLAN-u nie są znakowane dodatkowym tagiem 802.1Q podczas przesyłania przez łącze. Pozwala to na komunikację z urządzeniami, które "nie rozumieją" tagowania, takimi jak stare koncentratory czy proste przełączniki domowe.

Dla poprawnego działania łącza trunk oba urządzenia muszą mieć ustawiony ten sam identyfikator Native VLAN. Ze względów bezpieczeństwa krytyczne jest, aby zmienić domyślną wartość (VLAN 1) na dowolną inną, nieużywaną cyfrę. Zapobiega to specyficznym atakom, takim jak VLAN Hopping, i jest uznawane za jedną z podstawowych dobrych praktyk przy zabezpieczaniu infrastruktury sieciowej.

Koncepcja Native VLAN

Mechanizm Native VLAN został wprowadzony, aby zapewnić wsteczną kompatybilność z urządzeniami nieobsługującymi standardu 802.1Q. Na łączu trunkowym ramki z Native VLAN są przesyłane bez tagu, co oznacza, że urządzenie nieświadome istnienia VLAN-ów może je poprawnie odebrać. Jest to szczególnie istotne przy łączeniu przełączników zarządzalnych z niezarządzalnymi.

Z punktu widzenia bezpieczeństwa, atak VLAN Hopping typu switch spoofing polega na tym, że atakujący podszywa się pod przełącznik i negocjuje utworzenie łącza trunk. Jeśli Native VLAN jest ustawiony na domyślny VLAN 1, atakujący może uzyskać dostęp do ruchu we wszystkich VLAN-ach. Dlatego zaleca się zmianę Native VLAN na nieużywany numer oraz jawne wyłączenie nieużywanych portów.

3/35Komunikacja między sieciami VLAN

Inter-VLAN Routing jako konieczność

Urządzenia przypisane do różnych sieci VLAN są od siebie całkowicie odizolowane na poziomie fizycznym i logicznym warstwy 2. Oznacza to, że komputer w dziale Księgowości nie może "zobaczyć" komputera z działu Produkcji bez pośrednictwa dodatkowego urządzenia. Każdy VLAN tworzy własną, zamkniętą domenę rozgłoszeniową (broadcast).

Aby umożliwić wymianę danych między takimi segmentami, niezbędne jest zastosowanie routingu międzysieciowego (Inter-VLAN Routing). Proces ten realizuje router lub przełącznik warstwy 3, który posiada interfejsy w obu sieciach. Router odbiera ruch z jednego segmentu, analizuje adres IP odbiorcy i przesyła go do właściwego, docelowego VLAN-u, zachowując przy tym pełną kontrolę i bezpieczeństwo przepływu danych.

Przekazywanie ruchu między VLANami

Istnieją dwa główne podejścia do realizacji Inter-VLAN Routing. Pierwsze to klasyczne router-on-a-stick, gdzie jeden interfejs fizyczny routera jest podzielony na wiele podinterfejsów logicznych – każdy dla innego VLAN-u. Rozwiązanie to jest proste, ale ograniczone przepustowością pojedynczego łącza.

Drugie, znacznie wydajniejsze podejście, to zastosowanie przełącznika warstwy 3 (L3 Switch), który wykonuje routing bezpośrednio w sprzęcie, z prędkością przewodu. Przełączniki L3 wykorzystują wirtualne interfejsy SVI (Switch Virtual Interface) jako bramy dla poszczególnych VLAN-ów, co eliminuje potrzebę zewnętrznego routera.

4/35Przełączniki wielowarstwowe (L3 Switch)

Połączenie szybkości przełącznika z inteligencją routera

Przełącznik warstwy 3 (Multilayer Switch) to zaawansowane urządzenie, które łączy szybkość przełącznika z inteligencją routera. Podczas gdy tradycyjne routery podejmują decyzje programowo, przełączniki L3 wykorzystują do tego wyspecjalizowane układy scalone ASIC, co pozwala na przesyłanie pakietów między sieciami z prędkością "kabla" (wire speed).

Urządzenia te są sercem nowoczesnych sieci lokalnych (LAN), ponieważ potrafią błyskawicznie routować ruch między dziesiątkami VLAN-ów bez tworzenia wąskich gardeł. Pozwalają na definiowanie interfejsów wirtualnych SVI (Switch Virtual Interface), które służą jako bramy domyślne dla komputerów w sieci lokalnej, znacząco upraszczając architekturę i przyspieszając komunikację wewnętrzną.

Przełączanie warstwy 3 (L3 Switch)

Różnica między tradycyjnym routerem a przełącznikiem L3 polega przede wszystkim na sposobie przetwarzania pakietów. Routery wykorzystują procesor ogólnego przeznaczenia (CPU) do analizy każdego pakietu, co przy dużym obciążeniu staje się wąskim gardłem. Przełączniki L3 używają układów ASIC (Application-Specific Integrated Circuit), które są zaprojektowane specjalnie do szybkiego przekazywania pakietów.

W praktyce większość nowoczesnych przełączników zarządzalnych oferuje funkcje warstwy 3, co zaciera granicę między przełącznikiem a routerem. Przełączniki L3 są standardem w sieciach szkieletowych (campus/core), gdzie wymagana jest zarówno wysoka gęstość portów, jak i wydajny routing między VLAN-ami. Typowym przykładem jest rodzina Cisco Catalyst 3650/3850 lub Juniper EX Series.

5/35Protokół DTP: Automatyka czy zagrożenie?

Dynamic Trunking Protocol firmy Cisco

Dynamic Trunking Protocol (DTP) to własnościowe rozwiązanie firmy Cisco, które służy do automatycznej negocjacji trybu pracy portów między dwoma przełącznikami. Dzięki niemu urządzenia mogą same "dogadać się", czy dany kabel ma pracować jako zwykłe połączenie do komputera (access), czy jako magistrala (trunk) przenosząca wiele VLAN-ów.

DTP oferuje tryby takie jak dynamic auto (oczekiwanie na propozycję) oraz dynamic desirable (aktywne poszukiwanie połączenia trunk). Choć brzmi to wygodnie, w profesjonalnych sieciach DTP jest zazwyczaj wyłączane. Powodem jest bezpieczeństwo – haker może podłączyć swój laptop i udając przełącznik, wymusić utworzenie łącza trunk, co dałoby mu dostęp do podsłuchiwania ruchu ze wszystkich sieci wirtualnych w firmie.

DTP (Dynamic Trunking Protocol)

DTP działa na poziomie warstwy 2 i wysyła ramki między przełącznikami w celu negocjacji trybu portu. Mimo że protokół ten ułatwia konfigurację, w bezpiecznych sieciach stosuje się zasadę: wyłącz DTP na wszystkich portach dostępowych. W systemie Cisco IOS służy do tego polecenie switchport nonegotiate. Porty trunk natomiast powinny być konfigurowane ręcznie (switchport mode trunk), bez polegania na automatycznej negocjacji.

Atak z wykorzystaniem DTP polega na podłączeniu urządzenia atakującego do portu przełącznika i wysłaniu ramek DTP z żądaniem ustanowienia łącza trunk. Jeśli port jest skonfigurowany w trybie dynamic desirable lub dynamic auto, przełącznik przełączy go w tryb trunk, dając atakującemu dostęp do ruchu ze wszystkich VLAN-ów. Dlatego standardem bezpieczeństwa jest ręczne ustawienie trybu switchport mode access dla wszystkich portów użytkowników.

6/35Dobre praktyki konfiguracji portów

Bezpieczne zarządzanie portami przełącznika

Podczas wdrażania sieci VLAN należy kierować się zasadą ograniczonego zaufania i jawnej konfiguracji. Nigdy nie polegaj na ustawieniach domyślnych – każdy port na przełączniku powinien być ręcznie ustawiony na konkretny tryb pracy: albo access dla urządzeń końcowych, albo trunk dla połączeń między przełącznikami.

Dla każdego portu typu trunk warto zdefiniować listę dozwolonych VLAN-ów (allowed VLANs), aby niepotrzebnie nie przesyłać danych tam, gdzie nie są potrzebne. Złotą zasadą administratora jest również całkowite wyłączanie nieużywanych gniazdek sieciowych i przypisywanie ich do tzw. "martwego VLAN-u" (np. VLAN 999), aby nikt niepowołany nie mógł uzyskać dostępu do sieci po prostym wpięciu kabla.

Wskazówki konfiguracji: Porty Access vs. Trunk

W środowisku Cisco IOS port access konfiguruje się poleceniami: switchport mode access oraz switchport access vlan 10. Dla portu trunk: switchport mode trunk oraz opcjonalnie switchport trunk allowed vlan 10,20,30. Ograniczenie dozwolonych VLAN-ów na trunk jest ważne zarówno dla wydajności (mniej ruchu rozgłoszeniowego), jak i bezpieczeństwa.

Tworzenie "martwego VLAN-u" (black hole VLAN) polega na zdefiniowaniu VLAN-u, który nie ma przypisanej żadnej sieci IP ani nie jest routowany. Nieużywane porty są przypisywane do tego VLAN-u i wyłączane administracyjnie (shutdown). To uniemożliwia nieautoryzowane podłączenie się do sieci, nawet jeśli intruz fizycznie dostanie się do szafy kablowej.

7/35Rozwiązywanie problemów w warstwie 2

Diagnostyka sieci VLAN i przełączania

Awarie w warstwie 2 objawiają się zazwyczaj brakiem możliwości uzyskania adresu IP (przez DHCP) lub brakiem odpowiedzi na polecenie ping przy poprawnym adresowaniu. Pierwszym krokiem diagnostycznym powinna być weryfikacja fizycznego stanu portu oraz sprawdzenie tablicy adresów MAC (CAM) – jeśli przełącznik nie widzi adresu MAC komputera, problem leży najpewniej w kablu lub karcie sieciowej.

Częstym błędem jest tzw. "duplex mismatch", czyli niezgodność trybu przesyłu danych, co skutkuje ogromną liczbą kolizji i drastycznym spadkiem prędkości. Należy również zawsze upewnić się, że obie strony łącza trunk mają ten sam identyfikator Native VLAN oraz że podsieci IP nie są przypadkowo rozdzielone błędnie skonfigurowanym segmentem VLAN.

Rozwiązywanie problemów L2

W systemie Cisco IOS podstawowe polecenia diagnostyczne warstwy 2 to: show interfaces status (stan portów), show mac address-table (tablica CAM), show interfaces trunk (stan łączy trunk) oraz show vlan brief (lista VLAN-ów). W systemach Linux można użyć ip link show do sprawdzenia interfejsów, a w Windows ipconfig /all do weryfikacji konfiguracji IP.

Duplex mismatch występuje, gdy jedno urządzenie pracuje w trybie pełnodupleksowym (Full-Duplex), a drugie w połowicznego dupleksu (Half-Duplex). Objawia się to dużą liczbą błędów FCS i kolizji na interfejsie. Rozwiązaniem jest ręczne ustawienie tego samego trybu dupleksu po obu stronach łącza lub włączenie autonegocjacji, która powinna automatycznie uzgodnić parametry połączenia.

8/35Analiza przypadku: Segmentacja sieci biurowej

Projekt VLAN dla firmy z trzema działami

Rozważmy projekt sieci dla firmy z trzema działami: Sprzedażą, Technicznym oraz Finansami. Głównym wymaganiem jest, aby pracownicy różnych działów nie mogli nawzajem przeglądać swoich zasobów sieciowych bez wyraźnej potrzeby biznesowej. W tym celu projektujemy trzy oddzielne sieci wirtualne: VLAN 10 (Sprzedaż), VLAN 20 (Technicy) i VLAN 30 (Finanse).

Poprzez przypisanie fizycznych gniazdek w ścianach do odpowiednich VLAN-ów na przełączniku, tworzymy logiczne bariery nie do przebycia dla zwykłego ruchu sieciowego. Jeśli pracownik Finansów musi wysłać raport do działu Technicznego, jego dane trafią najpierw do routera (lub przełącznika L3), który sprawdzi uprawnienia i dopiero wtedy przekaże pakiet do właściwego odbiorcy, zapewniając pełną audytowalność i ochronę danych.

Case Study: Projektowanie prostej sieci VLAN

W praktyce projektowanie sieci VLAN wymaga uwzględnienia także dodatkowych usług, takich jak DHCP i DNS. Serwer DHCP musi być skonfigurowany do przydzielania adresów IP dla każdego VLAN-u z osobna – można to zrobić za pomocą DHCP Relay (polecenie ip helper-address w Cisco IOS), który przekazuje zapytania DHCP z różnych VLAN-ów do centralnego serwera.

W przypadku dostępu zewnętrznego (np. pracownicy zdalni) konieczne jest zastosowanie VPN (Virtual Private Network). Sieć gości (guest network) również powinna być wydzielona w osobny VLAN z dostępem wyłącznie do Internetu, bez możliwości komunikacji z siecią wewnętrzną firmy. Taka segmentacja znacząco podnosi poziom bezpieczeństwa całej infrastruktury.

9/35Podsumowanie: Fundamenty warstwy 2

Kluczowe wnioski z części o VLAN

W pierwszej części wykładu poznaliśmy mechanizmy, które sprawiają, że sieć Ethernet działa sprawnie i jest zarządzalna. Dowiedzieliśmy się, że adres MAC jest niezmiennym dowodem tożsamości urządzenia, a ramki danych są przesyłane inteligentnie przez przełączniki dzięki tablicy CAM.

Zrozumieliśmy, jak wirtualne sieci lokalne (VLAN) pozwalają nam dowolnie dzielić fizyczną infrastrukturę na logiczne segmenty bez konieczności kupowania dodatkowych urządzeń. Nauczyliśmy się także, jak łączyć przełączniki za pomocą magistral typu trunk, używając do tego standardu 802.1Q. Cała ta wiedza stanowi niezbędny fundament do zrozumienia, jak dane wędrują wyżej – do warstwy trzeciej, czyli świata protokołu IP.

Podsumowanie części A

Przechodząc od warstwy 2 do warstwy 3, warto pamiętać o kluczowej różnicy: przełączniki operują na adresach MAC i dostarczają ramki w obrębie lokalnej sieci, podczas gdy routery operują na adresach IP i umożliwiają komunikację między różnymi sieciami. Połączenie tych dwóch technologii tworzy fundament, na którym opiera się cały Internet.

W dalszej części wykładu skoncentrujemy się na adresacji IP – języku, którym posługują się wszystkie urządzenia w Internecie. Zrozumienie struktury adresów IPv4, masek podsieci oraz mechanizmów routingu jest absolutnie kluczowe dla każdego administratora sieci.

10/35Zadania warstwy sieciowej (L3)

Adresowanie logiczne i routing

Warstwa sieciowa, czyli trzecia warstwa modelu OSI, jest odpowiedzialna za to, aby dane mogły wydostać się poza lokalne gniazdko w ścianie i dotrzeć do dowolnego komputera na świecie. Jej dwa główne zadania to adresowanie logiczne oraz wyznaczanie tras (routing).

Podczas gdy warstwa druga zna się tylko na "sąsiadach" w tym samym kablu, warstwa trzecia widzi całą mapę połączeń globalnych. To tutaj pracują adresy IP, które w przeciwieństwie do adresów MAC, określają nie "kto" przesyła dane, ale "gdzie" się znajduje. Głównym aktorem tej warstwy jest router, który jak doświadczony logistyk, wybiera najkrótszą i najpewniejszą drogę dla każdego pakietu informacji.

Rola warstwy sieci (L3)

Model OSI (Open Systems Interconnection) definiuje komunikację sieciową w siedmiu warstwach. Warstwa sieciowa (L3) znajduje się pośrodku tego modelu, co czyni ją kluczowym elementem łączącym warstwy niższe (fizyczną, łącza danych) z wyższymi (transportową, sesji, prezentacji, aplikacji). W modelu TCP/IP rolę warstwy sieciowej pełni warstwa internetowa (Internet Layer).

Do podstawowych protokołów warstwy sieciowej należą: IPv4 (Internet Protocol version 4), IPv6 (następca IPv4), ICMP (Internet Control Message Protocol – używany przez ping i traceroute) oraz ARP (Address Resolution Protocol – formalnie protokół warstwy 2, ale ściśle związany z adresacją IP).

11/35Protokół IPv4: Podstawa komunikacji

Internet Protocol wersja 4

Protokół IPv4 (Internet Protocol version 4) to uniwersalny język, w którym porozumiewają się komputery w Internecie. Choć ma już swoje lata, wciąż pozostaje fundamentem większości usług sieciowych. Opiera się na 32-bitowej adresacji, co daje teoretycznie ponad 4 miliardy unikalnych adresów.

IPv4 działa w modelu "bezpołączeniowym", co oznacza, że wysyła dane bez sprawdzania, czy odbiorca jest gotowy – o to dbają protokoły wyższych warstw (jak TCP). Oferuje on tzw. "best-effort delivery" – routery zrobią wszystko, co w ich mocy, aby dostarczyć pakiet, ale jeśli sieć będzie przeciążona, mogą go bez ostrzeżenia odrzucić. To na inżynierach spoczywa obowiązek takiego zaprojektowania sieci, aby te straty były minimalne.

Protokół IPv4: Struktura i znaczenie

IPv4 został po raz pierwszy wdrożony w 1981 roku (RFC 791) i od tego czasu stał się podstawą globalnej komunikacji sieciowej. Jego 32-bitowy adres (4 bajty) teoretycznie pozwala na 2^32 = 4 294 967 296 unikalnych adresów. Jednak ze względu na podział na klasy, rezerwacje i marnotrawstwo, rzeczywista liczba dostępnych adresów publicznych jest znacznie mniejsza.

Model best-effort oznacza, że protokół IP nie gwarantuje dostarczenia pakietu – nie ma mechanizmów retransmisji ani potwierdzeń. Za niezawodność odpowiada TCP (warstwa transportowa), który w razie potrzeby żąda ponownego wysłania utraconych pakietów. To rozdzielenie odpowiedzialności jest kluczową cechą architektury TCP/IP – każda warstwa robi swoje, nie martwiąc się o resztę.

12/35Adresy publiczne a sieć prywatna

Podział przestrzeni adresowej IPv4

W świecie IPv4 adresy dzielimy na dwie główne grupy. Adresy publiczne są unikalne na skalę światową – każdy serwer w Internecie musi mieć taki adres, aby był widoczny z zewnątrz. Ich pula jest ograniczona i kosztowna, dlatego są one przydzielane przez centralne organizacje (jak IANA).

Z drugiej strony mamy adresy prywatne (z zakresów takich jak 192.168.x.x czy 10.x.x.x), które możemy dowolnie stosować wewnątrz naszych domów i biur. Ponieważ te adresy "nie wychodzą" do Internetu, te same numery mogą być używane w milionach różnych firm jednocześnie. Komunikację między tymi światami zapewnia technologia NAT (Network Address Translation), która ukrywa całą naszą sieć lokalną pod jednym wspólnym adresem publicznym.

Adresowanie IPv4: Adresy publiczne vs. prywatne

Adresy prywatne zostały zdefiniowane w RFC 1918 i obejmują trzy zakresy: 10.0.0.0/8 (16 777 216 adresów), 172.16.0.0/12 (1 048 576 adresów) oraz 192.168.0.0/16 (65 536 adresów). Te adresy nie są routowane w Internecie – routery ISP automatycznie odrzucają pakiety z takimi adresami źródłowymi.

NAT (Network Address Translation) działa na routerze brzegowym i zamienia prywatne adresy źródłowe na publiczny adres interfejsu WAN. Najpopularniejszą formą jest PAT (Port Address Translation), znany również jako NAT overload, który pozwala wielu urządzeniom w sieci prywatnej współdzielić jeden publiczny adres IP poprzez użycie różnych portów TCP/UDP.

13/35Od bitów do kropek: Notacja dziesiętna

Dotted-decimal notation dla ludzi

Komputer operuje wyłącznie na zerach i jedynkach, więc dla niego adres IP to ciąg 32 bitów (np. 11000000 10101000 00000001 00000001). Dla człowieka taki zapis jest niemożliwy do zapamiętania, dlatego stosujemy wygodną notację dziesiętną z kropkami (dotted-decimal notation).

Cały 32-bitowy adres dzielimy na cztery równe części po 8 bitów każda, zwane oktetami. Każdy oktet zamieniamy na liczbę dziesiętną z zakresu od 0 do 255. Przykładowo, adres który komputer widzi jako 11000000 10101000 00000001 00000001, my zapisujemy jako swojskie 192.168.1.1. Zrozumienie, że pod każdą liczbą w adresie kryje się dokładnie 8 elektronicznych "pstryczków" (bitów), jest kluczem do nauki dzielenia sieci na podsieci.

Format adresu IPv4 i notacja dziesiętna

Każdy oktet (8 bitów) może reprezentować wartości od 0 (wszystkie bity = 0) do 255 (wszystkie bity = 1). To dlatego prawidłowe adresy IPv4 mieszczą się w przedziale od 0.0.0.0 do 255.255.255.255. Warto zapamiętać, że 0 i 255 w oktsecie mają specjalne znaczenie – odpowiednio wszystkie bity wyzerowane i wszystkie ustawione.

Znajomość notacji binarnej jest niezbędna do zrozumienia masek podsieci i wykonywania obliczeń subnettingu. Praktycznym ćwiczeniem jest zamiana prostych liczb binarnych na dziesiętne – np. 11000000 = 192, 11100000 = 224, 11110000 = 240. Te wartości pojawiają się najczęściej w maskach podsieci.

14/35Logika binarnego świata

Konwersja między systemem binarnym a dziesiętnym

Praca sieciowca wymaga sprawnej zamiany liczb z systemu dziesiętnego na binarny i odwrotnie. Każda z ośmiu pozycji w oktecie ma swoją stałą wartość (wagę), będącą kolejną potęgą liczby 2: od 128 na początku do 1 na końcu. Jeśli na danej pozycji jest jedynka – dodajemy jej wagę do sumy; jeśli zero – pomijamy.

Przykładowo, oktet o wartości binarnej 11000000 to po prostu suma 128 + 64, czyli 192 w zapisie dziesiętnym. Choć na początku może to wydawać się żmudne, po pewnym czasie te najważniejsze kombinacje (jak 128, 192, 224 czy 240) wpadają w pamięć i pozwalają błyskawicznie orientować się w strukturze adresów i masek sieciowych.

Podstawy binarne: Konwersja

Wagi bitów w oktecie (od lewej do prawej) to: 128, 64, 32, 16, 8, 4, 2, 1. Są to kolejne potęgi liczby 2: 2^7, 2^6, ..., 2^0. Znajomość tych wag pozwala szybko obliczyć wartość dziesiętną dowolnego oktetu binarnego. Przykład: 10101000 = 128 + 0 + 32 + 0 + 8 + 0 + 0 + 0 = 168.

W praktyce najczęściej spotykane wartości w adresacji IP to 255 (11111111), 254 (11111110), 192 (11000000), 224 (11100000), 240 (11110000), 248 (11111000) oraz 252 (11111100). Warto je zapamiętać, ponieważ pojawiają się regularnie przy obliczaniu masek i podsieci.

15/35Maska podsieci: Klucz do mapy IP

Funkcja maski w adresacji IPv4

Sam adres IP nie mówi nam wszystkiego – dopiero w połączeniu z maską podsieci staje się kompletną informacją. Maska to również 32-bitowa liczba, która służy do "przecięcia" adresu na dwie części: identyfikator sieci (jak ulica) oraz identyfikator hosta (jak numer domu).

Zasada jest prosta: tam, gdzie w masce są jedynki, odczytujemy nazwę sieci. Tam, gdzie pojawiają się zera, zaczyna się miejsce na numerację konkretnych urządzeń. Dzięki masce router wie, czy komputer docelowy znajduje się w tym samym pokoju (podsieci), czy też musi wysłać pakiet w daleką podróż do innej bramy domyślnej.

Maska podsieci: Cel i działanie

Maskę podsieci zapisuje się najczęściej w dwóch formach. Pierwsza to notacja dziesiętna, np. 255.255.255.0. Druga to notacja prefiksowa (CIDR), np. /24 – liczba po ukośniku oznacza liczbę bitów ustawionych na 1 w masce. /24 oznacza 24 jedynki i 8 zer, czyli 255.255.255.0.

Przykładowe maski: /8 = 255.0.0.0 (16 milionów adresów), /16 = 255.255.0.0 (65 tysięcy adresów), /24 = 255.255.255.0 (254 adresy), /30 = 255.255.255.252 (2 adresy – idealne dla łącza punkt-punkt między routerami).

16/35Tożsamość sieci i hosta

Operacja AND jako narzędzie identyfikacji

Gdy router otrzymuje pakiet, przeprowadza logiczną operację AND na adresie docelowym i masce. Wynik tej operacji to tzw. Network ID, czyli ścisły adres sieci (zawsze kończący się zerami w części hosta). Jest to nazwa całej grupy urządzeń, pod którą są one znane w wielkim świecie routingu.

Część adresu pozostała po oddzieleniu sieci (Host ID) służy do odróżnienia od siebie laptopów, drukarek i telefonów wewnątrz firmy. Im krótsza maska (mniej jedynek), tym więcej bitów zostaje na hosty i tym większa może być nasza sieć lokalna. Na przykład typowa domowa maska /24 (255.255.255.0) zostawia nam 8 bitów, co pozwala podłączyć do 254 urządzeń.

Identyfikacja sieci i hosta

Operacja AND na liczbach binarnych działa prosto: 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 0 = 0. Gdy wykonamy AND na adresie IP (192.168.1.100) i masce (255.255.255.0), otrzymamy: 192.168.1.0 – to jest właśnie Network ID. Zmiana któregokolwiek bitu w części hosta nie zmienia Network ID.

Liczbę hostów w sieci obliczamy ze wzoru: 2^(32 - maska) - 2. Odejmujemy 2, ponieważ pierwszy adres w sieci to Network ID (wszystkie bity hosta = 0), a ostatni to Broadcast (wszystkie bity hosta = 1). Dla maski /24: 2^(32-24) - 2 = 2^8 - 2 = 254. Dla /30: 2^2 - 2 = 2.

17/35Adres rozgłoszeniowy (Broadcast)

Komunikacja do wszystkich urządzeń w podsieci

Każda ulica (sieć) potrzebuje sposobu, aby ogłosić coś wszystkim mieszkańcom naraz. Służy do tego adres rozgłoszeniowy, który jest zawsze ostatnim możliwym numerem w danej podsieci. Uzyskujemy go, ustawiając wszystkie bity części hosta na jedynki.

Jeśli komputer wyśle pakiet na ten specjalny adres, każde urządzenie w tej podsieci musi go odebrać i przeanalizować. Jest to niezbędne do działania wielu podstawowych usług, takich jak automatyczne pobieranie adresu IP (DHCP) czy znajdowanie sąsiadów przez ARP. Nadmierna liczba takich komunikatów (tzw. "broadcast storm") może jednak zapchać sieć, dlatego jednym z zadań inżyniera jest dzielenie dużych sieci na mniejsze segmenty broadcastowe.

Adres rozgłoszeniowy (Broadcast)

Dla przykładu: w sieci 192.168.1.0/24 adresem sieci jest 192.168.1.0, pierwszym użytecznym adresem hosta 192.168.1.1, a adresem rozgłoszeniowym 192.168.1.255. Ostatni użyteczny adres hosta to 192.168.1.254. Te cztery wartości warto zawsze umieć wyznaczyć dla dowolnej podsieci.

Broadcast storm (burza rozgłoszeniowa) to sytuacja, w której liczba ramek broadcast w sieci jest tak duża, że znacząco obniża wydajność lub całkowicie paraliżuje komunikację. Do problemu dochodzi najczęściej w pętlach sieciowych (gdy brakuje STP – Spanning Tree Protocol). Rozwiązaniem jest stosowanie VLAN-ów i prawidłowe projektowanie topologii sieci.

18/35Historia: System klasowy

Klasy adresów IP (A, B, C)

W zamierzchłych czasach początków Internetu adresy przydzielano w sztywnych paczkach zwanych klasami (A, B i C). Klasa A była przeznaczona dla gigantycznych korporacji i rządów – jeden taki przydział dawał aż 16 milionów adresów. Klasa C, najskromniejsza, oferowała tylko 254 adresy, co często okazywało się niewystarczające nawet dla małej uczelni.

O przydziale decydowały pierwsze bity adresu. Ten system był bardzo prosty dla wczesnych routerów, ale niesamowicie marnotrawny. Firma potrzebująca 300 adresów nie mieściła się w klasie C i musiała brać całą klasę B (65 tysięcy numerów), z czego większość leżała odłogiem. To marnotrawstwo zmusiło twórców sieci do wymyślenia bardziej elastycznego podejścia.

Klasy adresowania IP: Historyczny podział

System klasowy był oparty na pierwszych bitach adresu IP. Jeśli adres zaczynał się od 0 – była to klasa A (zakres 1.0.0.0 – 127.255.255.255). Jeśli od 10 – klasa B (128.0.0.0 – 191.255.255.255). Jeśli od 110 – klasa C (192.0.0.0 – 223.255.255.255). Istniały też klasy D (multicast, zaczynające się od 1110) i E (eksperymentalne, 1111).

Mimo że system klasowy jest dziś historyczny, jego znajomość jest przydatna przy czytaniu starszej dokumentacji oraz przy konfiguracji niektórych protokołów routingu (np. RIPv1), które nie obsługują CIDR i działają wyłącznie na adresach klasowych. Współczesne sieci używają wyłącznie CIDR i VLSM, które całkowicie eliminują pojęcie klas.

19/35Koniec ery klas: dlaczego z nich zrezygnowano?

Ograniczenia klasycznego podziału adresów

Sztywne ramy systemu klasowego doprowadziły do paradoksalnej sytuacji: z jednej strony ogromna rzesza instytucji nie miała swoich adresów, a z drugiej – miliony numerów należały do organizacji, które nigdy ich nie wykorzystały. Przepaść między 254 (klasa C) a 65 534 (klasa B) adresami była zbyt duża dla dynamicznie rozwijającego się rynku IT.

Ponadto, tablice routingu w głównych węzłach Internetu zaczęły pękać w szwach, bo każda klasowa sieć musiała być w nich wymieniona osobno. Konieczna była zmiana fundamentów, która pozwoliłaby szyć sieci "na miarę" potrzeb użytkownika, niezależnie od tego, jakimi cyframi zaczyna się jego adres IP.

Ograniczenia adresowania klasowego

Problem wyczerpania adresów IPv4 (ang. IPv4 address exhaustion) stał się realnym zagrożeniem już w latach 90. IANA (Internet Assigned Numbers Authority) przydzieliła ostatnie bloki adresów IPv4 w 2011 roku, a regionalne rejestry (RIR) wyczerpały swoje pule w kolejnych latach. To był główny motor napędowy do wprowadzenia CIDR i później IPv6.

Dodatkowym problemem był wzrost tablic routingu – w klasowym modelu każda sieć, nawet mała, wymagała osobnego wpisu w tablicy routingu wszystkich routerów w Internecie. W miarę wzrostu liczby sieci, tablice routingu rosły wykładniczo, przekraczając możliwości pamięciowe ówczesnych routerów. CIDR rozwiązał ten problem poprzez umożliwienie agregacji tras (supernettingu).

20/35CIDR: Nowoczesna elastyczność

Classless Inter-Domain Routing

Rozwiązaniem problemów klasowości stał się CIDR (Classless Inter-Domain Routing). To podejście porzuciło narzucone z góry maski na rzecz prefiksów – teraz administrator może uciąć sieć w dowolnym bicie. Zamiast pisać długie 255.255.255.0, używamy krótkiego zapisu z ukośnikiem, np. /24.

CIDR pozwolił na tzw. sumaryzację tras. Jeśli jeden dostawca internetowy posiada 100 małych podsieci, w globalnym Internecie może ogłosić je jako jedną, gigantyczną trasę zbiorczą. Dzięki temu routery na świecie nie muszą znać każdego domowego routera z osobna, co uratowało globalną sieć przed paraliżem i pozwoliło na dalszy wzrost Internetu.

CIDR (Classless Inter-Domain Routing)

Notacja CIDR (np. 192.168.1.0/24) składa się z adresu sieci i prefiksu określającego liczbę bitów maski. Prefiks /24 oznacza, że pierwsze 24 bity to część sieciowa, a pozostałe 8 bitów to część hostowa. Dzięki notacji prefiksowej możemy precyzyjnie określić granicę między siecią a hostem z dokładnością do jednego bitu.

Sumaryzacja tras (route aggregation) jest jednym z najważniejszych mechanizmów CIDR. Na przykład sieci 192.168.0.0/24, 192.168.1.0/24, 192.168.2.0/24 i 192.168.3.0/24 mogą być zagregowane jako 192.168.0.0/22. Wymaga to, aby sieci były kolejno po sobie następujące i miały jednakową maskę. To właśnie ta zdolność do agregacji uratowała Internet przed przeciążeniem tablic routingu.

21/35Subnetting: Sztuka dzielenia sieci

Dzielenie puli adresowej na mniejsze podsieci

Subnetting to proces "krojenia" jednej dużej puli adresów na kilka mniejszych, niezależnych podsieci. Polega on na zabieraniu bitów z części hosta (tej na numery domów) i przekazywaniu ich do części sieciowej (nazwy ulic). W ten sposób z jednej "dzielnicy" tworzymy kilka mniejszych, odgrodzonych od siebie segmentów.

Dla inżyniera to najważniejsze narzędzie optymalizacji. Mniejsze podsieci oznaczają mniej zbędnego ruchu rozgłoszeniowego i łatwiejsze stosowanie polityk bezpieczeństwa (np. oddzielenie sieci gości od serwerów firmowych). To podstawa logicznego porządkowania struktury firmy.

Subnetting: Idea i korzyści

W procesie subnettingu "pożyczamy" bity z części hostowej na rzecz części sieciowej. Każdy dodatkowy bit sieciowy podwaja liczbę możliwych podsieci, ale zmniejsza liczbę dostępnych hostów w każdej z nich. Wzór na liczbę podsieci to 2^n, gdzie n to liczba pożyczonych bitów. Liczba hostów w podsieci to 2^(32 - nowa_maska) - 2.

Przykład: dzieląc sieć /24 na 2 podsieci, pożyczamy 1 bit: maska zmienia się na /25. Otrzymujemy 2 podsieci (2^1), każda po 2^(32-25) - 2 = 126 hostów. Dzieląc na 4 podsieci, pożyczamy 2 bity: maska /26, 4 podsieci po 62 hosty każda.

22/35Jak prawidłowo podzielić sieć?

Algorytm efektywnego subnettingu

Aby skutecznie przeprowadzić podział, należy postępować według sprawdzonego algorytmu. Najpierw liczymy, ilu hostów potrzebujemy w największym segmencie. Musimy do tej liczby zawsze dodać 2 (na adres sieci i broadcast) oraz często zapas na przyszłość. Szukamy najbliższej, większej potęgi liczby 2, która pokryje to zapotrzebowanie.

Gdy już wiemy, ile bitów zostawić dla hostów (np. 5 bitów dla 30 urządzeń), reszta z 32 bitów staje się naszą nową maską. Ostatni krok to skrupulatne wypisanie adresów startowych i końcowych każdej nowej podsieci, dbając o to, aby na siebie nie nachodziły – w przeciwnym razie routery "pogubią się" w trasowaniu.

Algorytm Subnettingu krok po kroku

Krok po kroku algorytm subnettingu: (1) Określ liczbę potrzebnych hostów (z zapasem). (2) Znajdź najmniejszą potęgę 2 większą od tej liczby (pamiętając o odjęciu 2 adresów specjalnych). (3) Oblicz liczbę bitów hosta: log2(liczba_hostów + 2). (4) Maska = 32 - bity_hosta. (5) Rozmiar podsieci = 2^bity_hosta. (6) Kolejne podsieci zaczynają się co rozmiar_podsieci.

Przykład: potrzeba 50 hostów. Najbliższa potęga 2 to 64 (2^6). Bity hosta = 6. Maska = 32 - 6 = /26. Rozmiar = 64. Sieci: .0/26, .64/26, .128/26, .192/26. W każdej: 62 użyteczne adresy (64 - 2).

23/35Przykład praktyczny: 30 komputerów

Podział sieci 192.168.1.0/24 na segmenty po 30 hostów

Zadanie: Podziel sieć 192.168.1.0/24 na segmenty po 30 hostów. Aby pomieścić 30 hostów + 2 adresy specjalne, potrzebujemy 32 adresów. 32 to 2 do potęgi 5, zatem musimy zarezerwować 5 bitów na hosty. Pozostałe 27 bitów (32-5) stanowi naszą nową maskę: /27 (czyli 255.255.255.224).

Nasza oryginalna sieć /24 "pożyczyła" 3 bity (z 24 do 27). 2 do potęgi 3 daje 8, co oznacza, że z jednej dużej sieci stworzyliśmy 8 małych podsieci. Pierwsza zaczyna się od .0, druga od .32, trzecia od .64 i tak dalej, co każde 32 numery. Każda z nich jest teraz suwerennym królestwem sieciowym.

Ćwiczenie: Obliczanie liczby hostów i podsieci

Szczegółowe zestawienie podsieci dla 192.168.1.0/27:
Podsieć 1: 192.168.1.0192.168.1.31 (hosty: .1 – .30)
Podsieć 2: 192.168.1.32192.168.1.63 (hosty: .33 – .62)
Podsieć 3: 192.168.1.64192.168.1.95 (hosty: .65 – .94)
Podsieć 4: 192.168.1.96192.168.1.127 (hosty: .97 – .126)
Podsieć 5: 192.168.1.128192.168.1.159 (hosty: .129 – .158)
Podsieć 6: 192.168.1.160192.168.1.191 (hosty: .161 – .190)
Podsieć 7: 192.168.1.192192.168.1.223 (hosty: .193 – .222)
Podsieć 8: 192.168.1.224192.168.1.255 (hosty: .225 – .254)

Warto zapamiętać, że adres sieci każdej podsieci jest wielokrotnością rozmiaru bloku (32). Dla maski /27 rozmiar bloku w ostatnim oktsecie wynosi 32. Dla /28 będzie to 16, dla /298, dla /304. Znajomość tych wartości pozwala błyskawicznie wyznaczać zakresy podsieci.

24/35VLSM: Szycie na miarę

Variable Length Subnet Masking

Tradycyjny subnetting dzielił tort na równe kawałki. To wciąż marnotrawny system, jeśli jeden dział ma 100 osób, a inny tylko 5. Rozwiązaniem jest VLSM (Variable Length Subnet Masking), który pozwala na stosowanie różnych masek wewnątrz jednego projektu. To tak, jakbyśmy jeden z kawałków tortu pokroili jeszcze raz na mniejsze okruszki.

Dzięki VLSM możemy precyzyjnie przydzielić sieć /25 (126 hostów) dla dużego biura i sieć /30 (tylko 2 hosty) dla kabla łączącego dwa routery. To najwyższy stopień wtajemniczenia w zarządzaniu adresami, pozwalający na niemal 100% wykorzystanie dostępnej puli numerów IP.

VLSM (Variable Length Subnet Masking)

VLSM jest naturalnym rozszerzeniem CIDR i subnettingu, które umożliwia tworzenie podsieci o różnej wielkości w ramach jednej sieci nadrzędnej. Przed wprowadzeniem VLSM, protokoły routingu (takie jak RIPv1) nie przesyłały informacji o masce w swoich aktualizacjach, co wymuszało używanie jednakowej maski we wszystkich podsieciach.

Współczesne protokoły routingu (OSPF, EIGRP, RIPv2, BGP) obsługują CIDR i VLSM, co oznacza, że przesyłają informację o masce wraz z adresem sieci. Dzięki temu w jednej sieci mogą współistnieć podsieci o różnych maskach, co pozwala na optymalne wykorzystanie przestrzeni adresowej.

25/35Strategia projektowania VLSM

Zawsze zaczynaj od największego wymagania

Przy projektowaniu VLSM obowiązuje jedna żelazna zasada: zawsze zaczynaj od największego wymagania. Gdybyśmy zaczęli od małych sieci, poszatkowalibyśmy przestrzeń adresową tak bardzo, że nie starczyłoby ciągłego miejsca na duży blok dla licznego działu. To tak zwana walka z fragmentacją.

Przykład kolejności: najpierw sieć dla 100 hostów (/25), potem dla 50 hostów (/26), następnie dla 20 hostów (/27) i na samym końcu malutkie sieci "serwisowe" dla routerów (/30). Taki porządek gwarantuje, że nasze adresy będą ułożone gęsto i logicznie, a tablica routingu pozostanie przejrzysta.

Ćwiczenie: Tworzenie schematu VLSM

Przykład projektowania VLSM dla sieci 10.0.0.0/24 (256 adresów):
Dział A (100 hostów): potrzebuje /25 (126 adresów) – zakres 10.0.0.0 – 10.0.0.127
Dział B (50 hostów): potrzebuje /26 (62 adresy) – zakres 10.0.0.128 – 10.0.0.191
Dział C (20 hostów): potrzebuje /27 (30 adresów) – zakres 10.0.0.192 – 10.0.0.223
Łącze R1-R2 (2 hosty): potrzebuje /30 (2 adresy) – zakres 10.0.0.224 – 10.0.0.227
Łącze R2-R3 (2 hosty): /30 – zakres 10.0.0.228 – 10.0.0.231

Widzimy, że przy takim podejściu wykorzystaliśmy zaledwie 232 z 256 dostępnych adresów, pozostawiając zapas na przyszły rozwój. Gdybyśmy użyli tradycyjnego subnettingu z maską /25, zmieścilibyśmy tylko 2 działy (A i B) i nie mielibyśmy miejsca na działy C i łącza między routerami.

26/35Supernetting: Łączenie w grupy

Sumaryzacja tras dla efektywnego routingu

Gdy nasza sieć rośnie i mamy dziesiątki podsieci, ich lista staje się trudna do ogarnięcia przez routery. Supernetting (sumaryzacja) to proces odwrotny do dzielenia – bierzemy kilka sąsiadujących podsieci i ogłaszamy je światu jako jedną, dużą "super-sieć".

Zamiast mówić: "U mnie są sieci 10.1.0.0, 10.1.1.0, 10.1.2.0 i 10.1.3.0", router mówi: "Wyślij do mnie wszystko, co zaczyna się od 10.1.0.0/22". Zmniejsza to obciążenie procesorów w węzłach sieciowych i sprawia, że drobne awarie w jednym zakątku firmy nie powodują nerwowych zmian w tablicach routingu na drugim końcu świata.

Supernetting (Sumaryzacja tras)

Warunkiem sumaryzacji jest, aby sieci były kolejno po sobie następujące i można je było opisać jedną, dłuższą maską. Na przykład sieci 10.1.0.0/24, 10.1.1.0/24, 10.1.2.0/24 i 10.1.3.0/24 można zagregować do 10.1.0.0/22, ponieważ mieszczą się w jednym bloku 1024 adresów (4 × 256).

Sumaryzacja odgrywa kluczową rolę w BGP (Border Gateway Protocol) – protokole routingu między systemami autonomicznymi w Internecie. Gdyby nie supernetting, tablice routingu globalnych routerów zawierałyby miliony wpisów zamiast obecnych ~900 000 tras zagregowanych. W sieciach korporacyjnych sumaryzacja jest stosowana na routerach granicznych, aby zmniejszyć rozmiar tablic routingu w sieci wewnętrznej.

27/35Anatomia pakietu IP

Budowa datagramu IPv4

Gdy dane opuszczają Twoją przeglądarkę, zostają zapakowane w "kopertę" zwaną datagramem IP. Standardowy nagłówek ma 20 bajtów i zawiera informację o wersji systemu (IPv4) oraz typie usługi (ToS), który decyduje, czy dany pakiet ma priorytet (np. podczas rozmowy przez Skype).

Wewnątrz koperty znajdziemy też numer identyfikacyjny potrzebny przy fragmentacji, gdy dane są zbyt duże na jeden raz. Najważniejszymi elementami są jednak adres IP nadawcy oraz odbiorcy – to one pozwalają poczcie internetowej (routerom) wiedzieć, skąd pakiet pochodzi i dokąd zmierza, bez zaglądania do treści Twojej wiadomości.

Datagram IP: Struktura nagłówka

Nagłówek IPv4 składa się z następujących pól: Version (4 bity – zawsze 4 dla IPv4), IHL (4 bity – długość nagłówka w 32-bitowych słowach, zazwyczaj 5 = 20 bajtów), ToS/DSCP (8 bitów – typ usługi), Total Length (16 bitów – całkowita długość datagramu w bajtach), Identification (16 bitów), Flags (3 bity), Fragment Offset (13 bitów), TTL (8 bitów), Protocol (8 bitów), Header Checksum (16 bitów), Source Address (32 bity), Destination Address (32 bity).

Pole IHL (Internet Header Length) określa długość nagłówka, co jest ważne, ponieważ nagłówek może być dłuższy niż standardowe 20 bajtów, jeśli użyto opcji IP (IP Options). W praktyce opcje IP są rzadko używane ze względu na obawy o bezpieczeństwo i wydajność.

28/35Mechanizm TTL: Zapobieganie pętlom

Time-To-Live jako zabezpieczenie przed zapętleniem

Pole Time-To-Live (TTL) to swoisty "licznik zgonu" dla pakietu. Zapobiega on sytuacji, w której błąd w konfiguracji routerów sprawiłby, że pakiet krążyłby w kółko w nieskończoność, zapychając sieć. Każdy router, przez który przechodzi dane, odejmuje od TTL cyfrę 1.

Jeśli TTL spadnie do zera, router bezlitośnie niszczy pakiet. To właśnie dzięki temu mechanizmowi działa polecenie traceroute – wysyła ono pakiety z coraz większym TTL, zmuszając kolejne routery na trasie do odsyłania błędów, co pozwala nam narysować dokładną mapę ścieżki do celu.

Pole TTL (Time-To-Live)

W systemie Windows polecenie do śledzenia trasy to tracert [adres], w Linux i macOS traceroute [adres]. Działa ono poprzez wysłanie pakietów z TTL=1, TTL=2, TTL=3 itd. Gdy router odrzuci pakiet z TTL=0, wysyła komunikat ICMP Time Exceeded (typ 11, kod 0) z powrotem do nadawcy, który odczytuje adres IP routera i wyświetla go jako kolejny "hop" na trasie.

Domyślna wartość TTL zależy od systemu operacyjnego. Windows ustawia TTL=128, Linux domyślnie TTL=64, a urządzenia Cisco TTL=255. Wykorzystuje się to czasem do fingerprintingu systemów operacyjnych – analizując początkową wartość TTL, można zgadnąć, jaki system operacyjny jest źródłem pakietu.

29/35Fragmentacja: gdy pakiet jest za duży

Dzielenie pakietów poniżej MTU

Różne technologie sieciowe mają różną "pojemność wagonika", czyli parametr MTU (Maximum Transmission Unit). Typowo dla Ethernetu jest to 1500 bajtów. Jeśli router musi przesłać większy pakiet do sieci o mniejszym MTU, musi go "pofragmentować" na mniejsze kawałki.

Dzięki polom Flag oraz Fragment Offset odbiorca wie, jak z powrotem skleić te fragmenty w całość. Co ciekawe, administrator może ustawić flagę "Don't Fragment" – wtedy router, zamiast dzielić pakiet, po prostu go odrzuci. Jest to przydatne do testowania przepustowości i optymalizowania pracy aplikacji działających w czasie rzeczywistym.

Pola Flag i Fragment Offset

Pole Flags w nagłówku IPv4 ma 3 bity. Bit 0 jest zarezerwowany (musi być 0). Bit 1 to DF (Don't Fragment) – jeśli ustawiony na 1, router nie może fragmentować pakietu. Bit 2 to MF (More Fragments) – jeśli ustawiony na 1, oznacza, że po tym fragmencie nastąpią kolejne. Ostatni fragment ma MF=0.

Fragment Offset (13 bitów) wskazuje pozycję fragmentu w oryginalnym datagramie, wyrażoną w jednostkach 8-bajtowych. Dzięki temu odbiorca może poskładać fragmenty w poprawnej kolejności. Mechanizm Path MTU Discovery (PMTUD) pozwala uniknąć fragmentacji poprzez wysyłanie pakietów z flagą DF i dynamiczne dostosowywanie rozmiaru pakietu do najmniejszego MTU na ścieżce.

30/35Identyfikator protokołu wyższej warstwy

Pole Protocol jako klucz demultipleksacji

Pakiet IP jest tylko opakowaniem dla innych protokołów. Pole Protocol w nagłówku to specjalny numer, który mówi komputerowi, komu ma oddać wyjęte z koperty dane po ich otrzymaniu. To krytyczny element procesu demultipleksacji.

Najczęściej spotykane numery to 6 (dla TCP – czyli protokołu stron WWW i poczty) oraz 17 (dla UDP – gier i rozmów wideo). Znajdziemy tam również numer 1 dla ICMP, który służy do przesyłania komunikatów technicznych i błędów (jak słynny ping). Bez tego pola system nie wiedziałby, czy otrzymane dane to fragment zdjęcia, czy może polecenie sterujące siecią.

Pole Protocol

Pole Protocol (8 bitów) znajduje się w nagłówku IPv4 na pozycji bajtu 9 (licząc od 0). Wartości są przypisane przez IANA i zarejestrowane w oficjalnej liście. Do najważniejszych należą: 1 – ICMP, 2 – IGMP, 6 – TCP, 17 – UDP, 41 – IPv6 (tunelowanie), 89 – OSPF, 132 – SCTP.

W nagłówku IPv6 odpowiednikiem pola Protocol jest pole Next Header, które pełni tę samą funkcję – wskazuje, jaki protokół znajduje się w danych bezpośrednio za nagłówkiem IPv6. W IPv6 pole to umożliwia również tworzenie łańcucha nagłówków rozszerzeń (extension headers), co daje większą elastyczność niż w IPv4.

31/35Niezmienne adresy źródła i celu

Stałość adresów IP podczas podróży pakietu

Najważniejsze 64 bity w nagłówku IP to adresy: skąd (źródło) i dokąd (cel). W przeciwieństwie do adresów MAC, które zmieniają się u każdego napotkanego po drodze routera, adresy IP pozostają stałe przez całą podróż od Twojego telefonu do serwera np. Google.

To właśnie ta stałość adresu docelowego pozwala routerom na całym świecie podejmować spójne decyzje. Router nie musi wiedzieć, kim jesteś, ale musi dokładnie wiedzieć, dokąd chcesz wysłać wiadomość. Adres źródłowy jest z kolei niezbędny odbiorcy, aby wiedział, na jaki numer IP ma wysłać odpowiedź z danymi.

Adresy IP źródłowy i docelowy

Warto podkreślić fundamentalną różnicę między warstwą 2 a warstwą 3. Adres MAC źródłowy i docelowy zmieniają się na każdym przeskoku (hopie) między routerami – każdy router zdejmuje starą ramkę Ethernet i zakłada nową z własnym adresem MAC jako źródłowym i adresem MAC następnego routera jako docelowym. Adresy IP natomiast pozostają niezmienione przez całą trasę (chyba że zastosowano NAT).

Wyjątkiem od zasady niezmienności adresów IP jest NAT (Network Address Translation), który modyfikuje adres źródłowy (i opcjonalnie docelowy) w locie. W przypadku SNAT (Source NAT) adres źródłowy jest zmieniany z prywatnego na publiczny. DNAT (Destination NAT) zmienia adres docelowy i jest używany np. do przekierowywania portów z routera na serwer wewnętrzny.

32/35Przekazywanie pakietów przez router

Rola routera w komunikacji między sieciami

Prawdziwa "magia" dzieje się na routerach. Gdy urządzenie to odbiera pakiet, musi błyskawicznie sprawdzić adres docelowy i zdecydować, przez który ze swoich portów go wypuścić. Każdy interfejs routera to osobny świat (domena rozgłoszeniowa), a router jest jedyną bramą, która pozwala się między nimi przemieszczać.

Routery filtrują ruch rozgłoszeniowy (broadcast), nie pozwalając lokalnemu hałasowi z jednej sieci przedostać się do drugiej. Dzięki temu miliony komputerów mogą być połączone ze sobą bez paraliżowania całej sieci zbędnymi komunikatami. Proces ten to właśnie routing – fundament współczesnej globalnej komunikacji.

Rola routera: Przekazywanie pakietów L3

Proces przekazywania pakietu przez router składa się z kilku kroków: (1) Odbior pakietu z interfejsu wejściowego. (2) Router sprawdza adres docelowy IP w pakiecie. (3) Przeszukuje tablicę routingu w poszukiwaniu najdłuższego dopasowania prefiksu (LPM). (4) Jeśli znajdzie dopasowanie, określa interfejs wyjściowy i adres następnego skoku (next hop). (5) Zmienia adresy MAC w ramce Ethernet (encji L2). (6) Dekrementuje TTL i przelicza sumę kontrolną nagłówka IP. (7) Wysyła pakiet przez odpowiedni interfejs wyjściowy.

Nowoczesne routery wykorzystują mechanizmy CEF (Cisco Express Forwarding) lub FIB (Forwarding Information Base) do przyspieszenia tego procesu. Zamiast każdorazowo przeszukiwać tablicę routingu (co jest kosztowne obliczeniowo), router buduje w pamięci podręcznej gotowe mapy przekazywania, które są używane do podejmowania decyzji z prędkością sprzętową.

33/35Tablica routingu: Pamięć doświadczonego podróżnika

Baza wiedzy routera o dostępnych sieciach

Router podejmuje każdą decyzję na podstawie swojej tablicy routingu. Jest to stale aktualizowana baza danych, która zawiera listę wszystkich znanych sieci i instrukcje, jak do nich trafić. Bez niej router byłby zupełnie ślepy i nie wiedziałby, co zrobić z otrzymanymi danymi.

Tablica ta może być uzupełniana przez człowieka (routing statyczny – pewny, ale wymagający pracy) lub przez same routery, które rozmawiają ze sobą przy pomocy protokołów takich jak OSPF (routing dynamiczny). Dobrze utrzymana tablica gwarantuje, że dane zawsze płyną ścieżką o najniższym "koszcie" lub najwyższej wydajności.

Tablica routingu: Elementy i zasada działania

W systemie Cisco IOS tablicę routingu wyświetlamy poleceniem show ip route. W systemie Linux służy do tego ip route show lub starsze route -n. Tablica routingu zawiera wpisy dla różnych źródeł tras, oznaczonych kodami: C – trasa bezpośrednio podłączona (connected), S – trasa statyczna, O – OSPF, D – EIGRP, B – BGP.

Routing statyczny polega na ręcznym dodawaniu tras przez administratora. Jest bezpieczny, przewidywalny i nie generuje ruchu sieciowego, ale nie skaluje się dobrze w dużych sieciach. Routing dynamiczny automatycznie wykrywa zmiany w topologii i aktualizuje tablice routingu, ale wymaga starannej konfiguracji i generuje dodatkowy ruch związany z wymianą informacji routingu.

34/35Z czego składa się opis trasy?

Elementy wpisu w tablicy routingu

Każdy wpis w tablicy to kompletny przepis na przesyłanie. Składa się z adresu sieci docelowej (cel), adresu "następnego skoku" (Next Hop – czyli adresu kolejnej bramy po drodze) lub nazwy własnego interfejsu wyjściowego. Kluczowym elementem jest również metryka – liczba określająca, jak daleka lub trudna jest ta droga.

Router nanosi na każdy wpis kod źródła, który mówi mu, jak bardzo może ufać danej informacji. Jeśli router dowie się o drodze do serwera z dwóch różnych źródeł, porówna ich parametry i do tablicy głównej wpisze tylko tę jedną, najlepszą ścieżkę, dbając o porządek i brak sprzecznych instrukcji.

Wpisy w tablicy routingu

Router może poznać tę samą trasę z różnych źródeł (np. z routingu statycznego i protokołu OSPF). Aby wybrać najlepszą trasę, router używa dwóch wartości: Administrative Distance (AD) oraz metryki. AD określa wiarygodność źródła trasy – im niższa wartość, tym bardziej zaufane źródło. Trasy bezpośrednio podłączone mają AD=0, trasy statyczne AD=1, OSPF AD=110, BGP AD=20 (eBGP) lub 200 (iBGP).

Jeśli dwie trasy pochodzą z tego samego źródła (np. obie z OSPF), router porównuje ich metryki. W OSPF metryka to koszt obliczany na podstawie przepustowości łącza (100 Mbps / przepustowość). W EIGRP metryka uwzględnia przepustowość, opóźnienie, niezawodność i obciążenie. Trasa z niższą metryką jest wybierana jako najlepsza i umieszczana w tablicy routingu.

35/35Precyzja ma pierwszeństwo: zasada LPM

Longest Prefix Match jako fundament routingu

Gdy router ma w tablicy kilka pasujących tras (np. ogólną trasę do miasta i dokładną do konkretnej ulicy), zawsze kieruje się zasadą Longest Prefix Match. Wybierze tę trasę, która ma najdłuższą maskę sieciową, czyli jest najbardziej precyzyjna względem adresu docelowego.

Zasada ta jest fundamentem Internetu – pozwala na istnienie ogólnych "autostrad" sieciowych przy jednoczesnym zachowaniu bardzo szczegółowych, lokalnych dróg do konkretnych usług. Dzięki LPM ruch sieciowy jest zawsze kierowany najbardziej specyficzną i najkrótszą możliwą drogą do odbiorcy końcowego.

Zasada najdłuższego dopasowania prefiksu

Przykład LPM w działaniu: Router ma trzy wpisy w tablicy routingu – 0.0.0.0/0 (trasa domyślna), 10.0.0.0/8 oraz 10.1.0.0/16. Pakiet dociera z adresem 10.1.5.20. Którą trasę wybierze router? Adres 10.1.5.20 pasuje do wszystkich trzech, ale najdłuższe dopasowanie ma 10.1.0.0/16 (16 bitów). Router wybierze tę trasę, ignorując mniej precyzyjne.

Trasa domyślna (0.0.0.0/0) ma maskę długości 0 – pasuje do każdego adresu IP. Jest używana jako "ostatnia deska ratunku", gdy router nie ma bardziej specyficznej trasy. W Internecie każdy router ma trasę domyślną wskazującą na dostawcę usług internetowych (ISP). Bez LPM, router musiałby mieć w tablicy osobny wpis dla każdej istniejącej sieci na świecie – byłoby to niemożliwe do utrzymania.