1/31
Witajcie w warstwie sieciowej
Szanowni Państwo, wkraczamy na teren "prawdziwego" Internetu. Wcześniej mówiliśmy o kablach i przełącznikach (LAN), które pozwalają na komunikację w obrębie jednego pokoju lub budynku. Dziś poznamy Warstwę 3 (Warstwa Sieciowa, ang. Network Layer) modelu OSI, która łączy te lokalne wyspy w globalny archipelag. Dowiesz się, jak zbudowany jest adres IP, dlaczego maska podsieci jest tak ważna i jak routery decydują o trasie twojego e-maila do Australii. Poruszymy też temat Warstwy 4 (Transportowej), czyli wyjaśnimy, dlaczego gry online używają UDP, a bankowość internetowa TCP.
Ziemia opleciona siecią połączeń IP
2/31
Protokół Internetowy (IP)
Protokół IP (ang. Internet Protocol – protokół internetowy) to "esperanto" świata komputerów. Niezależnie od tego, czy używasz kabla miedzianego, światłowodu czy Wi-Fi – na poziomie logicznym wszyscy mówią w języku IP. Jego głównym zadaniem jest logiczne adresowanie urządzeń oraz fragmentacja pakietów, jeśli są za duże dla danej sieci. IP jest protokołem bezpołączeniowym (ang. Connectionless) i działa w trybie najlepszych starań (ang. Best Effort) – wyśle pakiet w świat, ale nie sprawdzi, czy dotarł. Niezawodnością transmisji martwi się warstwa wyższa (TCP).
Obraz dla slajdu 2
3/31
Adresacja IPv4
Adres IPv4 to 32-bitowa liczba, zapisywana dla wygody człowieka jako cztery liczby dziesiętne (oktety) oddzielone kropkami, np. 192.168.1.100. Każdy oktet ma wartość od 0 do 255. Ta pula daje nam teoretycznie około 4,3 miliarda adresów. W latach 80. wydawało się to nieskończonością. Dziś, w dobie smartfonów, lodówek i zegarków z dostępem do sieci, ta pula została całkowicie wyczerpana (dlatego stosujemy NAT i przechodzimy na IPv6). Adres IP jest adresem logicznym – można go zmienić w ustawieniach systemu operacyjnego, w przeciwieństwie do fizycznego adresu MAC.
Struktura adresu IPv4 (binarnie i dziesiętnie)
4/31
Klasy adresowe (Rys historyczny)
Początkowo Internet podzielono sztywno na klasy:
- Klasa A (0.0.0.0 – 127.255.255.255): Dla gigantów (IBM, MIT, armia USA). 16 milionów hostów w jednej sieci.
- Klasa B (128.0.0.0 – 191.255.255.255): Dla dużych korporacji i uniwersytetów. 65 tys. hostów.
- Klasa C (192.0.0.0 – 223.255.255.255): Dla małych firm. 254 hosty.
Ten system był bardzo nieefektywny (marnował mnóstwo adresów) i został zastąpiony przez bezklasowy routing CIDR (ang. Classless Inter-Domain Routing – bezklasowe trasowanie między domenami), ale terminy "Klasa C" wciąż funkcjonują w żargonie administratorów.
Obraz dla slajdu 4
5/31
Maska podsieci (Subnet Mask)
Sam adres IP 192.168.1.10 nic nam nie mówi bez maski. Maska (np. 255.255.255.0) jest sitem, które oddziela część adresu oznaczającą SIEĆ od części oznaczającej HOST (komputer).
Maska działa na zasadzie bitowej koniunkcji (operacja AND).
Jeśli maska ma jedynki (255), ta część adresu IP jest stała dla całej sieci (identyfikator sieci, ang. Network ID).
Jeśli maska ma zera (0), ta część adresu identyfikuje konkretny komputer (identyfikator hosta, ang. Host ID).
To dzięki masce komputer wie, czy adresat jest w tym samym pokoju (sieci lokalnej), czy musi wysłać pakiet do routera (bramy domyślnej).
Działanie maski podsieci
6/31
Adres sieci i Adres rozgłoszeniowy
W każdej podsieci dwa adresy są specjalne i nie można ich przypisać komputerowi:
1. Adres Sieci (ang. Network Address): Pierwszy adres w puli (np. 192.168.1.0). Identyfikuje on całą grupę. Wpisujemy go w tablicach routingu.
2. Adres Rozgłoszeniowy (ang. Broadcast Address): Ostatni adres w puli (np. 192.168.1.255). Pakiet wysłany na ten adres trafi do wszystkich urządzeń w tej podsieci.
Zatem w sieci "Klasy C" z 256 adresów, do dyspozycji mamy 254 użyteczne adresy dla hostów.
Obraz dla slajdu 6
7/31
Notacja CIDR (Slash Notation)
Zamiast pisać długie 255.255.255.0, inżynierowie używają skróconego zapisu CIDR (ang. Classless Inter-Domain Routing). Liczymy liczbę jedynek w masce:
- 255.0.0.0 = /8
- 255.255.0.0 = /16
- 255.255.255.0 = /24 (standard domowy)
- 255.255.255.252 = /30 (sieci łączące dwa routery, tylko 2 adresy użyteczne).
Zapis 192.168.1.0/24 jest standardem w dokumentacji i konfiguracji routerów. Pozwala to na elastyczne tworzenie podsieci o dowolnym rozmiarze (VLSM – ang. Variable Length Subnet Masking – podział na podsieci o zmiennej długości maski).
Tabela masek CIDR
8/31
Brama Domyślna (Default Gateway)
Brama domyślna to "drzwi wyjściowe" z naszej sieci lokalnej. Jest to adres IP routera (od strony naszej sieci), który wie, jak dotrzeć do Internetu. Jeśli komputer chce wysłać pakiet do Google (adres spoza lokalnej maski podsieci), pakuje go w ramkę skierowaną na adres MAC bramy domyślnej. Bez wpisanej bramy domyślnej, komputer może rozmawiać tylko z sąsiadami w tej samej sieci LAN, ale nie wyjdzie "na zewnątrz". W domu twoją bramą jest zazwyczaj adres 192.168.0.1 lub 192.168.1.1.
Obraz dla slajdu 8
9/31
Adresy prywatne (RFC 1918)
Adresy IP dzielą się na publiczne (widoczne w Internecie, płatne) i prywatne (do użytku wewnątrz firmy/domu, darmowe).
Pule prywatne to:
- 10.0.0.0 – 10.255.255.255 (duże firmy)
- 172.16.0.0 – 172.31.255.255 (średnie firmy)
- 192.168.0.0 – 192.168.255.255 (małe sieci, domy)
Adresy te NIE są rutowalne w Internecie. Routery operatorów natychmiast je odrzucają. Aby wyjść z sieci prywatnej do Internetu, niezbędny jest mechanizm NAT (ang. Network Address Translation – translacja adresów sieciowych).
Adresy publiczne vs prywatne
10/31
Protokół IPv6 – Nowe rozdanie
Wobec wyczerpania się puli adresów IPv4, świat przechodzi na IPv6. Zamiast 32 bitów, mamy tu 128 bitów adresu. Daje to astronomiczną liczbę 340 undecylionów adresów. Każde ziarnko piasku na Ziemi mogłoby mieć własne IP. Zapis jest szesnastkowy (heksadecymalny), np. 2001:0db8:85a3:0000:0000:8a2e:0370:7334. IPv6 upraszcza nagłówek pakietu (szybsze przetwarzanie przez routery), eliminuje potrzebę stosowania NAT (każde urządzenie może mieć publiczny adres) i ma wbudowane mechanizmy bezpieczeństwa IPsec. Wdrażanie postępuje powoli, ale nieuchronnie.
Obraz dla slajdu 10
11/31
Warstwa Transportowa (Layer 4)
Warstwa czwarta zarządza komunikacją od końca do końca (ang. End-to-End) między aplikacjami. To ona decyduje, JAK dane mają być przesłane. Czy zależy nam na 100% pewności (plik zip musi być bezbłędny), czy na szybkości czasu rzeczywistego (rozmowa głosowa może lekko trzeszczeć, byle nie było opóźnień). Warstwa transportowa wprowadza też pojęcie portów, które pozwalają systemowi operacyjnemu odróżnić dane dla przeglądarki WWW od danych dla gry online, mimo że przychodzą na ten sam adres IP.
Warstwa transportowa w stosie TCP/IP
12/31
TCP – Protokół Niezawodny
TCP (ang. Transmission Control Protocol – protokół kontroli transmisji) to "solidny kurier".
- Połączeniowy: Nawiązuje sesję przed wysłaniem danych (trójstopniowe uzgadnianie, ang. 3-Way Handshake: SYN, SYN-ACK, ACK).
- Niezawodny: Każdy segment musi zostać potwierdzony przez odbiorcę (ang. Acknowledgment – potwierdzenie odbioru). Jeśli potwierdzenie nie nadejdzie – TCP wysyła dane ponownie.
- Uporządkowany: Numeruje segmenty, więc nawet jeśli dotrą w złej kolejności, odbiorca je poskłada poprawnie.
- Kontrola przepływu (ang. Windowing): Jeśli odbiorca nie nadąża, TCP zwolni transmisję. Zastosowanie: WWW (HTTP), poczta (SMTP, IMAP), transfer plików (FTP), SSH.
Nagłówek TCP i 3-way handshake
13/31
UDP – Protokół Szybki
UDP (ang. User Datagram Protocol – protokół datagramów użytkownika) to "szybki posłaniec na motocyklu".
- Bezpołączeniowy: Nie traci czasu na nawiązywanie połączenia, od razu wysyła dane.
- Brak gwarancji: Nie obchodzi go, czy pakiet dotarł. Zgubione? Trudno, wysyłamy następne.
- Lekki nagłówek: Tylko 8 bajtów (TCP ma min. 20 bajtów).
Zastosowanie: transmisja strumieniowa wideo/audio (Netflix, YouTube), VoIP (Skype, Zoom), gry online (FPS), DNS, DHCP. Tutaj ważniejsze jest, by obraz był płynny ("na żywo"), niż żeby każda klatka była perfekcyjna. Czekanie na retransmisję w rozmowie wideo spowodowałoby niezrozumiałe "szczątki" dźwiękowe.
Obraz dla slajdu 13
14/31
Porty i Gniazda (Sockets)
Adres IP identyfikuje komputer (jak adres budynku). Numer portu identyfikuje konkretną aplikację w tym komputerze (jak numer mieszkania). Port to liczba 16-bitowa (0–65535).
Połączenie IP + Port nazywamy gniazdem sieciowym (ang. Socket), np. 192.168.1.5:80.
Dzięki temu serwer może jednocześnie obsługiwać stronę WWW na porcie 80 i pocztę na porcie 25, a pakiety się nie mieszają.
Koncepcja gniazda sieciowego
15/31
Zakresy Portów (IANA)
Porty są podzielone na trzy grupy przez organizację IANA (ang. Internet Assigned Numbers Authority – organ przydzielający numery internetowe):
1. Dobrze znane (ang. Well-Known Ports): 0–1023. Zarezerwowane dla kluczowych usług. Tylko administrator (root) może uruchomić usługę na tych portach. (np. 80 HTTP, 443 HTTPS, 22 SSH, 53 DNS).
2. Rejestrowane: 1024–49151. Przydzielane aplikacjom firm trzecich (np. 3306 MySQL, 1433 MSSQL, 8080 alternatywne WWW).
3. Dynamiczne/Prywatne: 49152–65535. Używane tymczasowo przez komputer kliencki jako porty źródłowe podczas łączenia się z serwerem.
Obraz dla slajdu 15
16/31
Nawiązanie połączenia TCP (3-Way Handshake)
To klasyczne pytanie rekrutacyjne. Jak zaczyna się rozmowa TCP?
1. SYN (ang. Synchronize – synchronizuj): Klient wysyła pakiet z flagą SYN (Chcę pogadać, mój numer sekwencyjny to X).
2. SYN-ACK (Synchronize-Acknowledge – synchronizuj i potwierdź): Serwer odpowiada: Słyszę cię (ACK X+1), zgadzam się, mój numer to Y (SYN).
3. ACK (ang. Acknowledge – potwierdź): Klient odpowiada: Zrozumiałem (ACK Y+1).
Dopiero po tej wymianie uprzejmości (trwającej ok. kilkadziesiąt milisekund) następuje wysłanie właściwych danych (np. żądania strony WWW).
Schemat 3-Way Handshake
17/31
Mechanizm okna przesuwnego (Sliding Window)
TCP potrafi dostosować prędkość do jakości łącza. Zamiast wysyłać pakiet i czekać na potwierdzenie (metoda "zatrzymaj i czekaj", ang. Stop-and-Wait), nadawca wysyła serię pakietów (okno). Rozmiar okna (ang. Window Size) mówi, ile bajtów można wysłać bez potwierdzenia. Jeśli wszystko idzie dobrze, okno rośnie (wysyłamy szybciej). Jeśli pakiet zaginie, okno maleje. To dlatego podczas pobierania pliku prędkość czasem rośnie powoli ("rozpędza się") – to TCP bada przepustowość łącza.
Obraz dla slajdu 17
18/31
Fragmentacja pakietów IP
Każda sieć ma swoje MTU (ang. Maximum Transmission Unit – maksymalna jednostka transmisji) – zazwyczaj 1500 bajtów dla Ethernetu. Co, jeśli router musi przesłać pakiet 4000 bajtów przez łącze z MTU 1500? Musi go "pokroić" na mniejsze kawałki (fragmentacja). Każdy kawałek otrzymuje nagłówek IP, aby trafić do celu. Odbiorca musi te kawałki poskładać. Jest to proces obciążający routery, dlatego staramy się go unikać (mechanizm PMTUD – ang. Path MTU Discovery – wykrywanie MTU ścieżki). W IPv6 routery pośrednie WCALE nie fragmentują pakietów – jeśli pakiet jest za duży, jest odrzucany, a nadawca dostaje informację zwrotną, żeby wysyłał mniejsze.
Proces fragmentacji pakietu
19/31
ICMP (Internet Control Message Protocol)
ICMP (ang. Internet Control Message Protocol – protokół komunikatów sterujących Internetu) to "serwisowy" brat protokołu IP. Nie służy do przesyłania danych użytkownika, ale do raportowania błędów i diagnostyki. To na nim opiera się polecenie ping. Komunikaty ICMP informują nas np. o: "Destination Unreachable" (nie ma trasy do celu), "Time Exceeded" (pakiet krążył w pętli i wygasł TTL – patrz traceroute), "Redirect" (jest lepsza trasa). Administratorzy często blokują ICMP na zaporach sieciowych (ang. firewallach) dla bezpieczeństwa, co utrudnia diagnostykę ("ping nie odpowiada, choć serwer działa").
Obraz dla slajdu 19
20/31
TTL (Time To Live)
W nagłówku IP znajduje się pole TTL (ang. Time To Live – czas życia pakietu). Jest to licznik (np. startuje od 64), który jest zmniejszany o 1 przez KAŻDY router, przez który przechodzi pakiet. Gdy TTL osiągnie 0, router bezlitośnie kasuje pakiet i wysyła do nadawcy komunikat błędu ICMP. Po co? Aby zabłąkane pakiety (w pętli routingu) nie krążyły w Internecie w nieskończoność ("pakiety zombie"), zatykając łącza. TTL jest mechanizmem "bezpiecznika".
Obraz dla slajdu 20
21/31
netstat - podgląd połączeń
Jak sprawdzić, co robi Twój komputer? Polecenie netstat -an (lub nowsze ss w Linuksie) wyświetla listę wszystkich aktywnych połączeń TCP i UDP. Możesz tam zobaczyć: adres lokalny i port, adres zdalny i port, oraz stan połączenia (ESTABLISHED – połączono, LISTENING – serwer nasłuchuje na połączenia, TIME_WAIT – trwa zamykanie połączenia). Jeśli widzisz dziwne połączenie do nieznanego IP na dziwnym porcie, może to świadczyć o infekcji trojanem.
Wynik polecenia netstat
22/31
Konfiguracja interfejsów routera
Router oddziela od siebie domeny rozgłoszeniowe. Każdy jego aktywny port uczestniczy z zasady w innej podsieci. Dlatego niezbędne jest ręczne przypisanie adresacji IP do portów (np. interfejsu GigabitEthernet0/0):
Router(config)# interface g0/0
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Domyślnie na routerach (w odróżnieniu od przełączników) porty są administracyjnie wyłączone ze względów bezpieczeństwa. Uruchamiamy je komendą:
Router(config-if)# no shutdown
Od tej chwili użytkownicy naszej podsieci 192.168.1.0/24 mogą wpisywać u siebie adres routera jako swoją bramę domyślną (ang. Default Gateway).
Zrzut z komend przypisujących IP interfejsowi routera
23/31
Tablica routingu - mózg urządzenia sieciowego
Odbierając pakiet danych od klienta, router wyodrębnia docelowy adres IP i sprawdza dopasowanie z wpisami w Tablicy Routingu. Mechanizm decyzyjny zawsze poszukuje najdokładniej pasującego prefiksu. Sieci bezpośrednio podłączone do routera widnieją natychmiast jako gotowe trasy (tzw. trasy Connected, oznaczane literą C). Aby router wysłał pakiet dalej w głąb globalnej topologii, jego tablica wymaga uzupełnienia o kolejne trasy przez administratora. Zawartość tablicy, z podziałem na sieci lokalne i zdalne, wyświetlamy poleceniem w trybie uprzywilejowanym:
show ip route
Tabela ukazująca wpisy do tablicy routingu
24/31
Konfiguracja routingu statycznego
Administrator może zaplanować topologię i wpisywać trasy ręcznie – do tego służy routing statyczny. Komenda pozwala precyzyjnie określić, dokąd ma trafić pakiet. Standardowy zapis określa: sieć docelową, jej maskę oraz adres IP kolejnego routera (tzw. następny skok, ang. next hop).
Przykład trasy do sieci 10.0.0.0 (z maską /8):
Router(config)# ip route 10.0.0.0 255.0.0.0 192.168.2.2
Najpowszechniejszym wyjątkiem jest trasa domyślna (ang. Default Route), używana do kierowania całego nieznajomego ruchu do dostawcy usług internetowych. Obejmuje ona zerowy adres sieci i zerową maskę, wyłapując dowolny adres w Internecie:
Router(config)# ip route 0.0.0.0 0.0.0.0 192.168.2.2
Schemat na temat routingu pomiędzy sieciami
25/31
Zrozumienie routingu dynamicznego
Ręczne wpisywanie tras staje się nieefektywne w rozbudowanych sieciach z wieloma punktami styku. Tutaj z pomocą wkracza routing dynamiczny. Routery wyposażone w aktywny protokół routingu samodzielnie informują sąsiednie węzły o podłączonych podsieciach, a także wzajemnie powiadamiają się o awariach łączy. Protokoły oparte na liczbie skoków (ang. hop count), takie jak RIP (ang. Routing Information Protocol), różnią się od nowszych protokołów stanu łącza (ang. link-state), takich jak OSPF (ang. Open Shortest Path First). Te drugie uwzględniają przepustowość łączy i gwarantują, że router szybko i w pełni automatycznie wyliczy najkrótszą ścieżkę dla pakietów.
Ilustracja jak routery dzielą się tablicami routingu
26/31
Implementacja protokołu OSPF
Routing dynamiczny OSPF (ang. Open Shortest Path First – wybór najkrótszej ścieżki) wybiera trasy w oparciu o przepustowość łącza (koszt). Protokół wspiera podział sieci na obszary (ang. areas), gdzie centralną rolę odgrywa Area 0, zwana obszarem szkieletowym. OSPF używa odwróconej maski dziesiętnej, zwanej maską wieloznaczną (ang. Wildcard Mask), w której bity zer i jedynek mają odwrotne znaczenie niż w standardowej masce podsieci. Uruchamiamy proces OSPF w trybie konfiguracji globalnej:
Router(config)# router ospf 1
Następnie wskazujemy, które podsieci router ma ogłaszać sąsiadom, wraz z przypisaniem do obszaru:
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0
Wymiana wiadomości Hello w OSPF między routerami
27/31
Podsumowanie warstw 3 i 4
Podsumujmy: Warstwa 3 (IP) to logistyka i adresowanie – dba o to, by pakiet znalazł drogę przez gąszcz routerów. Adres IP lokalizuje komputer w sieci. Warstwa 4 (Transportowa) to organizacja dostawy – TCP dba o jakość i kolejność, UDP o szybkość. Porty lokalizują konkretną aplikację na komputerze. Razem tworzą zgrany duet TCP/IP, który jest fundamentem dzisiejszej komunikacji cyfrowej.
Obraz dla slajdu 27
28/31
Co dalej? Usługi aplikacyjne
Mamy już kabel, mamy przełącznik, mamy adres IP i działające porty. Ale "pusta" sieć jest bezużyteczna. Użytkownik potrzebuje usług. W ostatnim wykładzie dowiemy się, jak komputer automatycznie zdobywa adres IP (DHCP), jak nazwy zamieniają się na liczby (DNS), jak działa translacja adresów (NAT), która ratuje nas przed brakiem IPv4, oraz jak bezpiecznie zarządzać serwerami na odległość (SSH).
Obraz dla slajdu 28
29/31
Ćwiczenie praktyczne
Spróbujcie w domu "pingnąć" stronę google.com (ping google.com). Zobaczcie, na jaki adres IP została zamieniona nazwa. Potem spróbujcie polecenia tracert google.com (Windows) lub traceroute google.com (Linux). Policzcie, przez ile routerów musi przejść pakiet, by dotrzeć do serwera Google. Zwróćcie uwagę na czasy opóźnień (ms). To najlepsza lekcja poglądowa o strukturze Internetu.
Zrzut ekranu z traceroute
30/31
Polecana literatura
Tematykę TCP/IP wyczerpująco opisuje książka "TCP/IP Illustrated" (W. Richard Stevens) – to pozycja kultowa, choć trudna. Dla początkujących polecam kursy online typu "CCNA od zera". Warto też zainstalować analizator sieciowy Wireshark i po prostu popatrzeć, co "lata" w naszej domowej sieci. Zobaczycie tam na żywo wszystko, o czym dziś mówiliśmy: flagi SYN, numery sekwencyjne i nagłówki IP.
Obraz dla slajdu 30
31/31
Koniec wykładu 4
Dziękuję za uwagę. Materiał był gęsty, ale kluczowy. Adresacja IP i maski to "tabliczka mnożenia" sieciowca – trzeba to umieć wyrecytować w nocy o północy. Zapraszam na krótką przerwę, a potem przejdziemy do ostatniej części naszego cyklu – usług sieciowych.