Technologie sieciowe
Wykład · Od sygnału w medium do usług internetowych
Jak czytać wykład
Nie musisz znać protokołów wymienionych w spisie treści. Zaczniemy od jednego łącza, a dopiero później złożymy z takich łączy Internet. Przy każdym mechanizmie ustal trzy rzeczy: jaki problem rozwiązuje, jakie dane przesyła i czego nie gwarantuje.
- Sygnał i łącze, rozdziały 1–9. Jak reprezentujemy bity, rozpoznajemy ramki i korzystamy z kabla lub radia?
- Droga między sieciami, rozdziały 10–15. Jak wybieramy następny skok, znajdujemy sąsiada i reagujemy na zbyt duży pakiet?
- Komunikacja procesów, rozdziały 16–18. Jak TCP odtwarza kolejność bajtów i ogranicza tempo nadawania? Jak host otrzymuje konfigurację i odnajduje usługę?
- Usługi i ochrona, rozdziały 19–24. Jak działają WWW, poczta i bezpieczne połączenia oraz jak sprawdzić je we własnym programie?
Słownik na początek: host to urządzenie końcowe, interfejs to jego punkt przyłączenia do sieci, a łącze umożliwia wymianę między sąsiadami. Nagłówek niesie informacje sterujące, natomiast dane, czyli payload, są przenoszoną zawartością. Ramka jest jednostką warstwy łącza, pakiet IP jednostką warstwy internetowej, a segment TCP jednostką protokołu transportowego. Te nazwy nie oznaczają tego samego obiektu. Ich zagnieżdżenie pokażemy w rozdziale o enkapsulacji.
Jednostki: 1 B to 8 bitów. W szybkościach sieciowych kb/s, Mb/s i Gb/s stosujemy mnożniki dziesiętne. Łącze 100 Mb/s odpowiada 12,5 MB/s przed uwzględnieniem narzutu protokołów; nie oznacza pobierania pliku z taką szybkością. MiB oznacza 220 B i nie jest tym samym co MB. Symbole matematyczne definiujemy przy konkretnym modelu, a nie jako jeden wspólny alfabet wszystkich rozdziałów.
Po rozdziale spróbuj odpowiedzieć na pytanie kontrolne przed rozwinięciem odpowiedzi. Następnie przejdź do odpowiadającej mu listy laboratoryjnej.
01 / PodstawySieć jest współpracą urządzeń i protokołów
Gdy przeglądarka pobiera stronę, nie wysyła jednego obiektu „strona WWW” przez pojedynczy przewód do serwera. Aplikacja przygotowuje żądanie, system operacyjny dzieli transmisję na jednostki protokołów, a kolejne urządzenia przekazują je przez łącza. Odbiorca odtwarza dane i interpretuje je zgodnie z regułami aplikacji.
Protokół określa format wiadomości, znaczenie pól oraz reakcje uczestnika na zdarzenia. Dwa programy mogą korzystać z tego samego łącza, a mimo to nie rozumieć się, jeśli inaczej interpretują przesyłane bajty. Dlatego podczas analizy zawsze pytamy: kto jest uczestnikiem, jaki komunikat wysyła, w jakim jest stanie i czego oczekuje dalej?
Co otrzymujemy od każdej warstwy?
Poniższa tabela jest mapą, nie listą skrótów do zapamiętania przed lekturą. Nazwy i mechanizmy z jej wierszy wyjaśniamy kolejno w następnych rozdziałach.
Warstwa udostępnia usługę warstwie wyższej. Protokół opisuje współpracę równorzędnych uczestników, a algorytm wybiera reakcję na odebrane pola, upływ czasu lub działanie aplikacji. Samo istnienie pola w nagłówku nie realizuje usługi: potrzebne są jeszcze stan i reguły jego aktualizacji.
| Poziom | Usługa i mechanizmy | Czego sam nie zapewnia? |
|---|---|---|
| Fizyczny | Przeniesienie symboli przez medium: kodowanie, modulacja, synchronizacja, odtworzenie bitów. | Adresowania usług, bezbłędnego kanału ani poufności. |
| Łącze: Ethernet, Wi-Fi | Ramki na danym łączu: granice, adresy MAC, FCS, dostęp do medium. Wi-Fi dodatkowo stosuje lokalne ACK i powtórzenia w odpowiednich trybach. | Potwierdzenie na jednym łączu nie potwierdza odbioru przez odległy serwer. Ethernet MAC nie realizuje ogólnej retransmisji unicastu jak TCP. |
| Internet: IP | Adresowanie i przekazywanie datagramów między sieciami; routing wyznacza następny skok, ICMP sygnalizuje wybrane problemy. | Dostarczenia, kolejności, eliminacji duplikatów, szyfrowania. |
| Transport: UDP lub TCP | Porty rozdzielają przepływy. UDP udostępnia datagramy. TCP dodaje uporządkowany strumień, retransmisje oraz kontrolę przepływu i przeciążenia. | TCP nie uwierzytelnia kryptograficznie partnera ani nie potwierdza wykonania operacji aplikacji. |
| Ochrona: TLS, SSH, IPsec | Uwierzytelnianie, integralność, poufność i ochrona przed wybranymi powtórzeniami, w granicach konkretnego protokołu i jego konfiguracji. | Bezpieczeństwa przejętego końca połączenia ani gwarantowanej dostępności. |
| Aplikacja: HTTP, SMTP, własny protokół | Znaczenie danych, granice wiadomości, autoryzacja, odpowiedzi i potwierdzenia wykonania operacji. | Nie może utożsamić wysłania bajtów lub ACK TCP z zatwierdzeniem transakcji. |
Przykład: poprawny FCS oznacza coś innego niż ACK=1501, poprawny znacznik uwierzytelnienia TLS albo status HTTP 200. Każdy z tych wyników odpowiada na inne pytanie. Ochrona nie stanowi jednej obowiązkowej „warstwy SSL”: TLS, SSH i IPsec włączamy w różnych miejscach stosu.
Topologia fizyczna, topologia logiczna
Topologia fizyczna opisuje połączenia urządzeń. Topologia logiczna opisuje, którędy i na jakich zasadach przepływają dane. Współczesny Ethernet zwykle łączy hosty z przełącznikami punkt do punktu. Wi-Fi współdzieli kanał radiowy. Oba rozwiązania mogą należeć do tej samej sieci lokalnej, lecz inaczej korzystają z medium.
LAN oznacza sieć lokalną, a WAN sieć rozległą. To nie jest klasyfikacja jakości: nie należy zakładać, że każde łącze WAN jest wolniejsze lub bardziej zawodne od każdego LAN. O jakości decydują konkretna technologia, odległość, obciążenie i polityka operatora.
Graf jako model
W modelu graf opisuje węzły i połączenia, a zbiór funkcji przypisuje łączom przepustowość, opóźnienie lub prawdopodobieństwo działania. Pełny dupleks można modelować dwoma łukami z osobnymi przepustowościami. Jedna krawędź nieskierowana ze wspólną pojemnością jest innym, uproszczonym modelem. Trzeba wybrać jeden i stosować go konsekwentnie.
Sprawdź rozumienie
Czy dwa hosty podłączone do tego samego przełącznika muszą należeć do tej samej podsieci IP? Nie. Fizyczne połączenie nie wyznacza konfiguracji adresów ani podziału na VLAN-y.
02 / Warstwa fizycznaOd sygnału do bitów
Bit jest informacją, a napięcie na parze przewodów, pole elektromagnetyczne i moc światła są wielkościami fizycznymi. Nadajnik przypisuje blokom bitów określone przebiegi sygnału. Kanał je osłabia i zniekształca, dodając zakłócenia. Odbiornik mierzy otrzymany przebieg, odzyskuje takt i rozstrzyga, który symbol najprawdopodobniej nadano. Dopiero z symboli odtwarza bity.
- Bitydane i nadmiarowość kodu
- Symbolemapowanie i kształtowanie impulsów
- Mediumprzewód, radio lub światłowód
- Pomiarysynchronizacja i decyzja
- Bitydekodowanie i kontrola błędów
Częstotliwość, pasmo i szum
Częstotliwość oznacza liczbę okresów na sekundę i jest wyrażana w hercach. Sinusoidę opisujemy amplitudą , częstotliwością , fazą i czasem :
Pasmo w Hz nie jest przepustowością w bit/s. Kanał Wi-Fi o szerokości 20 MHz zajmuje fragment widma, lecz liczba przenoszonych bitów zależy również od modulacji, kodowania i warunków radiowych. Sygnał o ostrych zboczach zawiera wiele składowych częstotliwościowych. Kanał o ograniczonym paśmie zaokrągla zbocza; kolejne impulsy mogą się nakładać. Jest to interferencja międzysymbolowa, ISI.
Odbiornik musi znać chwile podejmowania decyzji. Pomagają w tym przejścia sygnału, preambuła oraz układy odzyskiwania zegara. Korekcja charakterystyki kanału (ang. equalization) ogranicza skutki jego zniekształceń. Nie usuwa jednak całkowicie szumu i nie tworzy informacji, której pomiar nie zawiera.
Próbkowanie, kwantyzacja i kodowanie PCM
Próbkowanie wybiera chwile pomiaru. Kwantyzacja przypisuje amplitudzie jeden ze skończonej liczby poziomów. Kodowanie zapisuje numer poziomu jako bity. Dla sygnału dolnopasmowego ograniczonego do częstotliwości warunek bezpiecznego idealnego próbkowania jest następujący:
Tutaj jest częstotliwością próbkowania, liczbą bitów na próbkę, a liczbą kanałów sygnału, np. dwóch kanałów stereo. Nierówność dotyczy odtworzenia sygnału idealnie ograniczonego pasmowo. W praktyce filtr antyaliasingowy tłumi częstotliwości powyżej dopuszczalnego pasma i wymaga zapasu. Równość na granicy jest przypadkiem szczególnym, nie rozsądnym ustawieniem rzeczywistego przetwornika.
Przykład: jeden kanał głosu, 8000 próbek/s i 8 bitów/próbkę daje 64 kb/s przed nagłówkami i ewentualną kompresją. Dźwięk stereo 48 000 próbek/s przy 16 bitach wymaga 1 536 000 bit/s. To szybkość reprezentacji źródła, nie częstotliwość nośnej. Zwiększenie liczby bitów próbki zmniejsza błąd kwantyzacji, ale nie naprawi aliasingu spowodowanego zbyt rzadkim próbkowaniem.
Sygnał 5 Hz, próbkowanie 16 Hz: częstotliwość próbkowania przekracza 10 Hz.
Podstawa pojęciowa: MIT, próbkowanie i komunikacja cyfrowa.
Trzy różne znaczenia kodowania
| Operacja | Cel | Przykład |
|---|---|---|
| Kodowanie źródła | Reprezentacja informacji, czasem z kompresją. | PCM dla próbek, kodek dźwięku. |
| Kodowanie kanałowe | Nadmiarowość pozwalająca wykrywać lub korygować błędy. | Parzystość, kody Hamminga, LDPC. |
| Kodowanie liniowe i modulacja | Reprezentacja bitów lub symboli w fizycznym sygnale. | Manchester, PAM, PSK, QAM. |
Kod kanałowy o sprawności odwzorowuje bitów informacji na bitów kodowych. Dla tylko trzy czwarte przesyłanych bitów kodowych stanowi informację wejściową. Pozostała część nie jest „stratą bez powodu”: umożliwia poprawne działanie przy zakłóceniach. Szyfrowanie rozwiązuje inny problem, czyli ochronę poufności.
03 / Granice transmisjiNyquist i Shannon: ile informacji mieści się w kanale?
Symbol jest jednym wyborem z ustalonego alfabetu sygnałów. Jeśli alfabet zawiera jednakowo wykorzystywanych możliwości, a jest potęgą dwójki, jeden symbol może reprezentować bitów. Szybkość symbolową podajemy w bodach (symbolach/s). Surowa szybkość bitowa wynosi:
Dwa poziomy dają 1 bit/symbol, cztery 2 bity/symbol, a szesnaście 4 bity/symbol. Nie wynika z tego, że wystarczy zwiększać liczbę poziomów bez końca: przy tej samej mocy odległości pomiędzy nimi maleją i odbiornik coraz łatwiej myli sąsiednie symbole.
Granica Nyquista dla idealnego kanału dolnopasmowego
Dla rzeczywistego kanału dolnopasmowego o paśmie od 0 do Hz, idealnego kształtowania impulsów i braku ISI można przesyłać do niezależnych rzeczywistych symboli na sekundę. Dla alfabetu -poziomowego otrzymujemy:
Przy Hz i czterech poziomach granica wynosi 12 kb/s. To idealna granica dla podanego modelu, nie gwarancja dla przewodu z szumem. Dla filtru raised-cosine o współczynniku nadmiarowego pasma , od 0 do 1, wymagane pasmo dolnopasmowe wynosi . Łagodniejsze filtry kosztują pasmo.
Nie myl tego z twierdzeniem o próbkowaniu: tam pytaliśmy, jak często mierzyć sygnał, a tutaj, jak szybko nadawać niezależne symbole. Nie przenoś też automatycznie czynnika 2 na QAM: dla zespolonych symboli I/Q i szerokości pasma radiowego konwencja jest inna. W idealnym QAM pasmo radiowe jest w przybliżeniu równe szybkości symbolowej, a nie jej połowie.
Pojemność Shannona–Hartleya przy szumie
Niech oznacza średnią moc sygnału, a moc szumu w paśmie kanału. Dla kanału o szerokości Hz z addytywnym białym szumem gaussowskim (AWGN) pojemność wyrażona w bit/s wynosi:
Stosunek mocy we wzorze jest liniowy. W decybelach zapisujemy . Zatem 30 dB odpowiada , a nie 30. Przy 3000 Hz daje to około 29,9 kb/s.
Poniżej pojemności istnieją odpowiednio dobrane kody pozwalające w tym modelu dowolnie zmniejszać prawdopodobieństwo błędu przy rosnącej długości bloków. Twierdzenie nie obiecuje zerowego błędu, małego opóźnienia ani prostego dekodera w skończonym urządzeniu. Powyżej tej granicy nie uzyskamy dowolnie małego błędu przez samo dodanie „lepszego kodu”. Przy zwiększaniu pasma i stałej całkowitej mocy sygnału rośnie również moc szumu, więc nie wolno zakładać automatycznie stałego SNR.
Wyprowadzenie i warunki modeli: H. Pfister, A First Course in Digital Communications; D. Forney, Principles of Digital Communication II.
04 / Reprezentacja informacjiAmplituda, częstotliwość, faza i konstelacje
Najpierw impulsy: NRZ, Manchester i PAM
W kodzie NRZ przypisujemy bitom dwa poziomy i utrzymujemy dany poziom przez czas bitu. Długi ciąg takich samych bitów nie zawiera przejść potrzebnych do odzyskania zegara. Manchester wprowadza przejście w środku każdego bitu; kierunek przejścia oznacza wartość według uzgodnionej konwencji. Kosztuje to więcej zmian sygnału i większe pasmo niż prosta reprezentacja NRZ przy tej samej szybkości bitowej. Był używany m.in. w klasycznym Ethernecie 10 Mb/s.
Kodowanie blokowe, np. 4B/5B, dodaje kontrolowaną nadmiarowość, aby unikać niekorzystnych ciągów. Scrambling miesza wzorce bitów według znanej reguły i pomaga ograniczać długie powtarzalne przebiegi; nie jest szyfrowaniem. PAM4 używa czterech poziomów amplitudy i niesie 2 bity na symbol zamiast 1, lecz wymaga rozróżniania bliższych poziomów.
Modulacja nośnej
Na łączu radiowym informację przenosimy zwykle wokół częstotliwości nośnej. W kolejnych przedziałach symbolowych wybieramy jedną z dopuszczalnych amplitud, częstotliwości lub faz. Parametry symbolu nie są osobnymi dodatkowymi bitami: wspólnie określają jedną możliwość z alfabetu.
| Modulacja | Co się zmienia? | Intuicja dla dwóch symboli |
|---|---|---|
| ASK | Amplituda | Słabsza lub mocniejsza nośna. OOK to szczególny wariant „wyłączona / włączona”. |
| FSK | Częstotliwość | W danym czasie obserwujemy mniej albo więcej okresów. |
| BPSK | Faza | Dwie fazy oddalone o π, czyli o 180°. |
BPSK: bit 0 wybiera fazę 0, a bit 1 fazę π.
Dwie składowe I/Q
Dwie nośne o tej samej częstotliwości, przesunięte o ćwierć okresu, można rozróżniać w odbiorniku. Oznaczmy ich współczynniki przez i w symbolu numer . W jednym przedziale symbolowym, przed uwzględnieniem kształtowania impulsów, otrzymujemy:
jest częstotliwością nośnej. Punkt ma odległość od środka równą amplitudzie i kąt równy fazie. Konstelacja nie przedstawia położenia anten ani toru ruchu fali. Jest mapą możliwych wartości symbolu. W PSK punkty leżą na okręgu; w prostokątnym QAM zmieniają się oba współczynniki I/Q, a więc zwykle i amplituda, i faza.
QPSK ma cztery stany fazy, czyli 2 bity/symbol. Kwadratowe 16-QAM daje 16 punktów i 4 bity/symbol, 64-QAM daje 6, 256-QAM daje 8, 1024-QAM daje 10, a 4096-QAM daje 12. W typowym mapowaniu Graya najbliżsi sąsiedzi różnią się jednym bitem. Zmniejsza to liczbę błędnych bitów przy pomyleniu sąsiada, ale samo nie koryguje błędu.
16-QAM: 4 bity/symbol. Przy braku zakłócenia symbol odebrany jest zgodny z nadanym.
OFDM: wiele wolniejszych podnośnych
Zamiast nadawać symbole bardzo szybko na jednej nośnej, dzielimy strumień pomiędzy wiele podnośnych. Każda może nieść symbol QAM lub PSK. W OFDM odstęp podnośnych wynosi , gdzie jest użytecznym czasem symbolu OFDM. Ich widma nakładają się, lecz przy prawidłowej synchronizacji podnośne są ortogonalne w oknie odbioru. Szybka transformata Fouriera (FFT) rozdziela je na współczynniki I/Q.
Prefiks cykliczny kopiuje końcówkę symbolu na jego początek. Gdy jest odpowiednio długi względem rozrzutu opóźnień kanału, ogranicza zakłócanie kolejnego symbolu przez odbicia i ułatwia korekcję kanału. Sam nie przenosi nowej informacji. Podnośne pilotowe przenoszą symbole znane odbiornikowi. Pomagają oszacować wpływ kanału na sygnał i utrzymać synchronizację, a pasma ochronne ograniczają emisję poza kanałem. Dlatego iloczyn liczby podnośnych i bitów QAM nie jest jeszcze szybkością danych aplikacji.
Modele modulacji i detekcji: MIT, Principles of Digital Communication I.
05 / Media transmisyjneMiedź, radio i światłowód
Technologia łącza łączy nadajnik, medium i odbiornik. Ten sam kabel ze złączem pasującym mechanicznie nie zapewnia dowolnej szybkości: istotne są tłumienie, zakłócenia, pasmo, długość, jakość zakończeń i zgodność interfejsów.
| Medium | Jak niesie sygnał? | Co trzeba uwzględnić? |
|---|---|---|
| Skrętka | Różnicowy sygnał elektryczny na parze przewodów. | Tłumienie, przesłuchy, odbicia i kategoria okablowania. Skręcenie par ogranicza zakłócenia wspólne. Typowy kanał 1000BASE-T ma do 100 m, lecz nie jest to limit wszystkich wariantów Ethernetu. |
| Radio | Fala elektromagnetyczna między antenami. | Wspólne widmo, ściany, odbicia, zakłócenia i regulacje. Większa moc nie zastąpi planowania kanałów ani zgodnego odbiornika. |
| Światłowód | Modulowane światło prowadzone w rdzeniu. | Tłumienie, dyspersja, spawy, złącza, typ włókna, długość fali i budżet mocy. Brak zakłóceń elektrycznych nie oznacza braku błędów. |
Jak włókno prowadzi światło?
Rdzeń ma inny współczynnik załamania niż otaczający płaszcz. Włókno jest falowodem; dla intuicji można wyobrażać sobie światło utrzymywane w rdzeniu przez całkowite wewnętrzne odbicie. Włókno wielomodowe dopuszcza wiele modów, czyli sposobów rozchodzenia się światła we włóknie. Docierają one z różnymi opóźnieniami, poszerzając impuls. Włókno jednomodowe usuwa tę odmianę dyspersji, ale nadal występują m.in. dyspersja chromatyczna i efekty polaryzacyjne.
Oznaczenia OM dotyczą rodzin włókien wielomodowych, a OS jednomodowych. Często spotykamy długości fali około 850 nm w krótkich łączach wielomodowych oraz 1310 lub 1550 nm w łączach jednomodowych. Nie dobieramy jednak modułu wyłącznie po długości fali: liczą się konkretny standard, typ włókna i parametry obu końców.
IM/DD: pomiar mocy światła
W transmisji z modulacją intensywności i detekcją bezpośrednią (IM/DD) nadajnik zmienia moc optyczną. Fotodioda zamienia odebraną moc na prąd, układ elektryczny odzyskuje takt i rozpoznaje poziomy. OOK używa dwóch poziomów, a PAM4 czterech. Przy 25 GBd PAM4 niesie 50 Gb/s surowych bitów na jednej takiej ścieżce, przed uwzględnieniem nadmiarowych bitów do korekcji błędów (FEC) i pozostałego kodowania.
Nie próbkujemy optycznej nośnej zwykłym przetwornikiem analogowo-cyfrowym (ADC). Jej częstotliwość jest znacznie wyższa od szybkości symboli. W torze bezpośrednim elektronika widzi przebieg odpowiadający mocy po detekcji. Próbkowanie elektrycznego sygnału i decyzja o symbolu następują na tej reprezentacji, nie na pojedynczych oscylacjach światła.
- Laser / modulatorbity → poziomy światła
- Włóknotłumienie i poszerzanie impulsów
- Fotodiodamoc światła → prąd
- Odbiorniktakt, decyzja i FEC
Transmisja koherentna i WDM
Odbiornik koherentny miesza sygnał z lokalnym laserem. Dzięki detekcji składowych I/Q może odzyskać nie tylko amplitudę, lecz także fazę. W odpowiednich systemach wykorzystuje również dwie polaryzacje. Przetworniki ADC próbkują powstałe sygnały elektryczne, a cyfrowe przetwarzanie kompensuje m.in. dyspersję. QPSK i QAM z poprzedniego rozdziału mają więc zastosowanie także w optyce.
WDM przesyła równocześnie wiele kanałów o różnych długościach fali. Multiplekser łączy je we włóknie, a demultiplekser rozdziela u odbiorcy. To osobny wymiar równoległości: wyższy rząd QAM zwiększa liczbę bitów symbolu, polaryzacje dają kolejne składowe, a WDM kolejne kanały optyczne. W praktyce ograniczają nas moc, szum wzmacniaczy, dyspersja i nieliniowość włókna. Wzmacniacz optyczny wzmacnia również szum; regenerator optyczno-elektryczno-optyczny (O/E/O) odbiera sygnał optyczny, odtwarza go elektrycznie i ponownie nadaje światło.
Koherentna modulacja, polaryzacje i dyspersja: Cisco, Understand Coherent Optical Modulation.
Budżet optyczny: przykład obliczeniowy
Załóżmy moc nadajnika 0 dBm, tłumienie włókna 0,35 dB/km na trasie 10 km i łącznie 2 dB strat na połączeniach. Strata to 5,5 dB, a moc odbierana wynosi −5,5 dBm. Przy czułości −10 dBm pozostaje 4,5 dB marginesu. Są to założenia przykładu, nie dane dowolnego modułu. Dodatni margines mocy nie wystarcza, jeśli przekroczono limit dyspersji lub maksymalną moc wejściową odbiornika.
dBm odnosi moc do 1 mW, natomiast dB opisuje stosunek mocy. Dlatego od wartości w dBm odejmujemy straty w dB. Nie odejmujemy od siebie „watów tłumienia”. Na łączu trzeba uwzględnić zapas na starzenie i naprawy. Nie patrzymy w złącze ani końcówkę włókna: promieniowanie może być niewidoczne.
06 / Parametry sieciPrzepustowość nie jest opóźnieniem
Przepustowość łącza wyrażamy w bitach na sekundę. Natężenie ruchu można wyrazić w pakietach na sekundę, ale do porównania tych wielkości potrzebna jest długość pakietu. Dla średniej długości bitów i natężenia pakietów/s oferowany ruch wynosi bitów/s. Szybkość użyteczna (ang. goodput) to szybkość dostarczania użytecznych danych aplikacji, bez narzutu i retransmisji.
| Składnik | Co go powoduje? | Przykład |
|---|---|---|
| Serializacja | Wprowadzenie wszystkich bitów do łącza: . | 1500 B przy 100 Mb/s: 120 µs, bez dodatkowego narzutu. |
| Propagacja | Przemieszczanie się sygnału: . | 200 km przy 200 000 km/s: 1 ms. |
| Kolejkowanie | Oczekiwanie na obsługę przed zajętym łączem. | Zależy od chwilowego obciążenia i rozmiaru bufora. |
| Przetwarzanie | Odczyt nagłówka, wybór wyjścia, obsługa urządzenia. | Zależy od sprzętu i realizowanych funkcji. |
W tabeli jest długością transmitowanej jednostki w bitach, szybkością łącza, odległością, a prędkością propagacji sygnału. Opóźnienia kolejnych etapów sumują się. Pomiar RTT obejmuje drogę tam i z powrotem oraz obsługę odpowiedzi; nie jest bezpośrednim pomiarem opóźnienia jednokierunkowego.
Komutacja pakietów i przeciążenie
Pakiety różnych nadawców współdzielą łącza. Nie rezerwujemy na stałe całej drogi, jak w klasycznej komutacji kanałów. Daje to elastyczność, lecz pakiet może czekać w kolejce, zostać odrzucony albo dotrzeć inną drogą niż poprzedni. Komutacja komórek, np. historyczny ATM, stosuje jednostki stałej długości.
Gdy napływ danych stale przekracza możliwości obsługi, nie istnieje stabilna kolejka o skończonym średnim czasie oczekiwania. Duży bufor może odsunąć utratę pakietów, ale zwiększyć opóźnienie. Nie należy więc utożsamiać „braku strat” z „dobrą jakością”.
W liście 2 badamy uproszczony model kolejkowy. Jego wynik jest własnością przyjętego modelu, a nie dokładnym czasem działania rzeczywistego routera.
Dlaczego opóźnienie gwałtownie rośnie blisko nasycenia?
W prostym modelu kolejki M/M/1 zakładamy napływ Poissona o intensywności pakietów/s, niezależne wykładnicze czasy obsługi ze średnią s, jednego obsługującego i nieograniczony bufor. Dla średni czas w systemie, łącznie z obsługą, wynosi .
Przy obsłudze 1000 pakietów/s i napływie 500 pakietów/s otrzymujemy 2 ms. Przy 900 pakietach/s jest to 10 ms, a przy 990 już 100 ms. Rzeczywista kolejka ma skończony bufor, pakiety nie muszą mieć wykładniczej długości, a ruch bywa seryjny. Model tłumaczy kierunek zjawiska, ale jego liczb nie traktujemy jak gwarantowanego wyniku routera. Przy napływie nie mniejszym niż obsługa model nie ma stabilnej średniej.
07 / Organizacja komunikacjiWarstwy i enkapsulacja
Model OSI rozdziela warstwy: fizyczną, łącza danych, sieciową, transportową, sesji, prezentacji i aplikacji. To model pojęciowy. W stosie internetowym funkcje trzech najwyższych warstw zwykle omawiamy razem jako warstwę aplikacji. TLS nie należy automatycznie przypisywać do jednej warstwy OSI bez określenia stosu i kontekstu.
Enkapsulacja polega na umieszczeniu danych jednej warstwy w jednostce warstwy niższej. HTTP jest interpretowany przez aplikacje; TCP przez końcowe stosy transportowe; nagłówek IP przez hosty i routery; ramka Ethernet przez urządzenia na danym łączu.
Aplikacja przygotowuje bajty żądania. W tym modelu przedstawiamy nieszyfrowany HTTP/1.1.
Po przejściu przez router stara ramka kończy swój zasięg. Powstaje nowa ramka dla następnego łącza, z nowymi adresami MAC. Adresy IP zwykle pozostają adresami końców komunikacji, ale zmniejsza się TTL lub Hop Limit. NAT i tunele są ważnymi wyjątkami od tego uproszczenia.
MTU, segmentacja i fragmentacja
MTU ogranicza rozmiar pakietu IP mieszczącego się na danym łączu. Dla typowego Ethernetu jest to 1500 B, ale nie jest to stała całego Internetu. TCP dzieli strumień na segmenty; MSS dotyczy danych TCP, bez nagłówków TCP i IP. Przy IPv4 bez opcji wartość 1460 B odpowiada MTU 1500 B i dwóm nagłówkom po 20 B.
W IPv4 fragmentacji może dokonać nadawca lub router, o ile pozwala na to flaga DF. W IPv6 router nie fragmentuje: nadawca musi dostosować rozmiar, korzystając m.in. z komunikatu ICMPv6 Packet Too Big. Fragmentacja nie jest tym samym co segmentacja TCP. Specyfikacja IPv6: RFC 8200.
08 / Warstwa łączaEthernet, adres MAC i kontrola błędów
Na kablu przesyłamy sygnał, a nie abstrakcyjne zera i jedynki. Warstwa fizyczna określa kodowanie, parametry elektryczne lub optyczne i synchronizację. Dobór skrętki, światłowodu, modułów i długości łącza zależy od wybranego standardu, a nie tylko od kształtu złącza.
Przełącznik uczy się, na którym porcie widział źródłowy MAC. Znany docelowy MAC pozwala wybrać port wyjściowy. Ramki rozgłoszeniowe (broadcast) są przeznaczone dla wszystkich urządzeń w danej sieci lokalnej. Ramki do jednego odbiorcy (unicast) też mogą zostać rozesłane na inne porty, jeśli przełącznik nie zna jeszcze portu docelowego. Rozsyłanie ogranicza się do danej sieci wirtualnej, czyli VLAN-u. To nie oznacza, że każdy host stale otrzymuje cały ruch pozostałych hostów.
6 BMAC źródła
6 BEtherType
2 BDane i dopełnienie
46–1500 BFCS
4 B
Tryb promiscuous zmienia filtrowanie ramek dostarczonych karcie. Nie zmusza przełącznika do dostarczania ramek z cudzych portów. Do obserwacji takiego ruchu potrzebny jest np. port mirror/SPAN, TAP lub odpowiednio skonfigurowany przełącznik wirtualny.
Skąd odbiornik wie, gdzie zaczyna się ramka?
Rozdzielmy dwa zadania: PHY odtwarza symbole i sygnalizuje transmisję, a MAC interpretuje ramkę. PHY to fizyczny nadajnik–odbiornik karty. MAC to część obsługująca m.in. adresy i FCS. Na ich styku, np. MII, oprócz danych są sygnały sterujące: RX_DV informuje o ważnych danych odbiorczych. Program nie musi szukać granic ramki w nieprzerwanym strumieniu bajtów.
- Synchronizacja. Standardowy nadajnik MAC poprzedza ramkę siedmioma bajtami preambuły
0x55. Powtarzalny przebieg pomaga ustalić rytm odbioru. Nie jest to jeszcze adres ani wiadomość użytkownika. - Początek właściwej ramki. Następny bajt to SFD (Start Frame Delimiter),
0xD5. Po nim zaczyna się docelowy MAC. Przy szeregowym odczycie od najmniej znaczącego bitu0x55daje10101010, a SFD10101011: końcowe dwa bity przerywają powtarzalny wzór. - Odczyt w ustalonym stanie. Po SFD odbiornik interpretuje kolejne pola. Bajt
0xD5wewnątrz danych jest zwykłą daną, nie początkiem następnej ramki. Znaczenie wzorca zależy od miejsca i stanu odbiornika.
Pola na poziomie MAC: AMD, 10G Ethernet MAC PG072, rozdział 3: Preamble i Start of Frame Delimiter. Poniżej odróżniamy ten format logiczny od kodowania na przewodzie.
Trzy konkretne łącza: ta sama ramka, inne sygnały
10BASE-T: Manchester i koniec impulsów transmisji
- Początek: układ wejściowy rozpoznaje prawidłową aktywność elektryczną; odbiornik odzyskuje zegar z przebiegu Manchester i preambuły, a SFD ustala granicę bajtów ramki.
- Koniec: po FCS nadajnik wytwarza zakończenie transmisji, po czym linia przechodzi w stan bezczynności. PHY rozpoznaje koniec przebiegu danych, a nie „specjalną wartość CRC”. Przykładowo TI DP83848 ma określone czasy końcowego poziomu sygnału i detektor końca pakietu oparty na zaniku wymaganych przejść.
- Między transmisjami: nie płynie ciągły strumień danych Manchester. Mogą jednak występować impulsy kontrolujące stan łącza. Bezczynność nie oznacza odłączonego kabla.
100BASE-TX: znaczniki /J/K/ i /T/R/ zamiast oczekiwania na ciszę
- Kodowanie: 4 bity są mapowane na 5-bitową grupę kodową (4B/5B). Część grup jest zarezerwowana do sterowania. Strumień podlega też scramblingowi i kodowaniu MLT-3 na skrętce.
- Początek: para
/J/K/, czyli SSD (Start-of-Stream Delimiter), zastępuje pierwszy bajt preambuły. Odbiornik rozpoznaje granice grup, odtwarza preambułę i przekazuje dane do MAC. SFD nadal poprzedza adres docelowy. - Koniec: po zakodowanym FCS przychodzi para
/T/R/, czyli ESD (End-of-Stream Delimiter). Są to symbole sterujące, nie litery T i R wysłane jako treść. - Między transmisjami: nadawane są grupy
/I/(IDLE). Po scramblingu na oscyloskopie nadal widać aktywność. Odbiornik odróżnia brak ramki od braku sygnału.
Implementacja odbiornika i znaczniki: TI DP83848, § 6.4.1 i 6.5.1. Kodowanie toru 100BASE-TX: Microchip KSZ9567R, § 4.1.2.
1000BASE-T: cztery pary, ciągła synchronizacja i znaczniki strumienia
- Sygnał: symbole 4D-PAM5 są przesyłane na czterech parach skrętki. Odbiornik uwzględnia m.in. echo, przesłuchy i różnice opóźnień par. Nie odczytuje po prostu jednego bitu z jednego poziomu napięcia.
- Granice: podwarstwa kodowania PCS (Physical Coding Sublayer) rozróżnia dane, IDLE oraz sekwencje SSD/ESD. Znaczniki należą do kodowania 1000BASE-T; nie są parami /J/K/ i /T/R/ skopiowanymi z 100BASE-TX.
- Przerwa: w zwykłym aktywnym trybie łącza nadal są przesyłane symbole podtrzymujące synchronizację. Energy Efficient Ethernet (EEE) definiuje tryb Low Power Idle (LPI) z osobnymi zasadami usypiania i wybudzania; nie należy utożsamiać go ze zwykłym odstępem między ramkami.
Tor gigabitowy: Microchip KSZ9567R, § 4.1.1. Znaczniki 1000BASE-T definiuje IEEE 802.3, § 40.3.2, tabela 40-1; wskazuje je również materiał grupy IEEE 802.3bp, slajd 8 (oddzielnie od przedstawianej tam propozycji 1000BASE-T1).
IFG: przerwa między ramkami, nie znacznik ich końca
IFG/IPG (interframe/interpacket gap) jest odstępem przed następną transmisją. Dla omawianych szybkości MAC minimalny odstęp nadawczy odpowiada 96 czasom bitu, czyli czasowi 12 bajtów. To czas, a nie dwanaście bajtów zer wysłanych do odbiorcy.
| Szybkość MAC [Mb/s] | Czas jednego bitu [ns] | 96 czasów bitu [µs] |
|---|---|---|
| 10 | 100 | 9,6 |
| 100 | 10 | 0,96 |
| 1000 | 1 | 0,096 |
- Najpierw koniec, potem odstęp: PHY sygnalizuje zakończenie danych. Nie czeka na „96 zer”, żeby dopiero wtedy zgadnąć, czy ramka się skończyła.
- FCS sprawdza poprawność: końcowe 4 bajty ramki zawierają CRC-32, nie stałą sekwencję kończącą. Pole EtherType, np.
0x0800dla IPv4, określa protokół, nie długość ramki. - Pomiar zależy od miejsca: 96 czasów bitu opisuje wymaganie nadawcze MAC. Nie jest uniwersalnym progiem, poniżej którego każdy odbiornik odrzuca ramkę; po drodze odstęp może ulec zmianie.
Odstęp i rozróżnienie nadawania od odbioru: IEEE 802.3, interpretacja 1-11/09, odpowiedzi na s. 5–6. Format i Length/Type: Intel, Triple-Speed Ethernet IP User Guide, dodatek A.
Sprawdź rozumienie: czy 0xD5 w pliku dzieli ramkę?
Nie. W treści ramki to zwykły bajt. Odbiornik szuka SFD podczas rozpoznawania początku, nie w każdym miejscu danych. Podobnie zerowe bajty pliku nie tworzą IFG: PHY koduje je jako dane, nie jako stan IDLE. FCS służy do sprawdzenia odebranej ramki, nie do wyszukania jej granic.
Dostęp do medium: półdupleks i pełny dupleks
W klasycznym półdupleksowym Ethernecie na magistrali lub hubie CSMA/CD wykrywało kolizję i wymuszało losowe ponowienie z rosnącym zakresem oczekiwania. Wymiar minimalnej ramki wiązał się z wykryciem kolizji, zanim nadawca skończy nadawać. Na współczesnym połączeniu host–switch w pełnym dupleksie nie rywalizujemy w ten sposób: CSMA/CD nie jest aktywnym mechanizmem zwykłego łącza full-duplex.
CRC: reszta z dzielenia, nie podpis kryptograficzny
Traktujemy bity jako współczynniki wielomianu nad ciałem dwuelementowym. Dodawanie i odejmowanie są operacją XOR, bez przeniesień. Nadajnik dopisuje miejsce na resztę i dzieli przez ustalony wielomian generatora. Odbiorca sprawdza zgodność według tych samych parametrów.
Przykład dydaktyczny, nie CRC Ethernetu:
dane: 1101
generator: 1011 (stopień 3)
dane z trzema zerami: 1101000
reszta dzielenia XOR: 001
słowo do przesłania: 1101001
Podzielenie 1101001 przez 1011 daje resztę zerową. Po zmianie pojedynczego bitu wynik przestaje się zgadzać. Rzeczywisty Ethernet używa CRC-32 z dokładnie określonym wielomianem, inicjalizacją i konwencjami kolejności bitów. Nie wystarczy więc wkleić tego miniaturowego przykładu do implementacji FCS.
Kod o wielomianie generatora stopnia i niezerowym wyrazie stałym wykrywa wszystkie niezerowe błędy seryjne o długości do bitów. Dla dłuższych wzorców nie ma uniwersalnej gwarancji wykrycia. Celowy napastnik może zmienić dane i ponownie obliczyć CRC, dlatego integralność kryptograficzna wymaga np. MAC lub podpisu, nie FCS.
VLAN i pętle przełączania
VLAN wydziela logiczną domenę warstwy łącza. Port dostępowy obsługuje zwykle ruch jednego VLAN-u, a łącze trunk przenosi oznaczony ruch kilku VLAN-ów. Komunikacja IP między VLAN-ami wymaga funkcji routingu. Pętla przełączników może powodować wielokrotne krążenie rozgłoszeń, ponieważ ramka Ethernet nie ma odpowiednika IP TTL. STP/RSTP tworzy aktywną topologię bez pętli, a agregacja łączy wymaga obsługi przez oba końce.
IEEE 802.3 definiuje Ethernet, a IEEE 802.1Q mosty i VLAN-y.
09 / Sieć bezprzewodowaWi-Fi: od wspólnego kanału do wielu równoległych transmisji
Wi-Fi realizuje lokalną komunikację radiową na podstawie rodziny IEEE 802.11. Punkt dostępowy (AP) łączy stacje z siecią dystrybucyjną, często Ethernetem. Nie musi być routerem, serwerem DHCP ani urządzeniem NAT, choć domowe urządzenie zwykle łączy wszystkie te funkcje.
Najpierw wykryj transmisję, potem odczytaj ramkę
Radio odbiera próbki sygnału w wybranym kanale. Wzrost energii może oznaczać Wi-Fi, ale także zakłócenie. Wykrycie zajętego kanału nie jest jeszcze rozpoznaniem poprawnej ramki. Do synchronizacji służą znane sekwencje preambuły. Odbiornik porównuje fragmenty próbek, np. bada ich korelację, zamiast szukać napisu „Wi-Fi” w odczytanych bajtach.
- PPDU (Physical Layer Protocol Data Unit) to cała jednostka nadawana przez PHY: preambuła, pola sygnalizacyjne i część danych, jeśli występuje.
- PSDU (PHY Service Data Unit) to bajty przekazane do PHY przez MAC. W klasycznej transmisji zawierają jedną ramkę MAC, a przy agregacji mogą zawierać wiele ramek.
- MPDU (MAC Protocol Data Unit) to pojedyncza ramka MAC z nagłówkiem i FCS. Jej granica nie musi oznaczać końca całej transmisji radiowej.
- Format a adresat: rozpoznanie PHY mówi, jak odczytać transmisję, nie dla kogo ją wysłano. Nagłówek MAC zawiera adresy, na podstawie których karta filtruje ramki. Do odszyfrowania chronionej treści potrzebne są jeszcze właściwe klucze; samo wykrycie preambuły ich nie wymaga.
Przykład detektora próbek OFDM: MathWorks, wlanPacketDetect. Poziomy enkapsulacji: 802.11ac Waveform Generation with MAC Frames.
802.11b: SYNC, SFD i nagłówek PLCP
W historycznie popularnym 802.11b warstwa fizyczna używa DSSS/CCK. PLCP (Physical Layer Convergence Procedure) dodaje przed danymi informacje potrzebne do ich odbioru.
- SYNC: znany, poddany scramblingowi ciąg pozwala ustabilizować odbiór i synchronizację. Długa preambuła zawiera 128 bitów SYNC, krótka 56.
- SFD: kolejne 16 bitów wyznacza koniec preambuły i początek nagłówka PLCP. To inny znacznik granicy niż jednobajtowy SFD Ethernetu.
- Nagłówek: pola SIGNAL (8 bitów), SERVICE (8), LENGTH (16) i CRC (16) zajmują razem 48 bitów. SIGNAL wskazuje szybkość danych, a LENGTH określa czas ich nadawania w mikrosekundach, nie wprost liczbę bajtów. Reguły SERVICE uzupełniają interpretację długości, m.in. przy 11 Mb/s.
- Koniec: po sprawdzeniu nagłówka odbiornik zna tryb i oczekiwany czas części danych. Odtwarza ramkę i sprawdza jej FCS. Sam zanik energii nie zastępuje tych informacji.
Długi wariant: 144 µs preambuły + 48 µs nagłówka = 192 µs przed danymi. Krótki wariant: 72 µs preambuły + 24 µs nagłówka = 96 µs; nagłówek jest wtedy nadawany z szybkością 2 Mb/s, nie 1 Mb/s.
Keysight, DSSS Frame Structure; czasy i interpretacja LENGTH: About Result Length.
802.11a/g: rozpoznanie OFDM krok po kroku
Rozważmy klasyczne OFDM w kanale 20 MHz. Odbiornik nie zna jeszcze szybkości danych, dlatego początek ma z góry ustaloną, odporną postać. STF oznacza Short Training Field, LTF Long Training Field, a SIG pole sygnalizacyjne. Prefiks L- (legacy) wskazuje pola odziedziczone ze starszego formatu OFDM.
- L-STF, 8 µs: krótkie powtarzalne sekwencje pomagają wykryć pakiet, ustawić wzmocnienie AGC i wstępnie skorygować różnicę częstotliwości nadajnika i odbiornika.
- L-LTF, 8 µs: znane symbole pozwalają oszacować wpływ kanału na podnośne i dokładniej ustalić synchronizację. Odbiornik potrzebuje tego, aby rozróżniać późniejsze punkty konstelacji.
- L-SIG, 4 µs: nagłówek używa BPSK i kodowania o sprawności 1/2. Zawiera m.in. RATE, 12-bitowe LENGTH w bajtach PSDU oraz bit parzystości. Odbiornik najpierw czyta ten prostszy nagłówek, a potem przełącza demodulację danych zgodnie z RATE.
- DATA: z długości i szybkości wynika liczba symboli do odebrania. W środku są bity SERVICE, PSDU, bity kończące kodowanie i dopełnienie. Nie ma ethernetowego SFD
0xD5ani /T/R/.
Pola i ich funkcje: MathWorks, Non-HT PPDU Structure; przebiegi i czasy: Keysight, IEEE 802.11 Wireless LAN PHY Layer Operation and Measurement.
Przykład: skąd wiadomo, ile symboli zostało?
Dla 802.11a przy 6 Mb/s jeden symbol DATA przenosi 24 bity przed kodowaniem kanałowym i trwa 4 µs. Niech oznacza długość PSDU w bajtach, a liczbę symboli DATA. Uwzględniamy 16 bitów SERVICE, bitów PSDU i 6 bitów kończących kod splotowy:
We wzorze zaokrąglamy wynik w górę, aby uzyskać całkowitą liczbę symboli. Dla otrzymujemy 822 bity, czyli 35 symboli i 18 bitów dopełnienia. Czas PPDU wynosi 20 + 35 · 4 = 160 µs. Te 100 B obejmuje całą ramkę MAC, w tym FCS, nie 100 B samej aplikacji. Wynik nie obejmuje dostępu do kanału ani ACK. Dla ERP-OFDM w 802.11g dochodzi jeszcze 6 µs rozszerzenia sygnału; przykładu 802.11a nie należy bez zmiany przenosić na każdy PHY.
Zależności długości i czasu: MathWorks, Packet Size and Duration Dependencies; bezpośrednia implementacja wzoru i rozszerzenia 6 µs: ns-3, OfdmPhy::GetPayloadDuration i GetSignalExtension. Obliczenie powyżej dotyczy podanych parametrów, nie pomiaru konkretnego urządzenia.
Wi-Fi 4–7: jak rozpoznać nowy format?
Nowe generacje nie wymagają zgadywania modulacji danych. Dodają pola sygnalizacyjne i sekwencje treningowe. Poniższe przykłady dotyczą formatów HT-mixed, VHT, HE i EHT, nie każdej odmiany całej rodziny 802.11.
- 802.11n, HT-mixed: po początku legacy występuje HT-SIG, m.in. z MCS i długością. Dalej HT-STF i HT-LTF przygotowują odbiór danych MIMO. Struktura HT.
- 802.11ac, VHT: pola VHT-SIG-A/B przekazują parametry formatu i danych, a VHT-LTF pozwala oszacować kanały przestrzenne. Odbiornik nie traktuje legacy L-SIG jako kompletnego opisu danych VHT. Struktura VHT.
- 802.11ax, HE: po L-SIG pojawia się jego powtórzenie RL-SIG, następnie HE-SIG-A. W HE MU występuje także HE-SIG-B z informacją o przydziałach użytkowników. HE-STF/LTF przygotowują odbiór właściwej części danych; jej koniec może poprzedzać pole PE (Packet Extension). Struktura HE.
- 802.11be, EHT: po RL-SIG jest U-SIG, zawierające m.in. identyfikator wersji PHY i szerokość kanału. W EHT MU dalsze parametry niesie EHT-SIG. Odbiornik sprawdza sygnalizację, zanim użyje odpowiedniego przydziału podnośnych i strumieni. Struktura EHT.
Zgodność nie oznacza pełnego odczytu. Starsze radio w obsługiwanym paśmie może rozpoznać początek legacy i czas zajęcia medium, ale nie potrafić odczytać nowszego formatu danych. W HE/EHT samo powtórzenie L-SIG nie wystarcza do rozpoznania generacji: znaczenie mają też wartości pól, modulacja sygnalizacji oraz jej kontrole poprawności. Przykładowa procedura rozpoznawania formatu.
Kilka ramek w jednej transmisji: A-MPDU
W A-MPDU odbiornik rozpoznaje dwa poziomy granic: koniec PPDU z parametrów PHY oraz granice MPDU wewnątrz odebranych danych.
- Znacznik granicy (delimiter): każdą MPDU poprzedza 4-bajtowy znacznik z informacją o jej długości, kontrolą CRC delimitera i wzorcem rozpoznawczym.
- Ramka i wyrównanie: długość wskazuje, ile bajtów MPDU odczytać. Dalej odbiornik uwzględnia dopełnienie do granicy 4 bajtów przed następną podramką; szczegóły końcowego dopełnienia zależą od formatu.
- Osobne kontrole: każda MPDU ma własny FCS. CRC delimitera nie zastępuje FCS ramki. Między MPDU tego samego agregatu nie ma radiowego SIFS ani nowej preambuły.
Przykład budowania i rozdzielania agregatów: MathWorks, Generate and Parse WLAN MAC Frames. Układ delimiterów: GPLM: An 802.11ac-Capable Low-MAC Architecture for FPGA-based SDR Systems, IEEE WCNC 2019, § II.
SIFS, DIFS i NAV: kto może nadawać dalej?
- SIFS: krótki odstęp przed natychmiastową odpowiedzią, np. ACK dla poprawnie odebranej ramki unicast wymagającej potwierdzenia. W 802.11a wynosi 16 µs. ACK to nowa transmisja PHY, nie znacznik końca danych.
- DIFS i backoff: w klasycznym DCF 802.11a DIFS wynosi 34 µs: SIFS i dwie szczeliny po 9 µs. Dostęp rywalizacyjny uwzględnia też losowe odliczanie przed nadawaniem (backoff). QoS/EDCA korzysta z AIFS zależnego od kategorii ruchu, więc nie sprowadzamy całego Wi-Fi do jednej stałej przerwy.
- NAV: wirtualny licznik zajęcia medium, ustawiany na podstawie informacji o rezerwacji czasu w ramkach MAC. Pole Duration/ID nie jest długością PSDU i nie zastępuje nagłówka PHY. Może rezerwować również czas dalszej wymiany.
- Zajęty kanał bez ramki: Mechanizm oceny zajętości kanału (CCA) może wykryć energię zakłócenia, którego nie da się zdekodować. Brak poprawnego nagłówka, przedwczesne urwanie sygnału lub zły FCS oznaczają nieudaną próbę odbioru, a nie krótszą poprawną wiadomość.
Dostęp fizyczny i wirtualny oraz czasy IFS: RFC 8325, § 6.
Sprawdź rozumienie: dlaczego Wireshark nie pokazuje całej preambuły?
Typowy zapis Ethernet zaczyna się od adresów MAC; karta usuwa preambułę i SFD, często także FCS. W trybie monitor Wi-Fi otrzymujesz ramki 802.11 i ewentualnie metadane radiotap, nie surowy przebieg radiowy. Parametry PHY w radiotap są informacją od sterownika, nie kopią wszystkich symboli preambuły. Do obserwacji ich przebiegu potrzebny jest odpowiedni odbiornik SDR lub analizator sygnału. Wireshark: przechwytywanie WLAN; format radiotap.
Jak stacja uzyskuje dostęp?
SSID to nazwa sieci prezentowana użytkownikowi. BSSID identyfikuje konkretny podstawowy zestaw usług (BSS), zwykle związany z radiem AP. Kilka AP może prezentować ten sam SSID, a telefon przechodzić między nimi. Samo wskazanie SSID nie dowodzi autentyczności sieci.
Stacja najpierw wykrywa sieć, korzystając z ramek zarządzających. Następnie następuje uwierzytelnienie i asocjacja oraz, w sieci chronionej, właściwy dla jej trybu proces ustanawiania kluczy. Dopiero po uzyskaniu dostępu do łącza host konfiguruje IP, np. przez DHCP. Można więc mieć połączenie Wi-Fi bez działającego adresu IP albo bez dostępu do Internetu.
CSMA/CA i problem ukrytej stacji
Współdzielone radio nie działa jak pełnodupleksowy przewód do przełącznika. W typowym dostępie rywalizacyjnym stacja nasłuchuje, czeka wymagany odstęp i odlicza losowy backoff w wolnych szczelinach. Gdy ktoś nadaje, odliczanie jest zatrzymywane. Brak oczekiwanego ACK może skutkować retransmisją. CSMA/CA ogranicza ryzyko kolizji, lecz ich nie wyklucza.
Dwie stacje mogą słyszeć AP, ale nie słyszeć siebie. Obie uznają wtedy kanał za wolny: to problem ukrytej stacji. RTS/CTS i wirtualna rezerwacja czasu przez NAV mogą pomóc, lecz kosztują dodatkowe ramki. Nie są włączane dla każdej transmisji i nie usuwają wszystkich interferencji. Promiscuous mode karty to nie to samo co tryb monitor pozwalający analizować surowe ramki 802.11.
Kolejne generacje i ich znaczenie
Rok w tabeli pochodzi z oznaczenia poprawki IEEE. Nie musi oznaczać daty jej publikacji, premiery urządzeń ani rozpoczęcia certyfikacji. Na przykład IEEE 802.11be-2024 zatwierdzono w 2024 r., a opublikowano 22 lipca 2025 r. Szybkości PHY to maksima określonych konfiguracji, nie szybkość pojedynczego telefonu ani obietnica pobierania z Internetu.
| Rodzina | Pasmo | Co wnosi? | Przykładowa szybkość PHY [Mb/s] |
|---|---|---|---|
| 802.11b (1999) | 2,4 GHz | DSSS/CCK; wczesne szeroko stosowane sieci bezprzewodowe. | 11 |
| 802.11a (1999), g (2003) | a: 5 GHz; g: 2,4 GHz | OFDM; 802.11g rozwija popularne pasmo 2,4 GHz. | 54 |
| Wi-Fi 4 / 802.11n (2009)¹ | 2,4 i 5 GHz | MIMO, kanały do 40 MHz, agregacja ramek, do 4 strumieni. | 600 |
| Wi-Fi 5 / 802.11ac (2013)² | 5 GHz | 80/160 MHz, 256-QAM, beamforming i MU-MIMO w dół łącza. | ok. 6930 |
| Wi-Fi 6 / 802.11ax (2021)³ | 2,4 i 5 GHz | OFDMA, 1024-QAM, MU-MIMO również w górę łącza, BSS coloring i TWT. | ok. 9610 |
| Wi-Fi 6E³ | Dodatkowo 6 GHz | Rozszerzenie dostępu 802.11ax do pasma 6 GHz, nie nowa modulacja względem Wi-Fi 6. | jak Wi-Fi 6 |
| Wi-Fi 7 / 802.11be (2024)⁴ | 2,4, 5 i 6 GHz | Do 320 MHz w 6 GHz, 4096-QAM, Multi-Link Operation i bardziej elastyczny przydział zasobów. | ok. 5760 |
¹ 40 MHz, 4 strumienie, krótki GI. ² 160 MHz, 8 strumieni, najwyższy MCS i krótki GI. ³ 160 MHz, 8 strumieni, najwyższy MCS i GI 0,8 µs. ⁴ Przykład dwustrumieniowy: 320 MHz, 4096-QAM, kod 5/6 i GI 0,8 µs; nie maksimum całego standardu. Porównując urządzenia, trzeba wyrównać te parametry. Kanały i dopuszczalne pasma zależą od kraju i sprzętu.
Historia poprawek: IEEE 802.11, przegląd standardów. Funkcje 802.11ax: Broadcom, IEEE 802.11ax. Wi-Fi 7: komunikat Wi-Fi Alliance.
Dlaczego nowe generacje są szybsze?
- Szerszy kanał: więcej podnośnych może pracować równolegle. Kanał 80 MHz zajmuje jednak więcej widma niż 20 MHz. W gęstej sieci szerokość maksymalna nie zawsze daje najlepszy wynik, bo pozostawia mniej niezależnych kanałów dla sąsiadów.
- Więcej bitów na symbol: przejście z 1024-QAM do 4096-QAM zmienia 10 bitów na 12, czyli o 20% przy pozostałych warunkach niezmienionych. Najgęstsza konstelacja wymaga dobrego SNR i jakości nadajnika. Przy słabszym sygnale urządzenia obniżają MCS, czyli zestaw modulacji i kodowania.
- MIMO: kilka anten i odpowiednio niezależnych dróg propagacji pozwala rozdzielać strumienie przestrzenne. Cztery anteny nie gwarantują czterech strumieni; ograniczają nas oba końce łącza i ranga kanału. Beamforming dobiera fazy i amplitudy anten, aby korzystnie kształtować pole, a nie fizycznie „obracać wiązkę jak przewód”.
- OFDMA i MU-MIMO: AP może obsługiwać kilka stacji w jednej wymianie. OFDMA przydziela im grupy podnośnych, nazywane jednostkami zasobów (ang. resource units, RU). MU-MIMO rozdziela użytkowników przestrzennie. Są to różne mechanizmy i mogą współdziałać.
- Mniej narzutu: agregacja A-MPDU łączy wiele jednostek w jedną transmisję radiową, a Block ACK potwierdza zbiorczo ich odbiór. Nie trzeba ponosić całego kosztu rywalizacji i preambuły osobno dla każdej małej porcji danych.
BSS coloring pozwala rozpoznawać transmisje sąsiednich BSS i ostrożniej współdzielić przestrzeń. Nie „usuwa” fizycznej interferencji. Target Wake Time uzgadnia okresy aktywności stacji, ograniczając zużycie energii i niepotrzebną rywalizację. MLO w Wi-Fi 7 pozwala wykorzystać więcej niż jedno łącze w obrębie urządzenia wielołączowego; jednoczesne nadawanie i odbiór na różnych łączach zależą od jego możliwości. To więcej niż zwykłe przełączenie klienta z 2,4 na 5 GHz.
Od MCS do rzeczywistej szybkości
Niech będzie liczbą podnośnych danych, liczbą bitów QAM na podnośną, sprawnością kodu, liczbą strumieni, a całkowitym czasem symbolu OFDM z odstępem ochronnym. Dla ustalonego trybu i pełnego przydziału kanału:
Przykład 802.11ax: kanał 80 MHz, 980 podnośnych danych, 1024-QAM (10 bitów), kod 5/6, dwa strumienie i symbol 13,6 µs dają około 1201 Mb/s PHY. Preambuły, rywalizacja, ACK, nagłówki, retransmisje i udział innych klientów zmniejszają szybkość dostarczania danych aplikacji. Łącze Ethernet 1 Gb/s, wolny serwer albo limit szybkości w usłudze operatora mogą ograniczyć wynik jeszcze wcześniej. Podawana przez producenta suma maksymalnych szybkości wszystkich pasm routera nie jest szybkością jednego połączenia z urządzeniem.
Wi-Fi 8: prace nad niezawodnością
Stan na 10 września 2026: IEEE P802.11bn (Ultra High Reliability), wiązany z nazwą Wi-Fi 8, jest nadal projektem. Główny kierunek to bardziej przewidywalna obsługa przy zakłóceniach i obciążeniu, m.in. przez koordynację AP. Nie przedstawiamy parametrów projektu jako gwarantowanych cech ukończonego standardu ani każdego przyszłego urządzenia. Stan prac grupy IEEE TGbn.
Ochrona dostępu i diagnoza
WEP jest historycznym, nieskutecznym zabezpieczeniem i nie powinien być używany. WPA2 z CCMP oraz WPA3 to nowsze rodziny zabezpieczeń. WPA3-Personal stosuje SAE do uwierzytelniania opartego na haśle; sieci uczelniane często korzystają z wariantu Enterprise, 802.1X/EAP i serwera uwierzytelniania. Weryfikacja certyfikatu serwera jest istotna: nie należy zatwierdzać dowolnego certyfikatu, aby „tylko uzyskać Internet”. Ochrona Wi-Fi kończy się na odpowiednim końcu łącza, dlatego nadal potrzebujemy HTTPS i innych zabezpieczeń aplikacyjnych.
Przy słabym działaniu sprawdzamy kolejno pasmo i szerokość kanału, siłę sygnału oraz szum, uzgodniony MCS i liczbę strumieni, udział czasu, przez który kanał jest zajęty, retransmisje i łącze do sieci przewodowej. „Pełne kreski” nie oznaczają wolnego kanału ani małego opóźnienia.
10 / AdresacjaAdres IP, prefiks i podsieć
Adres IPv4 ma 32 bity. Prefiks /p określa, ile początkowych bitów należy do części sieciowej. Adres sieci otrzymujemy przez bitowe AND adresu z maską. Klasy A, B i C są historyczne; współczesne wyznaczanie podsieci i tras opiera się na prefiksach CIDR. RFC 4632.
- Sieć
- 192.168.10.64/26
- Maska
- 255.255.255.192
- Broadcast
- 192.168.10.127
- Adresy hostów
- 192.168.10.65 – 192.168.10.126
- Liczba adresów
- 64 ogółem; 62 zwykłe adresy hostów
Dla /26 pozostaje 6 bitów, czyli 64 adresy. W zwykłej podsieci dwa adresy mają znaczenie specjalne: adres sieci i broadcast. Nie należy bezwarunkowo stosować wzoru „liczba adresów minus dwa”: /31 służy m.in. łączom punkt-punkt, a /32 wskazuje pojedynczy adres. Rezerwacje i reguły użyteczności adresów zależą także od konkretnego zakresu.
Adresy prywatne i IPv6
Zakresy IPv4 przeznaczone do użycia prywatnego to 10.0.0.0/8, 172.16.0.0/12 i 192.168.0.0/16. Sam prywatny adres nie zapewnia bezpieczeństwa. Może być osiągalny przez VPN albo inne połączenie routowane. W przykładach opisowych używamy także adresów dokumentacyjnych, np. 192.0.2.0/24, których nie traktujemy jako prawdziwych celów pomiaru.
IPv6 ma adresy 128-bitowe, zapisywane szesnastkowo, np. 2001:db8:1::25/64 w zakresie dokumentacyjnym. Podwójny dwukropek skraca jeden ciąg grup zer. Nie ma broadcastu IPv6. Adres link-local działa na danym łączu; przy jego użyciu może być potrzebne wskazanie interfejsu. NDP zastępuje funkcje ARP i realizuje również odkrywanie routerów. RFC 4861.
Przykład: czy odbiorca jest lokalny?
Host 192.168.10.77/26 uzna 192.168.10.90 za lokalny cel, natomiast 192.168.10.130 leży w innej podsieci. Najpierw sprawdza jednak tablicę routingu: bardziej szczegółowa trasa może zmienić decyzję względem uproszczonej reguły „ta sama podsieć albo brama”.
Nagłówek IPv4: gdzie zaczynają się dane?
Pakiet IP jest ciągiem bajtów, nie zbiorem etykiet programu analizującego. Pierwszy półbajt wskazuje wersję, a IHL długość nagłówka w słowach 32-bitowych: IHL = 5 oznacza 20 B, IHL = 6 oznacza 24 B. Total Length obejmuje nagłówek i dane IP, ale nie Ethernet. Pola wielobajtowe zapisujemy w sieciowej kolejności bajtów, od najbardziej znaczącego.
Protocol określa zawartość IP: 1 oznacza ICMP, 6 TCP, 17 UDP. Nie jest portem ani EtherType. TTL ogranicza liczbę przejść przez routery. Suma kontrolna nagłówka IPv4 chroni tylko nagłówek, więc po zmianie TTL trzeba ją uaktualnić. DSCP służy klasyfikacji ruchu, ECN sygnalizacji przeciążenia. Żadne z tych pól nie szyfruje danych.
Przykład odczytu: przy IHL = 5 i Total Length = 41 dane IP mają 21 B. Jeżeli Protocol = 1 i jest to Echo, po 8 B nagłówka ICMP zostaje 13 B danych Echo. Bez VLAN nagłówek IP zaczyna się po 14 B Ethernetu, a ICMP po kolejnych 20 B. Dopełnienie Ethernetu nie należy do tych 41 B. Nie wpisuj do parsera stałego przesunięcia 34 B: najpierw rozpoznaj warstwę łącza, opcje IP i ewentualną fragmentację.
Format: RFC 791, §3.1; wymagania przetwarzania: RFC 1122; DSCP i ECN: RFC 2474, RFC 3168.
Maska bit po bicie
Adres: 192.168.10.77 ostatni oktet: 01001101
Maska: 255.255.255.192 ostatni oktet: 11000000
AND: 192.168.10.64 ostatni oktet: 01000000
Broadcast dla /26: 01111111 = 127
Maska CIDR ma jeden ciąg jedynek, po którym następują zera. Bitowe AND zachowuje część sieciową i zeruje część hosta. W zapisie adresu interfejsu 192.168.10.77/26 bity hosta nie muszą być zerami. W kanonicznym zapisie prefiksu sieci, 192.168.10.64/26, są wyzerowane. To rozróżnienie zapobiega myleniu adresu urządzenia z nazwą całej podsieci.
VLSM: dopasowanie wielkości podsieci
Przyjmijmy blok 192.168.20.0/24 i trzy LAN-y wymagające odpowiednio 100, 50 i 20 zwykłych adresów hostów. Przydzielamy od największej sieci, na granicach wynikających z prefiksu:
| Potrzeba | Prefiks | Adresy hostów | Pojemność hostów |
|---|---|---|---|
| 100 hostów | 192.168.20.0/25 | .1–.126 | 126 |
| 50 hostów | 192.168.20.128/26 | .129–.190 | 62 |
| 20 hostów | 192.168.20.192/27 | .193–.222 | 30 |
| Rezerwa | 192.168.20.224/27 | .225–.254 | 30 |
Adresy bram i infrastruktury również zajmują miejsca w puli hostów. Trzeba uwzględnić je przy określaniu potrzeb. Nie zaczynamy bloku /26 od dowolnego adresu: jego granice w ostatnim oktecie wypadają co 64.
CIDR i agregacja tras
Prefiks służy nie tylko do dzielenia LAN-u, lecz również do opisu wielu sieci jedną trasą. Cztery kolejne bloki 192.168.0.0/24, 192.168.1.0/24, 192.168.2.0/24 i 192.168.3.0/24 mają wspólne 22 pierwsze bity. Można je dokładnie pokryć prefiksem 192.168.0.0/22, obejmującym zakres do 192.168.3.255.
Sama bliskość adresów nie wystarcza. Bloki 192.168.1.0/24 i 192.168.2.0/24 nie tworzą jednego dokładnego /23, ponieważ granice /23 wypadają co dwa w trzecim oktecie, zaczynając od zera. Zbyt szerokie ogłoszenie przyciągnie również ruch do sieci, do których router może nie mieć dostępu. Powyższe adresy są prywatne i służą przykładowi wewnątrz organizacji; nie ogłaszamy ich do publicznego Internetu.
Historyczne klasy A/B/C używały sztywniejszego podziału. Dzisiejsza decyzja routera opiera się na najdłuższym pasującym prefiksie, nie na zgadywaniu klasy po pierwszym oktecie. CIDR, RFC 4632.
11 / Przekazywanie pakietówNastępny skok, nie cała trasa
Tablica routingu kojarzy prefiks docelowy z interfejsem i ewentualnym następnym skokiem. Router wybiera najdłuższy pasujący prefiks. Dla celu 192.168.10.90 trasa 192.168.10.64/26 jest bardziej szczegółowa niż 192.168.10.0/24, a obie są bardziej szczegółowe niż trasa domyślna 0.0.0.0/0. Sama lista routerów widoczna w traceroute nie jest tablicą routingu.
ARP: czyj MAC jest potrzebny?
Do celu na lokalnym łączu potrzebny jest MAC tego celu. Do celu w innej sieci potrzebny jest MAC następnego skoku, zwykle bramy, a nie odległego serwera. ARP pyta o odwzorowanie IPv4 na adres łącza i utrzymuje lokalną pamięć odpowiedzi. Nie uwierzytelnia ich kryptograficznie. RFC 826.
ICMP i diagnozowanie drogi
ICMP przenosi informacje kontrolne, np. o wygaśnięciu TTL lub niedostępności celu. Ping używa Echo Request i Echo Reply. Traceroute wysyła próby o rosnącym TTL i analizuje odpowiedzi pośrednich routerów. Gwiazdka oznacza brak odpowiedzi w terminie, nie dowód braku routera. Filtrowanie, ograniczanie odpowiedzi i równoważenie obciążenia zmieniają obraz pomiaru.
Przy diagnozie sprawdzaj kolejno: stan interfejsu, adres i prefiks, trasę, sąsiada ARP/NDP, osiągalność IP, DNS i dopiero usługę aplikacyjną. Sukces jednego etapu nie dowodzi sukcesu następnego.
Skąd router zna trasy?
Trasy do bezpośrednio podłączonych sieci wynikają z konfiguracji interfejsów. Administrator może dodać trasę statyczną. Protokoły routingu rozgłaszają informacje i reagują na zmiany: protokoły stanu łącza, np. OSPF, budują obraz topologii wewnątrz domeny; BGP wymienia osiągalność prefiksów między systemami autonomicznymi z uwzględnieniem polityki. Najkrótsza ścieżka w grafie nie musi być trasą wybraną polityką Internetu.
Nie mylimy obliczania i wymiany tras (control plane) z przekazaniem konkretnego pakietu według przygotowanej tablicy (data plane). Trasa może się zmienić w trakcie pomiaru. TTL w IPv4 i Hop Limit w IPv6 są zmniejszane przy przekazywaniu przez routery, aby pakiet nie krążył bez końca w pętli.
12 / Sąsiedzi na łączuARP i Reverse ARP: dwa różne pytania
Routing wybrał interfejs i następny skok. Aby utworzyć ramkę Ethernet, host potrzebuje jeszcze adresu MAC tego skoku. ARP rozwiązuje to zadanie dla IPv4 na lokalnym łączu. Nie odnajduje nazw DNS, nie ustala całej trasy i nie odpytuje hostów w odległych podsieciach.
Od zapytania do wpisu sąsiada
W przykładzie A ma adres 10.77.0.10/24 i MAC 02:00:00:00:00:0a, a B adres 10.77.0.20/24 i MAC 02:00:00:00:00:0b. To jawnie skonfigurowane urządzenia laboratorium, nie adresy do prób w cudzej sieci.
- 1 · A → broadcastKto ma 10.77.0.20? Odpowiedz do 10.77.0.10. MAC ramki: ff:ff:ff:ff:ff:ff.
- 2 · B → A10.77.0.20 jest pod 02:00:00:00:00:0b. Zwykła odpowiedź jest unicastem.
- 3 · A → B: pakiet IPMAC celu = B. IP celu = B. Zapytania ARP nie są potrzebne przed każdym kolejnym pakietem.
Tablica sąsiadów A nie zawiera jeszcze B. Pakiet IP czeka na rozwiązanie adresu.
Format ARP dla Ethernetu i IPv4
EtherType 0x0806ARP
28 BDopełnienie
18 BFCS
4 B
| Pole | Offset [B] | Rozmiar [B] | Znaczenie / zapytanie A o B |
|---|---|---|---|
| HTYPE | 0 | 2 | Typ sprzętu: 1, Ethernet. |
| PTYPE | 2 | 2 | Protokół odwzorowywanego adresu: 0x0800, IPv4. To nie EtherType zewnętrznej ramki ARP. |
| HLEN / PLEN | 4 / 5 | 1 + 1 | Długości adresów: 6 B MAC i 4 B IPv4. |
| OPER | 6 | 2 | 1 = Request, 2 = Reply. |
| SHA | 8 | 6 | Sender Hardware Address: MAC A. |
| SPA | 14 | 4 | Sender Protocol Address: 10.77.0.10. |
| THA | 18 | 6 | Target Hardware Address: nieznany w zapytaniu, zwykle same zera; nie mylić z broadcastowym MAC ramki. |
| TPA | 24 | 4 | Target Protocol Address: 10.77.0.20. |
Specyfikacja i algorytm wymiany: RFC 826. Typy ramek: rejestr IANA EtherType.
Pamięć ARP, konflikt i spoofing
Wpis sąsiada jest stanem lokalnym, ma czas życia i może być odświeżany. Brak ARP w krótkim przechwyceniu często oznacza wykorzystanie wpisu zapisanego wcześniej w pamięci podręcznej, a nie brak użycia adresów MAC. ARP nie zawiera mechanizmu kryptograficznego potwierdzania właściciela IP. Wysłanie fałszywego odwzorowania IP → MAC to ARP spoofing; jego przyjęcie zależy również od systemu i polityki sieci.
Zmiana MAC nie zawsze jest atakiem: powodem może być failover, wymiana urządzenia lub konflikt adresów. ARP Probe używa SPA = 0.0.0.0 do sprawdzania dostępności planowanego adresu; ARP Announcement ogłasza własny adres. Te prawidłowe komunikaty trzeba odróżnić od zwykłego pytania o sąsiada. Zabezpieczenia obejmują kontrolę powiązań na przełączniku, segmentację i monitorowanie. TLS nie naprawia ARP, ale chroni uwierzytelnioną sesję aplikacji. RFC 5227; laboratorium: ograniczony eksperyment ARP.
Reverse ARP (RARP): znam MAC, jaki jest mój IP?
Historyczna stacja bezdyskowa znała MAC, lecz przy rozruchu potrzebowała własnego adresu IPv4. Wysyłała żądanie RARP, a serwer z bazą powiązań MAC → IP zwracał konfigurację adresu. RARP używa formatu pól ARP, ale osobnego EtherType 0x8035 oraz OPER = 3 dla żądania i OPER = 4 dla odpowiedzi. W żądaniu dotyczącym siebie SHA i THA wskazują MAC klienta; w odpowiedzi TPA zawiera przydzielony adres IP.
RARP nie jest „odpowiedzią ARP”, odwrotnym DNS ani protokołem InARP. Wymaga serwera na łączu i sam nie przekazuje pełnego zestawu parametrów, takiego jak maska czy resolver. W konfiguracji hostów zastąpiły go BOOTP i później DHCP, które mogą działać także przez agenta relay. Nie uruchamiamy serwera RARP w tym kursie, ale student powinien rozpoznać jego cel i format. RFC 903; przejście do DHCP.
IPv6 nie używa ARP ani RARP. Neighbor Discovery wykorzystuje ICMPv6: Neighbor Solicitation (135) i Neighbor Advertisement (136), a także Router Solicitation (133) i Router Advertisement (134). Zamiast broadcastu używa m.in. multicastu solicited-node. Odkrywanie adresu sąsiada, routera i konfiguracja własnego adresu to powiązane, lecz różne zadania. RFC 4861.
Sprawdź rozumienie: ping do innej podsieci
A wysyła do odległego serwera. W zapytaniu ARP pojawia się IP bramy, nie IP serwera. Po odpowiedzi ARP ramka niesie MAC bramy i pakiet z IP serwera. Odpowiedź ARP nie potwierdza, że serwer jest osiągalny.
13 / Rozmiar i kompletnośćFragmentacja IP i składanie u odbiorcy
Datagram może mieścić się na pierwszym łączu, a być zbyt duży na następnym. MTU dotyczy całego pakietu IP na konkretnym łączu, nie samego tekstu aplikacji. W IPv4 nadawca lub router może podzielić datagram, jeśli DF = 0. Przy DF = 1 router odrzuca zbyt duży pakiet i, jeśli reguły na to pozwalają, wysyła ICMP Destination Unreachable, Type 3, Code 4.
Pola, które pozwalają odzyskać całość
- Identification, 16 bitów: wraz z adresem źródła, adresem celu i polem Protocol rozróżnia składane datagramy. Sam numer ID nie wystarcza. Nie służy do ustalania kolejności wszystkich wiadomości.
- Flagi: bit zarezerwowany jest zerowy; DF (Don't Fragment) zakazuje podziału; MF (More Fragments) sygnalizuje, że po tym fragmencie są dalsze dane oryginału.
- Fragment Offset, 13 bitów: pozycja początku danych fragmentu względem początku danych oryginalnego datagramu, w jednostkach 8 B. Offset = 185 oznacza 1480 B.
- IHL, Total Length i suma nagłówka: każdy fragment ma własny nagłówek i własną długość. Po podziale trzeba ustalić je dla każdego fragmentu. Nagłówek TCP, UDP lub ICMP nie jest powielany w każdym fragmencie.
Wszystkie fragmenty poza ostatnim muszą przenosić liczbę bajtów danych podzielną przez 8. Gdy nagłówek ma bajtów, a MTU wynosi , największy taki fragment danych ma bajtów. Opcje IPv4 mogą zmieniać długość nagłówka; ich bit copy określa, które opcje trafiają do dalszych fragmentów. Poniższy model pomija opcje.
Fragmentacja: RFC 791, §3.2. Zakres użycia Identification i wyjątek dla datagramów atomowych (DF = 1, MF = 0, offset = 0): RFC 6864.
Przykład i model podziału IPv4
Datagram IPv4 ma 4000 B, w tym 20 B nagłówka bez opcji, a łącze dopuszcza MTU 1500 B. Pozostaje 3980 B danych. Jeśli DF = 0, można utworzyć fragmenty poniżej. Każdy ma własny nagłówek IP; fragmenty niosą części oryginalnej zawartości, nie nowe pełne segmenty TCP.
3 fragmenty; dane 3980 B, nagłówki łącznie 60 B. Odbiorca ma pełny zakres danych 0–3979.
| Fragment | Zakres danych [B] | Dane [B] | Całość IP [B] | Offset | MF |
|---|---|---|---|---|---|
| 1 | 0–1479 | 1480 | 1500 | 0 | 1 |
| 2 | 1480–2959 | 1480 | 1500 | 185 | 1 |
| 3 | 2960–3979 | 1020 | 1040 | 370 | 0 |
Offset 185 oznacza 1480 B od początku danych datagramu. MF mówi, czy są kolejne fragmenty. Wszystkie należą do tego samego datagramu identyfikowanego odpowiednimi polami nagłówka. Składanie następuje u odbiorcy; brak fragmentu uniemożliwia odtworzenie całości w wymaganym czasie. Przy DF = 1 router nie może wykonać takiego podziału.
Składanie fragmentów: kolejność przyjścia nie jest kolejnością danych
- Odbiorca grupuje fragmenty według źródła, celu, Protocol i Identification. Sprawdza długości i zakresy, a nie tylko wspólny numer ID.
- Dane umieszcza od pozycji
8 · offset. Może najpierw dostać fragment 3, potem 1, a dopiero na końcu 2. - Fragment z MF = 0 wyznacza koniec oryginalnych danych, ale nie dowodzi kompletności. W naszym przykładzie fragmenty 1 i 3 pozostawiają lukę 1480–2959.
- Dopiero po zebraniu całego zakresu warstwa IP przekazuje odtworzoną zawartość do TCP, UDP albo ICMP. Przekroczenie czasu składania usuwa niekompletny datagram; samo IP nie prosi o ponowienie brakującego fragmentu.
Jeśli drugi router podzieli już istniejący fragment, offsety nadal odnoszą się do oryginału. Przy MTU 620 B pierwszy fragment z przykładu rozpadnie się na 600, 600 i 280 B danych, z offsetami 0, 75 i 150. Wszystkie trzy mają MF = 1, bo za nimi są dalsze dane pierwotnego datagramu. Dopiero ostatnia część ostatniego fragmentu otrzyma MF = 0. Router przekazujący ruch nie składa go po drodze tylko po to, by wysłać dalej.
Duplikaty, nakładające się zakresy i ograniczona pamięć komplikują implementację. Nie zakładaj, że różne systemy jednakowo wybierają dane przy nakładaniu. W dydaktycznym analizatorze jawnie odrzucaj sprzeczne zakresy. Dla IPv6 fragmenty nakładające się powodują odrzucenie całego składanego pakietu. Idea śledzenia brakujących przedziałów: RFC 815; ograniczenia fragmentacji: RFC 8900.
DF, Path MTU Discovery i różnica w IPv6
Path MTU Discovery ustala rozmiar, który mieści się na całej drodze. W IPv4 korzysta m.in. z informacji o potrzebie fragmentacji przy DF, a w IPv6 z Packet Too Big. Nieprzemyślane blokowanie ICMP może więc powodować sytuację, w której małe pakiety działają, a większa transmisja staje. Istnieją także metody sondowania na poziomie pakietyzacji, które nie polegają wyłącznie na odbieraniu takich komunikatów. PMTUD IPv4; PMTUD IPv6; DPLPMTUD.
W IPv6 router nie fragmentuje. Może odesłać ICMPv6 Packet Too Big z MTU. Fragmentację wykonuje nadawca, dodając 8-bajtowy nagłówek rozszerzenia Fragment: Next Header (8 b), Reserved (8 b), Offset (13 b), Reserved (2 b), M (1 b) i Identification (32 b). Offset również jest w jednostkach 8 B. Pola te nie należą do stałego, 40-bajtowego nagłówka IPv6. Nie ma w nim sumy nagłówka ani flagi DF. Pierwszy fragment musi zawierać cały łańcuch nagłówków IPv6 oraz kompletny nagłówek protokołu wyższej warstwy, np. TCP lub UDP. Nie wystarcza sam początek tego nagłówka; regułę określa RFC 8200, §4.5.
W nagłówku poprzedzającym Fragment pole Next Header ma wartość 44. Natomiast Next Header wewnątrz nagłówka Fragment wskazuje typ następnego nagłówka, np. 58 dla ICMPv6, jeśli nie ma po drodze kolejnych rozszerzeń. W ten sposób odbiorca przechodzi przez łańcuch nagłówków; nie zakłada, że dane aplikacji zaczynają się zawsze w tym samym miejscu.
40 BFragment
8 BCzęść danych
do złożenia
W Wiresharku: ip.flags.mf == 1 || ip.frag_offset > 0 odnajduje fragmenty IPv4; ip.id pomaga je powiązać, ale sprawdź także adresy i Protocol. Pole przesunięcia może być prezentowane w bajtach, podczas gdy surowe pole w nagłówku i IP.frag w Scapy są w jednostkach 8 B. Filtr przechwytywania ograniczony do portu TCP/UDP może pominąć dalsze fragmenty, które nie zaczynają się od nagłówka transportowego. Na potrzeby własnego eksperymentu przechwytuj ruch pary hostów, a zawężaj po odczycie. Pola IPv4 w Wiresharku.
Sprawdź rozumienie: zgubiono środkowy fragment
Widać początek i fragment z MF = 0. Czy można przekazać dane aplikacji? Nie: zakres jest niepełny. Suma kontrolna nagłówka każdego otrzymanego fragmentu nie wykrywa braku innych fragmentów. O niezawodność musi zadbać mechanizm wyższej warstwy.
14 / Informacja zwrotnaICMP: Echo, błędy i pakiet wewnątrz pakietu
ICMP jest protokołem kontrolnym warstwy internetowej. W IPv4 znajduje się bezpośrednio wewnątrz IP, z Protocol = 1, a nie wewnątrz UDP lub TCP. Nie używa portów. Ping jest programem korzystającym z komunikatów Echo; sam ICMP obejmuje także inne wiadomości. Router może wygenerować ICMP w odpowiedzi na problem z pakietem, ale dostarczenie tego powiadomienia również nie jest gwarantowane.
Wspólny początek i format ICMP Echo
Echo Request: Type = 8, Code = 0. Echo Reply: Type = 0, Code = 0. Odpowiedź zachowuje Identifier, Sequence Number i otrzymane dane Echo. Nadawca dobiera id i kolejne seq, aby wiązać próby z odpowiedziami; id nie musi być identyfikatorem procesu. Adresy IP zamieniają role. Nowy datagram odpowiedzi ma własny nagłówek i początkowy TTL.
Suma kontrolna ICMPv4 (Checksum) obejmuje cały komunikat ICMP, nagłówek oraz dane, bez nagłówka IPv4. Jest 16-bitowym dopełnieniem sumy w arytmetyce dopełnień do jedności. Przy obliczaniu pole sumy jest zerowe; nieparzystą długość uzupełnia się zerem tylko na potrzeby obliczenia. Po zmianie Type lub tekstu trzeba sumę przeliczyć. Nie jest to podpis ani MAC kryptograficzny. RFC 792; obliczanie sumy: RFC 1071.
Najważniejsze rodzaje komunikatów
| Type | Code | Komunikat | Co oznacza w przechwyceniu? |
|---|---|---|---|
| 8 / 0 | 0 | Echo Request / Reply | Próba i odpowiedź ping. Zwrócone dane są kopią danych z żądania, a nie nową wiadomością napisaną przez odbiorcę. |
| 3 | 0 / 1 | Destination Unreachable | Zgłoszona nieosiągalność sieci / hosta. |
| 3 | 2 / 3 | Protocol / Port Unreachable | Brak obsługi protokołu / portu, np. UDP. Zamknięty port TCP zwykle daje RST, a nie ten błąd. |
| 3 | 4 | Fragmentation Needed | Pakiet nie mieści się przy DF = 1; pole Next-Hop MTU wspiera PMTUD. |
| 3 | 13 | Administratively Prohibited | Przekazanie zabronione przez politykę. Nie mylić z brakiem fizycznego łącza. |
| 11 | 0 / 1 | Time Exceeded | Wygaśnięcie TTL w drodze / czasu składania fragmentów. |
| 12 | 0 | Parameter Problem | Pointer wskazuje bajt problematycznego nagłówka IP. |
| 5 | 1 | Redirect for Host | Informacja o innym routerze na łączu; przyjęcie wymaga kontroli, nie jest uniwersalnym poleceniem zmiany trasy. |
| 4 | 0 | Source Quench, historyczny | Wycofany mechanizm; nie stosujemy go do współczesnego sterowania przeciążeniem. |
Pełny wykaz typów i kodów: IANA ICMP Parameters. Reguły routerów: RFC 1812, §4.3. Wycofanie Source Quench: RFC 6633.
Formaty błędów: skąd wiadomo, którego pakietu dotyczy problem?
| Rodzaj | Układ kolejnych 32 bitów |
|---|---|
| Destination Unreachable, poza Code 4; Time Exceeded | W podstawowym formacie pole niewykorzystane, zerowe. |
| Type 3, Code 4 | 16 bitów niewykorzystanych + 16 bitów Next-Hop MTU. Starszy router może podać MTU = 0. |
| Parameter Problem, Code 0 | 8 bitów Pointer + 24 bity niewykorzystane. |
| Redirect | 32-bitowy adres IPv4 zalecanej bramy. |
Osobny scenariusz routowany: A i B znajdują się na różnych łączach. A wysyła Echo do B, ale router R zużywa ostatnią jednostkę TTL. Powstaje nowy IPv4: R → A, niosący ICMP 11/0. Cytowany wewnątrz niego nagłówek nadal opisuje oryginalną próbę A → B. Jej pierwsze 8 B danych zawiera nagłówek Echo z id i seq, dzięki czemu A może rozpoznać próbę. Dla UDP cytat zaczyna się od nagłówka UDP z portami.
Nie zakładaj, że cytat zawiera cały oryginalny pakiet: długość zadeklarowana w cytowanym IP może być większa od dostępnych bajtów. Współczesne komunikaty mogą też zawierać rozszerzenia. Router powinien cytować możliwie dużo, w granicach określonych przez standard, a nie zawsze dokładnie 28 B. RFC 1812, §4.3.2.3; pole MTU: RFC 1191; rozszerzenia: RFC 4884.
Kapsułkowanie: ARP, Echo i błąd ICMP
Poza IP: dopełnienie 5 B i FCS 4 B. Z nagłówkiem Ethernetu 14 B: 64 B.
Ping, traceroute i ostrożna interpretacja
Ping mierzy czas od wysłania próby do odbioru pasującej odpowiedzi. Timeout może oznaczać stratę, filtrowanie, ograniczenie odpowiedzi albo problem na drodze powrotnej. Echo Reply nie potwierdza działania HTTP ani tego, że człowiek przeczytał dane. Traceroute stopniowo zwiększa TTL: kolejne routery mogą odpowiadać ICMP 11/0. Dla typowych prób UDP cel końcowy odpowiada 3/3, dla ICMP Echo odpowiedzią 0/0, a dla TCP np. SYN-ACK lub RST.
Aby nie tworzyć lawiny błędów, ICMPv4 nie generuje odpowiedzi błędu na inny błąd ICMP, na fragment niepoczątkowy ani zwykle na ruch broadcast/multicast. Obowiązują także ograniczenia dotyczące adresów źródłowych i częstotliwości generowania. Nie każdy zgubiony fragment lub odrzucony pakiet musi pozostawić komunikat diagnostyczny. RFC 1122, §3.2.2; RFC 1812, §4.3.2.7–8.
ICMPv6 nie jest tylko zmianą adresów
ICMPv6 ma numer Next Header = 58. Echo Request/Reply używają Type 128/129, Code 0; pola id, seq i dane pełnią analogiczne role. Podstawowe błędy mają inne typy: 1 = Destination Unreachable, 2 = Packet Too Big, 3 = Time Exceeded, 4 = Parameter Problem. W Packet Too Big po Type, Code i Checksum występuje 32-bitowe MTU, a nie 16-bitowe pole z ICMPv4 3/4.
Suma ICMPv6 uwzględnia także pseudonagłówek IPv6: adresy końców, długość i identyfikację protokołu. Cytat pakietu błędnego zajmuje tyle miejsca, ile można zwrócić bez przekroczenia minimalnego MTU IPv6. ICMPv6 obsługuje też Neighbor Discovery, opisany w sekcji o sąsiadach; blokowanie go w całości może zepsuć podstawowe działanie IPv6. RFC 4443; RFC 4861.
Odczyt w Wiresharku i wiadomość w danych Echo
Przechwytywanie na własnym interfejsie filtruj np. przez BPF icmp and host 10.77.0.20. Po przechwyceniu filtr wyświetlania icmp.type == 8 && icmp.code == 0 wybiera żądania. Są to dwa różne języki filtrów. Rozwiń Ethernet, IPv4 i ICMP, zaznacz id, seq oraz dane i porównaj podświetlone bajty. Dla błędu ICMP odróżnij adresy zewnętrznego IP od cytowanego wewnątrz.
W naszym ćwiczeniu tekst „Cześć” ma 5 znaków, lecz 7 B w UTF-8: 43 7a 65 c5 9b c4 87. Payload 4e 45 54 31 00 07 43 7a 65 c5 9b c4 87 składa się z 4 B znacznika NET1, 2 B długości tekstu i 7 B treści. Odbiorca zna tę umowę i rozpoznaje ją w danych Echo. Zwykły ping nie interpretuje jej jako komunikatora. Format jest jawny i nie zapewnia poufności ani uwierzytelnienia.
To pozwala zbudować prosty komunikator laboratoryjny, bez tunelowania ruchu aplikacji i bez obchodzenia zapory. Wystarcza para własnych hostów i odbiór żądań Echo; automatyczna odpowiedź systemu jest kopią danych, nie nową wypowiedzią. Szczegóły pól: Wireshark ICMP; Scapy IP i ICMP.
Sprawdź rozumienie: gdzie umieścić tekst?
W danych Echo, po 8 B nagłówka ICMP. Pola id i seq pomagają identyfikować wiadomość, ale nie zastępują jej treści. Suma kontrolna nie jest dowodem autorstwa, a Echo Reply nie jest potwierdzeniem odczytu przez program rozmówcy.
15 / Translacja adresówNAT: co zmienia router i skąd wie, komu oddać odpowiedź?
W podstawowym NAT tłumaczymy adresy IP. W NAPT, nazywanym też PAT, tłumaczymy dodatkowo identyfikatory transportowe, np. porty TCP lub UDP. To NAPT pozwala wielu hostom prywatnym współdzielić jeden adres zewnętrzny. Odwzorowanie może być statyczne, pochodzić z puli adresów albo powstawać dynamicznie dla ruchu.
Jedno połączenie, cztery obserwacje
Host 192.168.1.10 łączy się z usługą TCP na 198.51.100.20:443. Brama używa na zewnątrz 203.0.113.5. Oba zakresy zewnętrzne są tutaj adresami dokumentacyjnymi, a nie celami prawdziwych testów.
| Miejsce obserwacji | Źródło | Cel |
|---|---|---|
| Przed NAT, żądanie | 192.168.1.10:50000 | 198.51.100.20:443 |
| Po NAT, żądanie | 203.0.113.5:40001 | 198.51.100.20:443 |
| Przed NAT, odpowiedź | 198.51.100.20:443 | 203.0.113.5:40001 |
| Po NAT, odpowiedź | 198.51.100.20:443 | 192.168.1.10:50000 |
Router zachowuje odwzorowanie i stan pozwalający przypisać pakiety powrotne. Uwzględnia protokół, a zależnie od implementacji i polityki również zdalny punkt końcowy. Dwa komputery mogą używać tego samego portu wewnętrznego: translator musi rozróżnić ich przepływy. Port zewnętrzny nie musi być identyczny z wewnętrznym.
Zmiana IP wymaga poprawienia sumy nagłówka IPv4, a zmiana pól uwzględnianych przez TCP/UDP również odpowiedniej sumy transportowej. Dla ICMP translator może przetwarzać identyfikator zapytania i nagłówek cytowany w komunikacie błędu. Stan ma ograniczony czas życia. UDP nie ma zestawienia połączenia, ale NAT i tak może utrzymywać czasowe odwzorowanie jego ruchu.
Przekierowanie portów, CGNAT i ograniczenia
Statyczne przekierowanie, np. zewnętrznego TCP 8443 do wewnętrznego serwera na 443, tworzy regułę dla ruchu inicjowanego z zewnątrz. Nie jest zgodą na dowolny ruch: trzeba również poprawnie ustawić zaporę i zabezpieczyć usługę. Przy CGNAT translator działa dodatkowo u operatora, więc reguła na domowym routerze może nie wystarczyć. Po stronie operatora nie kontrolujemy wtedy całej drogi wejściowej.
NAT utrudnia komunikację inicjowaną do hosta wewnętrznego, diagnostykę i protokoły przekazujące adresy we własnej treści. W aplikacjach czasu rzeczywistego mechanizmy takie jak STUN pomagają poznać widoczne odwzorowanie, TURN zapewnia przekaźnik, a ICE porównuje możliwe drogi. Nie każde odwzorowanie da się wykorzystać do bezpośredniego połączenia.
NAT nie szyfruje i nie zastępuje zapory. Brak pasującego odwzorowania często blokuje nieoczekiwany ruch, lecz jest to inne zagadnienie niż świadoma polityka dostępu. IPv6 usuwa główny powód oszczędzania adresów przez NAPT, ale nie usuwa potrzeby filtrowania. Host z adresem globalnym nie powinien automatycznie udostępniać wszystkich usług.
Źródła: NAT/NAPT, RFC 3022, CGN, RFC 6888, ICE, RFC 8445.
16 / TransportUDP przesyła datagramy, TCP dostarcza strumień
Numery portów pozwalają wskazać komunikujące się punkty końcowe transportu. UDP zachowuje granice datagramów, lecz sam nie retransmituje i nie gwarantuje dostarczenia ani kolejności. Aplikacja może dodać takie mechanizmy. Brak odpowiedzi UDP nie rozstrzyga, czy port jest otwarty, filtrowany, czy wiadomość zginęła.
TCP udostępnia uporządkowany strumień bajtów. Jedno wywołanie send() nie musi odpowiadać jednemu segmentowi ani jednemu recv(). Numer ACK oznacza następny oczekiwany numer sekwencyjny. SYN i FIN zużywają po jednym numerze; same ACK nie. Poniższy model pokazuje udane zestawienie bez strat i opcji. RFC 9293.
Serwer nasłuchuje. Klient nie wysłał jeszcze SYN.
Kontrola przepływu chroni bufor odbiorcy, a kontrola przeciążenia ogranicza obciążenie sieci. Ich współdziałanie oraz retransmisje rozwijamy w następnym rozdziale.
Dlaczego ACK nie jest dowodem odczytania wiadomości?
Potwierdzenie TCP dotyczy przyjęcia bajtów przez stos transportowy. Nie dowodzi, że aplikacja je przetworzyła, zapisała na dysku lub zatwierdziła transakcję. Takie potwierdzenie wymaga protokołu aplikacyjnego.
17 / Mechanizmy TCPPotwierdzenia, okna i adaptacja do sieci
TCP składa uporządkowany strumień z segmentów, które mogą ginąć, powtarzać się i docierać w innej kolejności. Nie gwarantuje jednak dostarczenia mimo trwałej awarii. Połączenie może zakończyć się błędem lub przekroczeniem limitu czasu. Rozróżniamy więc poprawność dostarczonego strumienia, wykrywanie niepowodzenia i aplikacyjne potwierdzenie wykonania operacji.
- 1. NiezawodnośćKtóre bajty dotarły? Które trzeba powtórzyć?
- 2. Kontrola przepływuIle kolejnych bajtów przyjmie odbiorca?
- 3. Kontrola przeciążeniaIle ruchu można wprowadzić do sieci?
Nagłówek: pola, które wiążą kolejne kroki
| Pole | Znaczenie |
|---|---|
| Porty, po 16 bitów | Wraz z adresami IP rozróżniają połączenia. Port nie jest kryptograficznym dowodem rodzaju usługi. |
| Sequence Number, 32 bity | Pozycja pierwszego bajtu danych; SYN wyznacza początkowy numer sekwencyjny. Numeracja działa modulo 2³². |
| Acknowledgment Number, 32 bity | Gdy ustawiono ACK: następny oczekiwany numer w przeciwnym kierunku. Potwierdzenie kumuluje odbiór wcześniejszych bajtów. |
| Data Offset, 4 bity | Długość całego nagłówka w słowach 32-bitowych: 5 oznacza 20 B bez opcji; większa wartość obejmuje także opcje i dopełnienie. |
| SYN, FIN, RST | SYN synchronizuje numery początkowe; FIN kończy wysyłanie w jednym kierunku; RST przerywa połączenie. SYN i FIN zajmują po jednej pozycji numeracji, RST nie zastępuje ACK danych. |
| ACK, PSH, URG | ACK = 1 oznacza ważność pola Acknowledgment Number, nie „dodatkowy bajt”. PSH dotyczy przekazania danych wyżej, ale nie oznacza końca wiadomości. URG uaktywnia Urgent Pointer. |
| ECE i CWR | Sygnalizacja przeciążenia w klasycznym ECN; szczegóły zależą od wynegocjowanego wariantu. |
| Window, 16 bitów | Ogłoszona pojemność okna odbiorczego, z uwzględnieniem wynegocjowanego skalowania. |
| Checksum, 16 bitów | Kontrola nagłówka, danych i pseudonagłówka IP. Nie jest uwierzytelnieniem. |
| Urgent Pointer, 16 bitów | Przy URG wskazuje przesunięcie względem SEQ do końca obszaru pilnych danych według reguł TCP. Nie tworzy drugiego, niezawodnego kanału poza strumieniem; nowe aplikacje powinny definiować własny format sterowania. |
| Opcje i dopełnienie | MSS: Kind 2; Window Scale: 3; SACK Permitted: 4; bloki SACK: 5; Timestamps: 8. Opcja zwykle ma Kind, Length i wartość; EOL (0) i NOP (1) są jednobajtowe. Dopełnienie wyrównuje nagłówek do 32 bitów. |
Długość danych TCP nie jest osobnym polem TCP. Dla IPv4 bez dodatkowego kapsułkowania obliczamy ją jako Total Length − 4 × IHL − 4 × Data Offset. Przy IPv6 trzeba uwzględnić nagłówki rozszerzeń. Z kolei tcp.len, „Retransmission” i numery względne w Wiresharku są wynikami analizy, nie dodatkowymi polami wysłanymi przez nadawcę.
Format podstawowy: RFC 9293, §3.1. Przydziały flag i opcji: rejestr IANA TCP Parameters.
17.1 · Niezawodność: dodatnie potwierdzenia i retransmisja
Pozytywne, czyli dodatnie potwierdzenie mówi, że określone dane zostały odebrane. Nie oznacza oceny ich treści ani kryptograficznego podpisu. TCP łączy potwierdzenia z numeracją, pamięcią wysłanych danych i odmierzaniem czasu. Nadawca nie musi czekać po każdym segmencie: może mieć wiele segmentów w drodze.
- Nadaj pozycje. Bajty w każdym kierunku mają własną numerację. Segment z
SEQ=1001i 500 B danych przenosi pozycje 1001–1500. Kolejne nowe dane zaczynają się od 1501, niezależnie od granic wywołańsend(). - Zachowaj kopię. Nadawca przechowuje niepotwierdzone dane, aby móc je wysłać ponownie. Retransmisja tych samych bajtów zachowuje ich pozycje SEQ. Może mieć inne granice segmentów, aktualne ACK i Window, inny znacznik czasu oraz nową sumę kontrolną.
- Potwierdź ciągły prefiks. Odbiorca odrzuca uszkodzone segmenty, rozpoznaje duplikaty i składa ciąg danych bez luk. Pole ACK wskazuje pierwszą jeszcze brakującą pozycję.
- Odzyskaj brakujące dane. Brak postępu potwierdzeń uruchamia retransmisję przez timer lub mechanizm wykrywania strat. Sam segment nie ma flagi „retransmisja”.
Idea dodatnich potwierdzeń i ponawiania: RFC 793, §2.6 (historyczne objaśnienie); bieżące reguły protokołu: RFC 9293.
Ciągły prefiks, nie zbiór dowolnych odebranych fragmentów
Prefiks to początkowa część strumienia, bez pominiętych bajtów. Jeśli pierwsza pozycja danych to , a potwierdzenie ma wartość , to odebrany prefiks obejmuje przedział . Lewy koniec należy do przedziału, prawy nie. W przykładzie bez zawinięcia numeracji liczba bajtów tego prefiksu wynosi .
ACK jest kumulacyjne: ACK 2501 potwierdza także wcześniejsze bajty, nawet jeśli ACK 1501 zginęło. Dane ponad luką nie przesuwają tej granicy. Mogą czekać w buforze, ale nie są jeszcze zwykłym kolejnym fragmentem udostępnionego aplikacji strumienia. To blokowanie przez lukę określamy jako head-of-line blocking.
Przykład: luka w strumieniu i SACK
Przyjmijmy, że pierwszym oczekiwanym bajtem jest 1001. Numery w tym przykładzie są już po SYN i nie zawijają się. Odbiorca buforuje dane poza kolejnością, ale nie przekazuje aplikacji danych za luką.
W wierszu dotyczącym straty podano niezmienioną granicę ACK, nie nowy wysłany komunikat. Odbiorca nie zna zdarzenia „pakiet zginął”; widzi dopiero późniejsze dane lub brak danych. Sumy kontrolne wykrywają wiele błędów transmisji, lecz nie wszystkie możliwe zmiany i nie zastępują ochrony kryptograficznej.
| Zdarzenie | Stan odbiorcy | ACK |
|---|---|---|
| Przychodzą bajty 1001–1500 | Pierwsze 500 bajtów jest kompletne. | 1501 |
| Giną bajty 1501–2000 | Powstaje luka. | 1501 |
| Przychodzą bajty 2001–2500 | Można zachować je w buforze poza kolejnością. | 1501 |
| Dociera retransmisja 1501–2000 | Cały przedział 1001–2500 jest już ciągły. | 2501 |
Po uzgodnieniu SACK odbiorca może dodatkowo zgłosić odebrany blok [2001, 2501), czyli od 2001 do 2500 włącznie. To nie zastępuje kumulacyjnego ACK 1501, tylko daje nadawcy dokładniejszą informację o buforze. Sam brak odpowiedzi nie dowodzi straty segmentu: mógł zginąć ACK, a pakiet mógł tylko się opóźnić. SACK, RFC 2018.
SACK nie jest odstępstwem od zasady ciągłego prefiksu. To dodatkowy opis bloków poza prefiksem, przesyłany w opcjach obok niezmienionego pola ACK. SACK Permitted jest ogłaszane podczas zestawiania. Każdy blok SACK ma dwie 32-bitowe krawędzie; prawa wskazuje pierwszy bajt poza blokiem. Długość opcji to 2 + 8 × liczba bloków B. Nie wszystkie bloki muszą zmieścić się w opcjach. Odbiorca może wycofać wcześniejsze buforowanie poza kolejnością, dlatego nadawca nie usuwa kopii danych wyłącznie na podstawie SACK.
Algorytm odzyskiwania z SACK utrzymuje po stronie nadawcy mapę odebranych zakresów i luk, tzw. scoreboard. Pozwala ponawiać brakujące zakresy, zamiast niepotrzebnie przesyłać wszystkie późniejsze dane. Rozszerzenie D-SACK używa pierwszego bloku do zgłoszenia duplikatu, czasem poniżej ACK; również nie cofa ani nie zastępuje kumulacyjnego potwierdzenia. RFC 6675; D-SACK, RFC 2883.
Odbiorca ma późniejsze dane, lecz nadal czeka na lukę
- RCV.NXT odbiorcy
- 1001
- SND.UNA nadawcy
- 1001
- SND.NXT nadawcy
- 1001
- Opcja SACK w ostatnim ACK
- brak
- Dodatkowe ACK tej samej luki
- 0
Połączenie jest zestawione. Pierwszy bajt danych ma numer 1001.
Stan lokalny a pola komunikatu
| Zmienna lokalna | Co przechowuje? | Powiązanie z segmentem |
|---|---|---|
RCV.NXT | Następna oczekiwana pozycja odbioru. | Odbiorca wpisuje ją do pola ACK swojego segmentu zwrotnego. |
SND.UNA | Początek danych jeszcze niepotwierdzonych kumulacyjnie. | Przesuwa się po otrzymaniu poprawnego, postępującego ACK. Wtedy można zwolnić potwierdzoną część kopii. |
SND.NXT | Pozycja kolejnych nowych danych do wysłania. | Wyznacza SEQ nowych danych; ponowienie starszego zakresu nie dodaje jego długości drugi raz. |
Przykład: SND.UNA=1501, SND.NXT=3501. Nadawca ma 2000 B niepotwierdzonych kumulacyjnie, choć dzięki SACK może wiedzieć, że część dotarła. Po ACK 3501 ten zakres znika z kolejki retransmisji. W pełnym protokole numery porównuje się w arytmetyce sekwencyjnej modulo , nie przez zwykłe porównanie liczb ze znakiem. Wireshark często pokazuje numery względne, przesunięte względem osobnego ISN każdego kierunku.
Co dokładnie uruchamia powtórzenie?
- Timer RTO. Gdy wysłano niepotwierdzone dane, działa timer retransmisji. Postępujący ACK uruchamia go ponownie dla pozostałych danych; po potwierdzeniu wszystkich jest zatrzymywany. Po wygaśnięciu ponawiamy najwcześniejsze niepotwierdzone dane, podwajamy RTO i ponownie odmierzamy czas. Duplikat ACK nie powinien bez końca odsuwać tego terminu.
- Fast retransmit. W klasycznym Reno trzy dodatkowe duplikaty ACK tej samej luki, po wcześniejszym ACK o tej wartości, uruchamiają szybsze ponowienie. To nie „trzy ACK łącznie”. Pojedynczy późniejszy segment może nie dostarczyć takiej liczby wskazówek.
- Nowsze odzyskiwanie. SACK oraz RACK/TLP pozwalają inaczej ustalać brakujące dane, także przy stracie końca krótkiej transmisji. Nie każda retransmisja współczesnego systemu musi wynikać z dokładnie trzech duplikatów.
Nie każde dwa segmenty o tym samym ACK są duplikatami liczącymi się do progu Reno: znaczenie mają także dane, flagi i zmiana Window. Zmiana kolejności pakietów może pozornie wyglądać jak strata. Jeśli to ACK zginęło, późniejsze kumulacyjne ACK może wystarczyć bez powtórzenia. Jeśli powtórzenie już nastąpiło, odbiorca rozpoznaje te same numery i nie dostarcza aplikacji drugi raz tych samych bajtów.
RTO: nie ustawiamy jednego limitu czasu oczekiwania dla całego Internetu
Niech będzie nowym pomiarem RTT, wygładzonym oszacowaniem RTT, wygładzoną miarą jego odchylenia, a rozdzielczością zegara. RTTVAR, mimo nazwy, ma jednostkę czasu i nie jest wariancją w sensie „sekundy do kwadratu”.
Aktualizujemy RTTVAR przy użyciu poprzedniej wartości SRTT, dopiero potem SRTT. Dla pierwszej próbki ustawiamy SRTT = R i RTTVAR = R/2. Reguły RFC 6298 obejmują też początkowe RTO oraz zalecany dolny limit 1 s; nie jest to twierdzenie, że każdy współczesny system używa dokładnie takich samych limitów. Po wygaśnięciu RTO i retransmisji stosuje się wykładnicze wydłużanie oczekiwania. RFC 6298.
Reguła Karna: po retransmisji nie wiemy, czy ACK dotyczy pierwszego wysłania, czy powtórki. Takiego niejednoznacznego pomiaru nie używamy do estymacji RTT. Znaczniki czasu TCP mogą usuwać tę niejednoznaczność, jeśli są odpowiednio obsługiwane. Pomiar RTT i kontrola przeciążenia współpracują, ale są różnymi algorytmami.
17.2 · Kontrola przepływu: ochrona odbiorcy
Odbiorca może odbierać szybciej, niż jego aplikacja odczytuje. Window zapobiega przepełnieniu jego bufora: wskazuje liczbę pozycji od ogłoszonego ACK, które odbiorca dopuszcza do przyjęcia. Przy ACK 1501 i oknie 2000 B zakres odbioru to [1501, 3501). Jeśli 1500 B tego limitu jest już wysłane, nie oznacza to zgody na kolejne 2000 B.
To okno przesuwne, a nie potwierdzenie każdego segmentu przed następnym. Odczyt aplikacji zwalnia miejsce; odbiorca może ogłosić większe okno. Sam wzrost ACK nie dowodzi opróżnienia bufora: dane mogły tylko stać się ciągłe i nadal czekać na aplikację. Płynność wynika z odpowiedniej liczby danych w drodze, ale TCP nie obiecuje stałego tempa, maksymalnego opóźnienia ani rezerwacji pasma.
Okno odbiorcy i dane w drodze
Oznaczmy przez okno ogłoszone przez odbiorcę, przez ograniczenie przeciążeniowe nadawcy, a przez liczbę wysłanych, jeszcze niepotwierdzonych bajtów. W uproszczonym modelu ilość nowych danych do wysłania ogranicza:
To nie jest pełny algorytm TCP: pomijamy m.in. pacing, stan retransmisji i szczegóły krawędzi okna. Wyjaśnia jednak ważną rzecz: samo min(cwnd, rwnd) nie jest liczbą dodatkowych bajtów, które wolno wysłać, jeśli część limitu zajmują już dane w drodze.
Limit to 8000 B. Po odjęciu 5000 B w drodze pozostaje 3000 B nowych danych. Ogranicza okno przeciążeniowe.
Iloczyn szybkości wąskiego gardła i RTT daje BDP, czyli ilość danych potrzebną do wypełnienia drogi: . Symbol oznacza tutaj przepustowość w bit/s, nie wcześniejszą próbkę czasu . Przy 100 Mb/s i 40 ms to 4 Mb, czyli 500 000 B. Okno 65 535 B ograniczałoby idealny strumień do około 13,1 Mb/s. Dlatego opcja Window Scale uzgadnia wykładnik od 0 do 14: pole Window mnożymy przez odpowiednią potęgę dwójki. Skalowanie nie dotyczy samego pola Window w segmentach SYN. RFC 7323.
Zerowe okno i małe segmenty
Gdy aplikacja odbiorcy nie opróżnia bufora, odbiorca może ogłosić zerowe okno. Nadawca wstrzymuje nowe dane i okresowo sonduje stan, aby utrata informacji o ponownym otwarciu okna nie zablokowała połączenia na zawsze. To ochrona odbiorcy, nie dowód przeciążenia routera.
Silly Window Syndrome oznacza nieefektywną wymianę bardzo małych porcji danych. Po stronie odbiorcy reguła Clarka unika ogłaszania drobnych przyrostów wolnego miejsca. Po stronie nadawcy algorytm Nagle'a zwykle wstrzymuje małe wysłanie, gdy poprzednie dane pozostają niepotwierdzone, do czasu ACK albo zebrania pełniejszego segmentu. TCP_NODELAY wyłącza ten mechanizm dla połączenia, ale nie tworzy granic wiadomości. Algorytm Nagle'a, RFC 896.
Delayed ACK opóźnia część potwierdzeń, aby zmniejszyć ich liczbę lub połączyć je z danymi w przeciwnym kierunku. Nie jest tym samym co reguła Clarka. Interakcja delayed ACK z małymi wysłaniami i Naglem może pogorszyć opóźnienie aplikacji. Najpierw sprawdzamy przebieg i strukturę wysłań, zamiast automatycznie wyłączać wszystkie mechanizmy.
Przykład skalowania: odbiorca ogłosił w SYN przesunięcie 3. Jego późniejsze Window=4096 oznacza 32 768 B, a nie 4096 B. Drugi kierunek może mieć inne przesunięcie. Aby odtworzyć skalę z PCAP, przechwytujemy także SYN/SYN-ACK. Sonda zerowego okna (persist) i opcjonalny keepalive to różne mechanizmy: pierwsza zapobiega utknięciu po utracie aktualizacji okna, drugi bada bezczynne połączenie.
17.3 · Kontrola przeciążenia: ochrona wspólnej drogi
rwnd chroni odbiorcę, cwnd ogranicza obciążenie sieci. Nawet pusty bufor serwera nie oznacza wolnej kolejki routera. cwnd i ssthresh są stanem nadawcy, nie polami nagłówka. Nadawca aktualizuje je na podstawie ACK, strat, upływu czasu i ewentualnych sygnałów ECN. Port nie uzgadnia Reno, CUBIC ani BBR z odbiorcą.
ACK zwalniają zajęty limit, więc mogą taktować dalsze wysyłanie (ACK clock). Pacing rozkłada dopuszczone dane w czasie, aby nie wysyłać wszystkiego jednym skokiem. To osobne reguły: okno określa objętość, pacing tempo. Zmniejszenie cwnd nie usuwa pakietów już znajdujących się w sieci.
Slow start, unikanie przeciążenia i odzyskiwanie
W modelu Reno zmienna rozdziela slow start od ostrożniejszego wzrostu. MSS jest limitem danych TCP ogłaszanym przez partnera dla odbierania w danym kierunku; rozmiar wysyłania ogranicza również MTU drogi. W algorytmach nadawcy SMSS oznacza największy używany przez niego segment danych. Poniżej skrót MSS odnosi się do tego rozmiaru, nie długości nagłówków.
| Stan lub zdarzenie | Reakcja |
|---|---|
| Slow start | Okno rośnie wraz z ACK nowych danych, w przybliżeniu wykładniczo w kolejnych RTT. „Slow” oznacza start od ograniczonego obciążenia, nie liniowy przyrost. |
| Congestion avoidance | Wzrost około jednego MSS na RTT, przy odpowiedniej liczbie ACK. To ostrożne badanie dostępnej przepustowości. |
| Trzy zduplikowane ACK | Fast retransmit wysyła brakujące dane przed upływem czasu oczekiwania. Reno zmniejsza próg i przechodzi przez fast recovery, zamiast zaczynać wszystko od nowa. |
| Wygaśnięcie RTO | Próg zależy od ilości danych w drodze; okno przeciążeniowe ogranicza się do najwyżej jednego pełnego segmentu w modelu RFC 5681. To nie reset do dowolnego dużego okna początkowego. |
W przykładzie Reno z 20 MSS w drodze próg po stracie wynosi zwykle 10 MSS (co najmniej 2 MSS). Przy wejściu w fast recovery po trzech duplikatach ACK okno jest przejściowo ustawiane na próg plus 3 MSS. Po odpowiednim ACK wraca do progu. NewReno lepiej obsługuje kilka strat w jednym oknie, pozostając w odzyskiwaniu do potwierdzenia danych objętych tym etapem. SACK dostarcza jeszcze dokładniejszy obraz luk.
Duplikaty ACK są przesłanką, nie matematycznym dowodem utraty: mogą wynikać z zmiany kolejności dostarczenia pakietów. Nowsze mechanizmy, np. RACK, wykorzystują też czas dostarczenia. Okno początkowe i okno po przekroczeniu czasu oczekiwania na potwierdzenie są różnymi pojęciami; propozycja IW10 pochodzi z osobnego RFC 6928, nie z dowolnego podstawienia do reguł RFC 5681.
Kontrola przeciążenia, RFC 5681; NewReno, RFC 6582; RACK, RFC 8985; okno początkowe, RFC 6928.
ECN, CUBIC i BBR
ECN pozwala routerowi oznaczyć przeciążenie w nagłówku IP zamiast od razu odrzucać pakiet, jeśli końce uzgodniły odpowiednią obsługę. W klasycznym TCP odbiorca sygnalizuje zdarzenie przez ECE, a nadawca reaguje i informuje o reakcji przez CWR. Nie każdy router musi obsługiwać ECN, a silne przeciążenie nadal może powodować straty. RFC 3168.
- IP: pakiet z ECT(0) lub ECT(1) może być oznaczony CE przez węzeł sygnalizujący przeciążenie.
- TCP odbiorcy: klasyczne ECE informuje o odebraniu oznaczenia, nie o luce w numerach bajtów.
- Nadawca: zmniejsza obciążenie i sygnalizuje CWR. Dane dostarczone z CE nie wymagają retransmisji tylko dlatego, że wystąpiło oznaczenie.
AccECN rozszerza informację zwrotną o dokładniejsze liczniki. Po odpowiedniej negocjacji wykorzystuje AE oraz zmienioną interpretację ECE/CWR i opcjonalne dodatkowe pola. Dlatego nie wolno stosować klasycznej interpretacji pojedynczych flag do każdego przechwycenia. Mechanizm sprzężenia zwrotnego i algorytm wyboru szybkości nadal są odrębnymi elementami. AccECN, RFC 9768.
CUBIC zmienia okno według funkcji sześciennej czasu od zdarzenia przeciążenia. W pobliżu poprzedniego maksimum wzrost jest łagodniejszy, a poza nim algorytm sprawdza możliwość wykorzystania większego pasma. Nie należy opisywać wszystkich współczesnych połączeń jako liniowego Reno. CUBIC, RFC 9438.
BBR buduje model przepustowości wąskiego gardła i czasu propagacji na podstawie obserwacji dostarczania. Steruje tempem wysyłania (pacing) i ilością danych w drodze. Tempo ma jednostkę bit/s, a BDP ma jednostkę bitów. Nie wysyła się więc „z szybkością równą BDP”. Poszczególne wersje BBR różnią się reakcją na straty, kolejki i współdzielenie łącza. Żaden wybór algorytmu nie gwarantuje przewagi w każdej sieci. Projekt BBR i dokumentacja autorów.
Zakończenie strumienia też jest częścią protokołu
FIN zamyka jeden kierunek. Druga strona może jeszcze wysyłać własne dane, więc zamknięcie bywa połówkowe. Każdy FIN zużywa numer sekwencyjny. Stan TIME-WAIT pomaga obsłużyć końcowe retransmisje i odseparować stare segmenty. RST przerywa połączenie inaczej niż uporządkowane zamknięcie. Aplikacja powinna obsłużyć koniec strumienia, przerwanie połączenia przez RST i przekroczenie czasu oczekiwania osobno.
Sprawdź: ACK, okno czy przeciążenie?
- ACK 1501, SACK [2001, 3501): brakuje 500 B od 1501 do 2000. Nadawca nie może uznać całego strumienia do 3500 za potwierdzony kumulacyjnie.
- ACK rośnie, Window spada do zera: dane docierają, ale odbiorca nie oferuje miejsca na dalsze nowe dane. To nie musi być strata ani przeciążenie sieci.
- Duże rwnd, małe cwnd: odbiorca ma miejsce, lecz nadawca ogranicza obciążenie drogi. Cwnd nie odczytamy z pola Window.
- Brak końcowej odpowiedzi aplikacji: nawet wszystkie ACK TCP nie rozstrzygają, czy operacja została zatwierdzona. Ponowienie operacji może wymagać identyfikatora żądania i reguł idempotencji.
Ćwiczenia: analiza prefiksu, okien i przechwycenia TCP.
18 / Konfiguracja i nazwyDHCP, IPv6 i DNS krok po kroku
DHCP: adres jest dzierżawiony, a nie odgadywany
Nowy klient IPv4 często nie zna jeszcze swojej podsieci ani serwera konfiguracji. Wysyła DHCPDISCOVER, serwer proponuje DHCPOFFER, klient wybiera konfigurację przez DHCPREQUEST, a DHCPACK potwierdza dzierżawę. Oferta sama nie kończy konfiguracji. Odpowiedzi mogą dostarczać maskę, bramę, resolver DNS i czas obowiązywania parametrów.
DHCP używa UDP, zwykle portu 67 po stronie serwera i 68 po stronie klienta. Początkowa komunikacja może być rozgłoszeniowa. Router nie przekazuje zwykłego broadcastu między sieciami; DHCP relay może przekazać żądanie do serwera dla innej podsieci. Odnowienie dzierżawy nie musi powtarzać początkowych czterech wiadomości. Przy odnowieniu klient zna już serwer i używane parametry.
Pod koniec dzierżawy klient nie może zakładać, że adres pozostaje jego na zawsze. Niespójne lub obce odpowiedzi DHCP mogą zepsuć konfigurację; kontrola serwerów i funkcje ochronne przełączników są częścią administrowania LAN. DHCP, RFC 2131.
IPv6: RA, SLAAC i DHCPv6 mają różne role
Router Advertisements informują m.in. o routerze domyślnym i prefiksach na łączu. SLAAC pozwala hostowi utworzyć adres bez centralnego przydziału każdego identyfikatora interfejsu. Duplicate Address Detection sprawdza, czy proponowany adres nie jest już używany. DHCPv6 może przydzielać adresy lub dodatkowe parametry, ale w typowym modelu nie zastępuje RA jako źródła routera domyślnego. Nie jest to po prostu sekwencja DORA z IPv4.
DNS: od nazwy do rekordów
Program przekazuje nazwę do lokalnego modułu obsługi DNS (stub resolver). Ten zwykle pyta rekurencyjny serwer DNS, który wyszukuje odpowiedź w imieniu klienta. Jeśli nie ma jej w pamięci podręcznej, może kolejno otrzymać wskazania od serwerów strefy głównej, domeny najwyższego poziomu i serwerów autorytatywnych właściwej strefy. Klient nie musi samodzielnie kontaktować się z każdym z tych serwerów. Model DNS, RFC 1034.
| Typ | Znaczenie | Przykład zastosowania |
|---|---|---|
| A / AAAA | Adres IPv4 / IPv6. | Połączenie z usługą WWW. |
| CNAME | Alias nazwy. | Odesłanie do nazwy kanonicznej, nie przekierowanie HTTP. |
| MX | Serwer poczty dla domeny i preferencja. | Wybór drogi przez nadawcę poczty. |
| NS / SOA | Serwery strefy / parametry i identyfikacja strefy. | Delegacja i administracja DNS. |
| TXT | Dane tekstowe o uzgodnionej semantyce. | Polityki pocztowe SPF i DMARC. |
| PTR | Nazwa wskazywana dla adresu w strefie odwrotnej. | Diagnostyka i niektóre kontrole pocztowe. |
TTL rekordu ogranicza czas przechowywania w pamięci podręcznej. Nie jest polem TTL pakietu IP. Rekord może mieć kilka wartości, a brak wyniku może znaczyć nieistniejącą nazwę (NXDOMAIN), brak danego typu albo błąd serwera. To różne sytuacje. DNS używa UDP i TCP na porcie 53; stwierdzenie „DNS działa tylko na UDP” jest błędne. Duże odpowiedzi i inne okoliczności mogą wymagać TCP.
DNSSEC uwierzytelnia dane DNS w łańcuchu zaufania, ale nie szyfruje zapytań. DoT i DoH chronią transport do resolvera odpowiednio przez TLS lub HTTPS. To nie jest to samo co weryfikacja poprawności odpowiedzi ze strefy. DNSSEC, DoT, DoH.
dig example.org A
dig example.org AAAA
dig example.org MX
Polecenia wykonują prawdziwe zapytania DNS, ale nie skanowanie. Porównaj typ odpowiedzi, TTL i serwer, który jej udzielił. Nie oczekuj stałych adresów na zawsze; właśnie dlatego używamy nazw.
19 / UsługiOd konfiguracji hosta do odpowiedzi HTTP
Przy wejściu na adres HTTPS przeglądarka potrzebuje adresu usługi, połączenia transportowego i ochrony kryptograficznej. W HTTPS serwer przedstawia poświadczenie, którego nazwę i zaufanie klient musi sprawdzić. TLS chroni dane transmisji, lecz nie gwarantuje uczciwości treści publikowanej przez serwer. TLS 1.3: RFC 8446.
| Wersja | Organizacja | Na co uważać podczas analizy? |
|---|---|---|
| HTTP/1.1 | Tekstowa linia startowa i nagłówki; dane mogą być binarne. | Granice treści wynikają z reguł protokołu, np. Content-Length. |
| HTTP/2 | Binarne ramki, wiele strumieni na połączeniu TCP. | Nie szukaj linii GET w każdym pakiecie sieciowym. |
| HTTP/3 | Strumienie QUIC na UDP z ochroną opartą na TLS 1.3. | UDP nie oznacza tu braku niezawodnego dostarczania strumienia. |
GET pobiera reprezentację zasobu; POST przekazuje dane do przetworzenia zgodnie z semantyką zasobu. Kod 200 oznacza powodzenie, 404 brak znalezionego zasobu, a 500 błąd serwera. Metoda, status i nagłówki opisują znaczenie wiadomości niezależnie od wersji transportu. Semantyka HTTP: RFC 9110, QUIC: RFC 9000.
Minimalna wymiana HTTP/1.1
GET / HTTP/1.1\r\n
Host: localhost:8000\r\n
Connection: close\r\n
\r\n
HTTP/1.1 200 OK\r\n
Content-Type: text/plain; charset=utf-8\r\n
Content-Length: 3\r\n
Connection: close\r\n
\r\n
OK\nZnaki \r\n w schemacie oznaczają bajty CRLF, nie dosłowny ukośnik i litery. Pusta linia zamyka nagłówki. Treść OK\n zajmuje trzy bajty. Content-Length liczymy w bajtach, nie w znakach Unicode. Reguły kodowania wiadomości opisuje RFC 9112.
Pełne otwarcie strony HTTPS
- Host ma konfigurację IP i trasę. Resolver ustala adres usługi, o ile nie jest dostępny w pamięci podręcznej.
- Dla HTTPS po TCP klient zestawia TCP, następnie negocjuje TLS i weryfikuje nazwę oraz zaufanie do certyfikatu. HTTP/3 korzysta z QUIC, gdzie transport i TLS są powiązane inaczej.
- Klient wysyła metodę, cel żądania i nagłówki. Serwer rozstrzyga żądanie i odsyła status, nagłówki i ewentualną treść.
- HTML może wskazać dalsze zasoby: CSS, skrypty i obrazy. Nie każda z tych operacji musi tworzyć nowe połączenie lub ponawiać DNS.
W HTTP/2 wiele strumieni współdzieli TCP. Utrata bajtów TCP może wstrzymywać dostarczenie danych wszystkich strumieni zależnych od tej luki. QUIC ma niezależne uporządkowanie w obrębie strumieni, więc utrata danych jednego strumienia nie musi blokować pozostałych w taki sam sposób. Nadal współdzielą jednak zasoby i kontrolę przeciążenia. HTTP/2; HTTP/3.
Cache, sesja i bezpieczeństwo przeglądarki
HTTP jest protokołem bezstanowym w sensie semantyki kolejnych żądań, ale aplikacja może utrzymywać sesję. Cookie jest mechanizmem przesyłania danych pomiędzy przeglądarką a serwerem według reguł domeny, ścieżki i atrybutów. Secure ogranicza wysyłanie do bezpiecznego transportu, HttpOnly dostęp skryptu do cookie, a SameSite reguluje wybrane sytuacje między witrynami. To różne zabezpieczenia.
Cache-Control określa zasady korzystania z pamięci podręcznej, a ETag identyfikuje wersję reprezentacji. Żądanie warunkowe może otrzymać 304 zamiast ponownego przesłania całej treści. Nie należy przechowywać w pamięci podręcznej odpowiedzi prywatnej tak, jak publicznego obrazka. Status HTTP i powodzenie operacji aplikacji również trzeba rozróżniać: odpowiedź 200 może zawierać wynik aplikacyjny informujący o odmowie. Cache HTTP, RFC 9111.
20 / Bezpieczeństwo InternetuCo chronimy, między kim i jakim protokołem?
Najpierw wskazujemy zagrożenie: podsłuch, zmianę danych, podszywanie się, powtórzenie starego komunikatu lub zablokowanie usługi. Następnie określamy końce ochrony. Zaszyfrowany odcinek do punktu dostępowego, tunel do bramy firmy i połączenie HTTPS do serwera to trzy różne granice zaufania.
| Mechanizm i miejsce | Co zapewnia? | Gdzie ochrona się kończy? |
|---|---|---|
| WPA2/WPA3, łącze Wi-Fi | Kontrola dostępu i ochrona ramek na łączu radiowym, zależnie od trybu i konfiguracji. | Na końcu chronionego łącza, zwykle w AP. Nie zastępuje HTTPS. |
| IPsec, poziom IP | Ochrona wybranych pakietów między hostami lub bramami, zgodnie z polityką i skojarzeniami bezpieczeństwa. | Na końcu danego skojarzenia, np. w bramie VPN, nie automatycznie w aplikacji docelowej. |
| TLS nad TCP, np. HTTPS | Poufność i integralność rekordów oraz uwierzytelnienie partnera zgodnie z użytym trybem, zwykle certyfikatem serwera. | W końcu TLS. Reverse proxy kończące TLS otrzymuje tekst jawny. |
| SSH nad TCP | Chroniony kanał do zdalnego hosta, uwierzytelnienie hosta i użytkownika, kanały sesji i przekierowań. | Na serwerze SSH. Dalszy odcinek przekierowania potrzebuje własnej ochrony. |
| DNSSEC oraz DoT/DoH | DNSSEC uwierzytelnia dane DNS; DoT/DoH szyfrują transport do resolvera. | Podpis danych i poufność zapytania to różne własności; żadna nie wynika automatycznie z drugiej. |
| S/MIME, OpenPGP, poziom wiadomości | Szyfrowanie lub podpis wiadomości niezależnie od kolejnych połączeń transportowych. | U odbiorcy posiadającego właściwy klucz, przy poprawnej weryfikacji tożsamości. |
CRC i checksum nie są kodami uwierzytelniającymi. Napastnik może zmienić wiadomość i obliczyć nową sumę. Kryptograficzny MAC lub AEAD używa tajnego klucza, a podpis klucza prywatnego. Skrót „MAC” oznacza tu Message Authentication Code, nie adres interfejsu Ethernet. Nawet poprawna kryptografia nie naprawi błędnej autoryzacji ani przejętego komputera.
SSL i TLS: nazwy, klucze i uwierzytelnienie
SSL jest historycznym poprzednikiem TLS. Określenie „certyfikat SSL” funkcjonuje potocznie, lecz w ćwiczeniu używamy TLS. SSLv2, SSLv3 oraz TLS 1.0/1.1 nie są wariantami do uruchamiania nowej bezpiecznej usługi. Stosujemy TLS 1.3, a TLS 1.2 tylko w poprawnej, nadal uzasadnionej konfiguracji. Numer portu 443 sam tego nie dowodzi. Zalecenia TLS, RFC 9325.
| Obiekt | Rola | Czy można go ujawnić? |
|---|---|---|
| Klucz prywatny serwera | W typowym certyfikatowym TLS 1.3 służy podpisaniu transkryptu handshake. Serwer wykazuje posiadanie klucza powiązanego z certyfikatem. | Nie. Nie trafia do CSR ani do certyfikatu. |
| Klucz publiczny i certyfikat X.509 | Certyfikat wiąże klucz z nazwami i ograniczeniami, z podpisem wystawcy. | Tak. Publiczność nie oznacza automatycznego zaufania. |
| CSR | Żądanie wystawienia certyfikatu: klucz publiczny, żądane atrybuty i podpis wnioskodawcy. | Nie zawiera klucza prywatnego, ale może ujawniać nazwy i dane organizacji. Sam podpis CSR nie potwierdza prawa do domeny. |
| Efemeryczne sekrety (EC)DHE | Uzgadniają wspólny sekret; z niego i transkryptu wyprowadza się klucze ruchu. | Nie. Ich poprawne usunięcie wspiera poufność wcześniejszych sesji po późniejszym wycieku klucza tożsamości. |
| Klucze ruchu | Symetryczna ochrona AEAD rekordów, osobno dla kierunków i etapów protokołu. | Nie. Eksport do key logu umożliwia odszyfrowanie odpowiednich przechwyceń. |
Przykładowy pełny handshake TLS 1.3 nad TCP
- ClientHello: klient proponuje wersje, zestawy szyfrów, grupy i udział klucza; rozszerzenia mogą wskazać nazwę serwera (SNI) oraz protokół aplikacyjny (ALPN).
- ServerHello: serwer wybiera parametry i wysyła swój udział. Strony wyprowadzają klucze handshake. W typowym pełnym przebiegu dalsze wiadomości handshake serwera są już szyfrowane.
- Certificate i CertificateVerify: certyfikat przedstawia poświadczenie, a podpis wiąże bieżącą wymianę z kluczem serwera. Klient sprawdza ścieżkę zaufania, nazwę usługi, ważność i przeznaczenie certyfikatu.
- Finished: strony sprawdzają kryptograficzne potwierdzenie transkryptu i uzgodnionych sekretów. Następuje ochrona danych aplikacji kluczami ruchu.
To przebieg certyfikatowy bez resumption i 0-RTT. TLS nie polega na szyfrowaniu całej strony kluczem publicznym serwera. Uwierzytelnienie klienta certyfikatem jest opcjonalne; zwykłe HTTPS nie zastępuje logowania i autoryzacji użytkownika. Dane 0-RTT przy wznowieniu wymagają osobnej analizy ryzyka replay. TLS 1.3, RFC 8446.
Nazwa i zaufanie muszą być sprawdzone osobno
Zaufany wystawca nie wystarcza, jeśli certyfikat jest dla innej usługi. Współczesna weryfikacja nazwy wykorzystuje odpowiednie wpisy Subject Alternative Name, np. DNS-ID lub IP-ID, a nie sam napis Common Name. SNI wybiera usługę po stronie serwera; nie jest wykonaniem weryfikacji nazwy przez klienta. Certyfikat samopodpisany może być lokalnym punktem zaufania, ale tylko po bezpiecznym, świadomym ustanowieniu tego zaufania. Tożsamość usługi, RFC 9525.
W laboratorium jawnie podajemy własny certyfikat CA jednemu klientowi. Nie dodajemy laboratoryjnego CA do systemowego magazynu. curl -k lub wyłączenie walidacji certyfikatu usuwa ważną część ochrony; nie jest rozwiązaniem błędu nazwy ani zaufania.
Telnet a SSH: szyfrowanie to nie jedyna różnica
Podstawowy Telnet jest protokołem zdalnego terminala i negocjacji jego opcji, nie bezpiecznym kanałem. W zwykłej konfiguracji tekst i hasło mogą być widoczne w przechwyceniu. Nie zaliczamy go do protokołów zapewniających poufność. SSH zapewnia chroniony transport, uwierzytelnienie serwera, a następnie użytkownika oraz kanały dla sesji i przekierowań. Telnet, RFC 854; SSH, RFC 4251.
- Klucz hosta: klient sprawdza, czy łączy się z właściwym serwerem. W OpenSSH pomaga wpis w
known_hosts; przy pierwszym połączeniu odcisk należy porównać niezależnym kanałem. Bezmyślne zaakceptowanie nowego klucza pozwala zaufać pośrednikowi. - Klucz użytkownika: prywatny pozostaje u klienta. Serwer może przechowywać dozwolony klucz publiczny w
authorized_keys. Dowód posiadania klucza prywatnego jest związany z sesją, nie polega na wysłaniu pliku klucza. - Klucze sesji: szyfrują kanał symetrycznie. Hasło chroniące plik klucza prywatnego nie jest tym samym co hasło konta na serwerze.
- SFTP: transfer plików przez SSH. Nie jest FTP ani FTPS, czyli FTP zabezpieczonym TLS.
Zmiana klucza hosta może być prawidłowo przeprowadzoną reinstalacją albo sygnałem ataku. Wyjaśniamy przyczynę, zamiast automatycznie kasować wpis. Dokumentacja: OpenSSH ssh i ssh-keygen.
IPsec: polityka, skojarzenie bezpieczeństwa i pakiet
IPsec chroni ruch wybrany przez politykę IP, bez wymagania osobnej implementacji kryptografii w każdej aplikacji. SPD (Security Policy Database) określa, który ruch odrzucić, przepuścić bez IPsec lub chronić. SA (Security Association) opisuje ochronę w jednym kierunku: algorytmy, klucze, liczniki i ograniczenia czasu użycia. Typowa komunikacja dwukierunkowa potrzebuje oddzielnych SA. SAD przechowuje ich stan. Architektura IPsec, RFC 4301.
| Element | Co jest przesyłane? | Decyzja odbiorcy |
|---|---|---|
| ESP | SPI wybierające SA, numer sekwencyjny, chroniona zawartość i informacje zależne od zestawu kryptograficznego, np. znacznik AEAD. | Wybór kluczy, sprawdzenie integralności i polityki, ewentualne odszyfrowanie; nie wystarczy rozpoznać protokół IP 50. |
| Anti-replay | Numer sekwencyjny ESP, nie numer bajtu TCP. | Przesuwne okno wykrywa ponowione chronione pakiety, tolerując ograniczone przestawienie. To nie ACK ani retransmisja. Stan okna musi być związany z poprawnym uwierzytelnieniem. |
| AH | Uwierzytelnienie i integralność obejmujące również określone niezmienne lub przewidywalne pola IP; protokół IP 51. | AH nie szyfruje. Zmiana chronionych adresów przez NAT koliduje z jego ochroną. |
| IKEv2 | Negocjacja parametrów, udziały wymiany klucza, nonce, tożsamości i uwierzytelnienie zgodnie z trybem. | Ustanowienie IKE SA oraz Child SA dla ruchu. Znajomość adresu bramy nie zastępuje weryfikacji poświadczeń. |
ESP może zapewniać różne zestawy usług; do poufności i integralności wybieramy konfigurację z obydwiema, zwykle AEAD. Sam napis „ESP” nie dowodzi, że nie wybrano wariantu bez szyfrowania. Anti-replay działa dla danego SA, a nie globalnie dla całej sieci. ESP, RFC 4303; AH, RFC 4302.
W typowym IKEv2 wymiana IKE_SA_INIT uzgadnia parametry i materiał do wyprowadzenia kluczy, a IKE_AUTH uwierzytelnia partnerów oraz ustanawia pierwszy Child SA. Sam Diffie–Hellman bez uwierzytelnienia nie chroni przed aktywnym pośrednikiem. IKE zwykle używa UDP 500; obsługa NAT może przenieść IKE i kapsułkowany ESP na UDP 4500. Kolejne Child SA można odnawiać bez utożsamiania ich z jednym wiecznym kluczem. IKEv2, RFC 7296; ESP w UDP, RFC 3948.
Tunel: opakowanie, droga i granica ochrony
- Tryb transportowy IPsec: zewnętrzny nagłówek IP pozostaje podstawą routingu; ESP chroni zawartość ponad IP. Ochrona zwykle łączy hosty.
- Tryb tunelowy IPsec: wewnętrzny pakiet IP staje się ładunkiem nowego pakietu między końcami tunelu. Bramy mogą chronić ruch hostów, które same nie obsługują IPsec.
- Przekierowanie SSH: wybrane połączenie TCP jest przenoszone kanałem SSH. Przy lokalnym
-Lport nasłuchuje u klienta; połączenie do wskazanego celu otwiera serwer SSH. Adres127.0.0.1po stronie celu oznacza wtedy serwer, nie komputer klienta. - Sam tunel nie musi szyfrować. IP-in-IP i GRE są przykładami kapsułkowania, a nie automatycznej ochrony kryptograficznej. VPN określa sposób organizacji połączenia; trzeba jeszcze wskazać protokół, klucze, uwierzytelnienie i politykę ruchu.
Przykładowy ESP tunelowy ma strukturę zewnętrzne IP | ESP: SPI, Seq | chronione: wewnętrzne IP, TCP, dane | trailer i tag. Pola końcowe (trailer) opisują m.in. dopełnienie, a znacznik uwierzytelnienia (tag) pozwala sprawdzić integralność chronionych danych. Szczegóły wektora inicjującego (IV) i dopełnienia zależą od algorytmu. Dodatkowe bajty zmniejszają miejsce na ładunek przy tym samym MTU. Błędy PMTUD mogą więc ujawnić się dopiero po włączeniu tunelu. Tryby IPsec; kanały przekierowań SSH.
Tunel nie jest obejściem polityki dostępu. W ćwiczeniach oba końce i usługa należą do laboratorium. Nasłuch lokalny wiążemy z loopback, aby nie udostępnić przekierowania innym hostom. Zapora, minimalne uprawnienia i aktualizacje nadal są potrzebne. Żaden z tych protokołów nie uniemożliwia odcięcia łącza ani wszystkich ataków na dostępność.
Sprawdź granice ochrony
- HTTPS przez firmowy VPN: IPsec może kończyć się na bramie, a TLS dopiero na serwerze. Odszyfrowanie IPsec nie musi odsłonić treści HTTPS.
- Poprawny certyfikat dla innej domeny: klient odrzuca połączenie mimo zaufanego wystawcy.
- Tunel SSH do jawnego HTTP na innym hoście: odcinek od serwera SSH do tego hosta nie jest chroniony samym SSH.
- ACK TCP po odebraniu rekordu TLS: nie potwierdza jeszcze poprawnego odszyfrowania, autoryzacji ani wykonania operacji.
Laboratorium: klucze, CSR, lokalne CA, walidacja TLS i przekierowanie SSH.
21 / Poczta elektronicznaOd „Wyślij” do skrzynki odbiorcy
Adres anna@example.org łączy część lokalną anna z domeną example.org. Domena pomaga odnaleźć serwery obsługujące pocztę. Interpretacja części lokalnej należy do systemu odbiorcy: może wskazywać skrzynkę, alias, listę adresową albo regułę przekazania.
Klient pocztowy nie musi być stale uruchomiony, aby poczta dotarła. Serwery przechowują wiadomości i kolejki. Telefon, program na laptopie i webmail są różnymi sposobami korzystania z tej samej usługi, a nie trzema niezależnymi adresatami tego samego listu.
- Klient nadawcyMUA
- Serwer zgłoszeniowyMSA
- Transport i MXMTA → MTA
- DostarczenieMDA → skrzynka
- Klient odbiorcyIMAP / webmail
Klient (MUA) tworzy nagłówki i treść, a następnie zgłasza wiadomość skonfigurowanemu serwerowi wysyłania. Nie szuka skrzynki odbiorcy przez IMAP.
Role serwerów i wybór drogi
MUA (Mail User Agent) to klient użytkownika. Przekazuje list do MSA (Mail Submission Agent), zwykle po uwierzytelnieniu. MSA sprawdza uprawnienia i przyjmuje wiadomość do dalszej obsługi. MTA (Mail Transfer Agent) przesyła ją między systemami pocztowymi. MDA (Mail Delivery Agent) realizuje końcowe dostarczenie do magazynu wiadomości. Architektura poczty, RFC 5598.
MTA nadawcy pyta DNS o MX domeny odbiorcy. Rekord MX wskazuje nazwę serwera i liczbę określającą preferencję; niższa liczba oznacza wyższą preferencję. Nazwa serwera wymaga następnie rozwiązania do adresu. Kilka rekordów może zapewniać alternatywne drogi. MX nie jest adresem serwera IMAP ani adresem logowania użytkownika.
Gdy nie ma rekordu MX, SMTP przewiduje w określonych warunkach próbę użycia adresu samej domeny. Jawny Null MX oznacza natomiast, że domena nie przyjmuje poczty. Nie należy zastępować tego rozróżnienia zasadą „każda domena ma serwer pocztowy”. SMTP, RFC 5321; Null MX, RFC 7505.
SMTP: koperta i treść to osobne rzeczy
W uproszczonej wymianie klient przedstawia się przez EHLO, określa nadawcę koperty poleceniem MAIL FROM, dodaje odbiorców przez RCPT TO i przekazuje zawartość po DATA. Nagłówki From: i To: są częścią zawartości. Nie wyznaczają same, dokąd serwer ma dostarczyć list. Kopia Bcc może mieć odbiorcę w kopercie bez ujawniania go w nagłówku wiadomości.
C: EHLO mail.example.org
S: 250 ...
C: MAIL FROM:<anna@example.org>
S: 250 OK
C: RCPT TO:<jan@example.net>
S: 250 OK
C: DATA
S: 354 End data with <CRLF>.<CRLF>
C: From: Anna <anna@example.org>
C: To: Jan <jan@example.net>
C: Subject: Spotkanie
C:
C: Spotkanie o 12:00.
C: .
S: 250 Queued
C: i S: oznaczają strony rozmowy i nie należą do przesyłanych bajtów. Pominięto powitanie, TLS, uwierzytelnianie i zakończenie sesji. Po DATA treść kończy linia z samą kropką. Linie treści zaczynające się kropką wymagają podwojenia tej kropki (dot-stuffing), aby nie zostały odczytane jako znacznik końca. To ilustracja ramkowania protokołu aplikacyjnego na strumieniu TCP.
Odpowiedź 250 po treści oznacza przyjęcie odpowiedzialności za dalszą obsługę, nie przeczytanie listu. Błąd 4xx jest przejściowy i może prowadzić do ponowienia z kolejki. Błąd 5xx zwykle oznacza trwałą odmowę na danym etapie. Późniejszy błąd doręczenia może spowodować raport zwrotny. Nadawca aplikacyjny musi uwzględniać również sytuację, w której serwer przyjął dane, ale odpowiedź zginęła.
Format listu i załączniki
Nagłówki kończą się pustą linią, po której zaczyna się treść. Message-ID identyfikuje wiadomość, ale nie jest dowodem autentyczności. Kolejne serwery dopisują nagłówki Received, które pomagają odtworzyć drogę; nie ufamy bezkrytycznie części dostarczonej przez nieznanego nadawcę. Widoczna nazwa w From może zostać podszyta. Format wiadomości, RFC 5322.
MIME opisuje typy treści, kodowania i wiadomości wieloczęściowe. Wariant multipart/alternative może nieść tekst zwykły i HTML tej samej wiadomości. multipart/mixed może zawierać treść i załączniki. Base64 zamienia bajty na reprezentację tekstową, zwykle zwiększając rozmiar około 4/3 przed dodatkowymi podziałami linii. Base64 nie szyfruje i nie chroni załącznika. MIME, RFC 2045.
Jak jest zorganizowana skrzynka?
Skrzynka jest magazynem wiadomości obsługiwanym przez serwer. Folder INBOX przechowuje zwykle nowe listy. Inne foldery mogą obejmować wysłane, szkice, archiwum, spam i kosz. Reguły dostarczania mogą od razu skierować wiadomość poza INBOX. Implementacja może korzystać z plików, bazy danych lub innego magazynu: protokół dostępu nie narzuca jednego formatu dysku.
IMAP synchronizuje foldery, wiadomości i flagi, np. przeczytana lub oznaczona gwiazdką. UID identyfikuje wiadomość w danej skrzynce razem z kontekstem UIDVALIDITY. Numer kolejny na liście może zmienić się po usunięciu wcześniejszej wiadomości. Odczyt treści może ustawić flagę przeczytania, a odpowiednia operacja typu PEEK pozwala pobrać treść bez tej zmiany. Przesunięcie do kosza i trwałe usunięcie to różne operacje. IMAP4rev2, RFC 9051.
POP3 służy prostszemu pobieraniu wiadomości. Może pozostawiać kopie na serwerze albo usuwać je zgodnie z działaniami klienta, więc zdanie „POP3 zawsze kasuje pocztę” jest nieprawdziwe. Nie daje takiego modelu wielofolderowej synchronizacji jak IMAP. Webmail jest natomiast interfejsem HTTP(S); przeglądarka nie musi sama obsługiwać protokołu IMAP. POP3, RFC 1939.
Porty i ochrona transportu
| Połączenie | Typowy port TCP | Znaczenie |
|---|---|---|
| MTA → MTA | 25 | Transport między serwerami; TLS może być negocjowany przez STARTTLS. |
| Klient → MSA | 587 / 465 | Submission: zwykle 587 z STARTTLS albo 465 z TLS od początku. |
| Klient → IMAP | 993 / 143 | 993 z TLS od początku; 143 może używać STARTTLS. |
| Klient → POP3 | 995 / 110 | 995 z TLS od początku; 110 może używać STLS. |
| Przeglądarka → webmail | 443 | HTTPS do aplikacji pocztowej. |
Port nie jest dowodem, że transmisja została prawidłowo zabezpieczona. Klient musi wymagać ochrony i sprawdzać certyfikat, zanim wyśle dane logowania. Uwierzytelnianie SMTP AUTH nie jest szyfrowaniem. OAuth może zastąpić przekazywanie hasła tokenem o określonych uprawnieniach, lecz również wymaga bezpiecznego transportu. Reguły konkretnej uczelni lub dostawcy mogą ograniczać dostęp klienta. Submission, RFC 6409; TLS przy wysyłaniu i dostępie, RFC 8314.
SPF, DKIM, DMARC i granice zaufania
SPF publikuje uprawnione źródła wysyłania dla domeny sprawdzanej w kontekście SMTP, zwykle nadawcy koperty, a nie po prostu widocznego From. DKIM dodaje podpis wybranych nagłówków i treści, sprawdzany kluczem z DNS domeny podpisującej. DMARC wiąże zgodność domeny widocznego From z pomyślnym SPF lub DKIM i publikuje politykę postępowania. Przekazywanie poczty i modyfikacje list dyskusyjnych mogą komplikować te kontrole.
Żaden z tych wyników nie dowodzi, że treść jest uczciwa ani że za wiadomością stoi wskazana osoba fizyczna. TLS między serwerami chroni kolejne połączenia, ale serwery nadal mogą przetwarzać treść. Szyfrowanie i podpisy end-to-end, np. S/MIME lub OpenPGP, dotyczą innego poziomu ochrony. SPF, DKIM, podstawowy model DMARC.
Diagnoza: gdzie zatrzymała się wiadomość?
- Sprawdź, czy klient rzeczywiście przekazał wiadomość serwerowi zgłoszeniowemu, czy pozostała w lokalnej skrzynce nadawczej.
- Odczytaj dokładny kod błędu: logowanie, odmowa odbiorcy i chwilowa niedostępność to różne przypadki.
- Sprawdź domenę odbiorcy i rekordy MX. Działająca strona WWW nie dowodzi działającej poczty tej domeny.
- Po stronie odbiorcy sprawdź także spam, reguły i limity skrzynki. Zdarzenie doręczenia nie oznacza obecności w INBOX.
- Przy analizie raportu zwrotnego nie otwieraj automatycznie jego załączników ani nie ujawniaj haseł. Raport też może być sfałszowany.
22 / ProgramowanieGniazdo jest interfejsem, nie granicą wiadomości
Serwer TCP tworzy gniazdo, przypisuje adres przez bind(), uruchamia nasłuch przez listen() i przyjmuje połączenie przez accept(). Przyjęte połączenie ma własne gniazdo. Klient używa connect(). Obie strony przesyłają bajty, a protokół aplikacyjny definiuje granice wiadomości. Python: Socket Programming HOWTO.
Odczyt może zwrócić mniej bajtów, niż oczekujesz. Pusty wynik recv() w TCP oznacza zakończenie strumienia przez drugą stronę. Program powinien obsłużyć limit rozmiaru, limit czasu, błędny format i zamknięcie połączenia. Dla wiadomości można przyjąć prefiks długości albo separator, ale trzeba rozstrzygnąć, co się stanie, gdy separator występuje w danych.
Mały eksperyment na własnym komputerze
W pustym katalogu laboratoryjnym utwórz plik index.html z krótkim tekstem. W pierwszym terminalu uruchom:
python3 -m http.server 8000 --bind 127.0.0.1W drugim terminalu odczytaj odpowiedź:
curl --http1.1 -i http://127.0.0.1:8000/
curl --http1.1 -I http://127.0.0.1:8000/
curl --http1.1 -i http://127.0.0.1:8000/brakPorównaj GET, HEAD i 404. Serwer jest narzędziem dydaktycznym, nie serwerem produkcyjnym. Wiązanie z adresem loopback ogranicza nasłuch do lokalnego komputera. Nie uruchamiaj go w katalogu zawierającym prywatne pliki.
Od AJAX i SOAP do współczesnej aplikacji
AJAX oznacza asynchroniczną wymianę danych bez przeładowania całej strony; nie wymaga XML. Historyczny XMLHttpRequest nadal istnieje, lecz w prostych nowych przykładach wygodnie użyć Fetch API. SOAP to z kolei protokół wiadomości oparty na XML. JSON przesłany przez HTTP nie staje się automatycznie REST-em: REST opisuje ograniczenia architektury, a JSON jest formatem danych.
Utwórz obok strony plik status.json o treści {"status":"gotowy"}, a na stronie element <p id="status"></p>. Wykonaj poniższy kod w skrypcie tej strony, otwartej przez lokalny serwer:
async function loadStatus() {
const output = document.querySelector('#status');
try {
const response = await fetch('./status.json');
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
output.textContent = String(data.status);
} catch (error) {
output.textContent = `Nie udało się pobrać danych: ${error.message}`;
}
}
loadStatus();fetch() nie odrzuca obietnicy tylko dlatego, że serwer zwrócił 404. Dlatego sprawdzamy response.ok. Użycie textContent nie interpretuje wyniku jako HTML. Polityka same-origin i CORS dotyczy dostępu skryptu przeglądarki do odpowiedzi; nie jest zaporą blokującą wszystkich klientów HTTP. MDN: Using Fetch.
Ramkowanie własnego protokołu
Dla prostego protokołu binarnego można poprzedzić wiadomość czterobajtową długością w sieciowej kolejności bajtów (big-endian). Odbiorca najpierw zbiera dokładnie 4 B, interpretuje długość, sprawdza limit i dopiero zbiera treść. Poniższy fragment Pythona pokazuje odczyt na już połączonym gnieździe; przed jego użyciem ustawiamy także limit czasu oczekiwania.
import struct
def recv_exact(sock, size):
data = bytearray()
while len(data) < size:
chunk = sock.recv(size - len(data))
if not chunk:
raise EOFError("Koniec strumienia przed końcem wiadomości")
data.extend(chunk)
return bytes(data)
def recv_message(sock, limit=1_048_576):
size = struct.unpack("!I", recv_exact(sock, 4))[0]
if size > limit:
raise ValueError("Wiadomość przekracza limit")
return recv_exact(sock, size)
Nadawca używa sendall(struct.pack("!I", len(payload)) + payload), gdzie payload jest obiektem bytes o dopuszczalnej długości. Nawet jeśli TCP podzieli nagłówek na dwa odczyty, pętla go złoży. Bajty nie stają się automatycznie tekstem: obie strony muszą uzgodnić kodowanie, np. UTF-8. Po błędzie formatu zamykamy połączenie lub stosujemy jawnie określoną procedurę odzyskania synchronizacji.
SOAP, REST i asynchroniczność bez skrótów myślowych
SOAP definiuje kopertę XML z elementem Body, opcjonalnym Header i reprezentacją błędu Fault. Opis WSDL może określać operacje, typy i powiązanie z transportem. SOAP może korzystać z HTTP, ale nie jest synonimem HTTP ani dowolnego XML wysłanego przez sieć.
REST to styl architektury z zasobami, jednolitym interfejsem i ograniczeniami takimi jak bezstanowość oraz możliwość przechowywania odpowiedzi w pamięci podręcznej. Przykład GET /rooms/12 pobiera reprezentację zasobu, a nie wywołuje automatycznie funkcji o nazwie „getRoom”. Format JSON nie wystarcza do zgodności z REST. W obu podejściach trzeba opisać dane wejściowe, wynik, błędy, uwierzytelnianie i limity.
Asynchroniczny Fetch pozwala obsłużyć odpowiedź bez blokowania całego interfejsu. Nie usuwa opóźnienia sieci ani nie gwarantuje, że odpowiedzi przyjdą w kolejności żądań. Aplikacja powinna zapobiegać nadpisaniu nowszego wyniku przez spóźnioną odpowiedź, obsługiwać anulowanie i odróżniać błąd sieci od statusu HTTP. Wstawianie odpowiedzi przez innerHTML zamiast textContent wymaga osobnego rozważenia zaufania do danych.
W3C, SOAP 1.2; R. Fielding, ograniczenia architektury REST; WHATWG, Fetch.
23 / LaboratoriumCo rzeczywiście widzisz w przechwyceniu?
Granice widoczne w PCAP nie są zapisem całego medium. Sprzęt rozpoznał już transmisję. Wróć do preambuły i delimiterów Ethernetu oraz pól PHY i agregacji Wi-Fi, aby odróżnić sygnał na łączu od ramki przekazanej programowi.
PCAP jest zapisem obserwacji z określonego punktu, a nie pełnym obrazem sieci. O wyniku decydują interfejs, miejsce przechwytywania, filtr, czas rozpoczęcia i uprawnienia. Na własnym hoście zobaczysz ruch loopback tylko na właściwym interfejsie loopback. Na przełączniku nie zobaczysz automatycznie wszystkich cudzych transmisji.
Przekazywanie części obliczeń karcie sieciowej (offloading) może sprawić, że przechwycony pakiet wygląda na zbyt duży albo ma pozornie błędną sumę kontrolną: część pracy wykona dopiero karta. Nie wyciągaj wniosku o błędzie na łączu wyłącznie z lokalnego przechwycenia wychodzącego ruchu. Porównaj punkt obserwacji po stronie odbiorcy, jeżeli kontrolujesz oba końce.
Bezpieczeństwo: trzy różne pytania
- Czy dane się zmieniły? Suma kontrolna wykrywa część przypadkowych uszkodzeń, ale nie uwierzytelnia nadawcy.
- Kto mógł je wysłać? Adres IP lub MAC nie jest sam w sobie dowodem tożsamości. Nagłówki można skonstruować programowo.
- Kto może je odczytać? Przechwycenie zaszyfrowanej transmisji nie oznacza poznania jej treści. Część metadanych pozostaje widoczna.
W laboratoriach Scapy najpierw budujemy i rozbieramy pakiety offline, potem obserwujemy własną wymianę. Dopiero na końcu badamy ograniczony przykład fałszywego odwzorowania ARP w sieci bez połączenia z Internetem. Każdy etap ma przewidywanie, obserwację i osobny wniosek. Przejdź do tutorialu Scapy.
24 / Cały stosJedna wiadomość, wiele różnych zadań
Wróćmy do studenta wysyłającego e-mail z laptopa przez Wi-Fi. Każdy etap rozwiązuje inny problem. Żaden pojedynczy numer IP, algorytm kodowania czy podpis DKIM nie zastępuje wszystkich pozostałych warstw.
| Poziom | Co dzieje się w tym przykładzie? | Typowe nieporozumienie |
|---|---|---|
| Sygnał | QAM i OFDM kodują symbole w sygnale radiowym; odbiornik szacuje kanał i odtwarza bity. | „Więcej MHz oznacza tyle samo Mb/s”. |
| Łącze | Wi-Fi organizuje dostęp do radia, ramki i potwierdzenia lokalne. | „Połączenie z AP oznacza działający Internet”. |
| Sieć | Pakiety IP przechodzą przez kolejne routery; adres MAC zmienia się między odpowiednimi łączami. | „Potrzebuję adresu MAC odległego serwera”. |
| Transport | TCP dostarcza strumień, steruje ilością danych i ponawia brakujące bajty strumienia. | „ACK TCP oznacza, że odbiorca przeczytał list”. |
| Ochrona połączenia | TLS zabezpiecza połączenie z serwerem pocztowym. | „TLS uniemożliwia serwerowi odczytanie listu”. |
| Aplikacja | Submission, SMTP, MIME i dostęp do skrzynki realizują konkretne funkcje poczty. | „IMAP wysyła wiadomości między domenami”. |
Dobra diagnoza określa najpierw punkt obserwacji, warstwę i oczekiwany komunikat. Ping nie testuje logowania do poczty, DNS nie sprawdza certyfikatu, a poprawny CRC nie uwierzytelnia człowieka. Gdy umiesz wskazać granicę działania każdego mechanizmu, potrafisz zarówno zbudować usługę, jak i rozsądnie wyjaśnić jej awarię.
ŹródłaLiteratura i dokumentacja
Transmisja sygnału i sieci lokalne
- Komunikacja cyfrowa. MIT OpenCourseWare, Principles of Digital Communication I oraz Principles of Digital Communication II: próbkowanie, modulacja, kodowanie i granice przepustowości kanału.
- Transmisja optyczna. Cisco, Understand Coherent Optical Modulation: modulacja i odbiór koherentny.
- Ethernet, VLAN i Wi-Fi. Dokumentacja grup IEEE 802.3, IEEE 802.1Q i IEEE 802.11.
- Odbiór ramek na skrętce. TI DP83848, § 6.5.1: 10BASE-T i 100BASE-TX; Microchip KSZ9567R, § 4.1: tor PHY, kodowanie i synchronizacja; IEEE 802.3, interpretacja 1-11/09: odstęp między ramkami po stronie nadawcy i odbiorcy.
- Odbiór transmisji Wi-Fi. Keysight, DSSS Frame Structure; MathWorks, struktury PPDU: non-HT, HT, VHT, HE i EHT; RFC 8325, § 6: CCA, NAV i odstępy IFS.
Protokoły internetowe
- Adresacja i routing. RFC 791: IPv4, RFC 8200: IPv6, RFC 4632: CIDR, RFC 826: ARP, RFC 903: RARP oraz RFC 4861: Neighbor Discovery.
- Fragmentacja i diagnostyka. RFC 791, § 3.2: fragmentacja i składanie IPv4, RFC 1191: Path MTU Discovery, RFC 8900: ograniczenia fragmentacji IP, RFC 792: ICMP i RFC 4443: ICMPv6.
- Translacja adresów. RFC 3022: NAT i NAPT oraz RFC 6888: Carrier-Grade NAT.
- TCP. RFC 9293: specyfikacja protokołu, RFC 2018: SACK, RFC 6298: czas retransmisji i RFC 5681: kontrola przeciążenia.
- Okna i odzyskiwanie TCP. RFC 7323: Window Scale i Timestamps, RFC 6675: odzyskiwanie z SACK, RFC 2883: D-SACK, RFC 8985: RACK-TLP, RFC 9438: CUBIC i RFC 9768: AccECN.
- Konfiguracja hostów i nazwy. RFC 2131: DHCP oraz RFC 1034: struktura i działanie DNS.
- HTTP i ochrona transportu. RFC 9110: semantyka HTTP, RFC 9113: HTTP/2, RFC 9114: HTTP/3, RFC 9000: QUIC i RFC 8446: TLS 1.3.
- Poczta elektroniczna. RFC 5598: architektura poczty, RFC 5321: SMTP, RFC 5322: format wiadomości, RFC 6409: submission, RFC 9051: IMAP4rev2 i RFC 8314: TLS dla dostępu do poczty i jej wysyłania.
Programowanie i analiza ruchu
- Bezpieczeństwo połączeń. RFC 9325: bezpieczne używanie TLS, RFC 9525: identyfikacja usług, RFC 4251: architektura SSH oraz RFC 4254: kanały i przekierowania SSH.
- Ochrona IP. RFC 4301: architektura IPsec, RFC 4303: ESP, RFC 4302: AH i RFC 7296: IKEv2.
- Klucze i laboratorium TLS. OpenSSL: żądania i certyfikaty, klient TLS, serwer testowy; OpenSSH: generowanie kluczy.
- Gniazda i usługi WWW. Python, Socket Programming HOWTO; R. Fielding, Representational State Transfer (REST); W3C, SOAP 1.2; WHATWG, Fetch.
- Interpretacja i konstruowanie pakietów. Wireshark, dokumentacja pól IPv4 i ICMP; Scapy, warstwy protokołów internetowych; IANA, rejestr typów i kodów ICMP.
Ikony: Lucide, licencja ISC.