1/55
Wprowadzenie do protokołów sieciowych
Cel slajdu: Wprowadzenie studentów w architekturę i rolę protokołów warstwy transportowej (TCP, UDP) oraz warstwy aplikacji (HTTP/HTTPS, DNS, DHCP, FTP, SMTP, SSH) w modelu TCP/IP.

Prezentacja szczegółowo omawia protokoły warstwy transportowej TCP i UDP, w tym segmentację, potwierdzenia, okno TCP oraz trójfazowe uzgadnianie. Przedstawiono protokoły warstwy aplikacji: HTTP/HTTPS, DNS, DHCP, FTP, SFTP, SMTP, POP3, IMAP oraz SSH. Omówiono również porty i gniazda oraz porównanie TCP i UDP z praktycznymi przykładami zastosowań.

Protokoły sieciowe warstwy transportowej i aplikacji to zbiory formalnych reguł syntaktycznych, semantycznych i czasowych determinujących wymianę informacji między procesami aplikacyjnymi w węzłach końcowych (hostach); ich specyfikację definiują m.in. RFC 1122, RFC 9293 (TCP) oraz standardy IETF.
Stos protokołów - grafika tytułowa

Warstwy transportowa oraz aplikacji w architekturze TCP/IP stanowią kluczowe środowisko interakcji pomiędzy oprogramowaniem użytkownika a fizyczną i logiczną infrastrukturą transmisyjną. W przeciwieństwie do warstwy sieciowej (IP), która odpowiada za bezpołączeniowe i niestrzeżone przesyłanie pakietów pomiędzy węzłami (komunikacja host-to-host w trybie Best-Effort), warstwa transportowa realizuje komunikację typu proces-proces (end-to-end). Oznacza to, że jednostki danych nie trafiają po prostu do określonego komputera, lecz są precyzyjnie demultipleksowane do konkretnej instancji usługi sieciowej, wątku procesowego lub gniazda programistycznego za pomocą logicznych identyfikatorów, jakimi są numery portów źródłowych i docelowych.

Dwa fundamentalne protokoły transportowe internetu reprezentują diametralnie różne paradygmaty inżynieryjne. Transmission Control Protocol (TCP), zdefiniowany w klasycznym RFC 793 i zaktualizowany w RFC 9293, dostarcza połączeniowy, w pełni niezawodny strumień bajtów z mechanizmami retransmisji, kontroli przepływu oraz przeciwdziałania przeciążeniom sieciowym. Z kolei User Datagram Protocol (UDP, RFC 768) jest bezpołączeniowy i bezstanowy, eliminując narzut negocjacji sesji oraz retransmisji na rzecz minimalnego opóźnienia i natychmiastowego przekazywania datagramów do medium transmisyjnego.

Na fundamencie tych dwóch protokołów opiera się całe uniwersum usług warstwy aplikacji, w tym protokół przesyłania stron WWW (HTTP/HTTPS), hierarchiczny system nazw domenowych (DNS), automatyczna konfiguracja adresacji (DHCP), bezpieczny dostęp terminalowy (SSH) oraz mechanizmy dystrybucji poczty elektronicznej (SMTP, IMAP, POP3). Niniejszy moduł przeprowadza słuchacza przez wewnętrzne struktury nagłówków, stany maszyn protokołów, formaty wymiany komunikatów oraz metodykę ich laboratoryjnej analizy za pomocą analizatorów ruchu pakietowego.

2/55
Plan szóstej części wykładu
Cel slajdu: Przedstawienie harmonogramu merytorycznego modułu obejmującego protokoły transportowe, mechanizmy niezawodności, adresację portów oraz kluczowe protokoły usługowe.

Plan części 6

  • TCP – segmentacja, potwierdzenia, okno
  • Trójfazowe uzgadnianie TCP
  • UDP – budowa datagramu
  • TCP vs UDP – porównanie
  • Porty i gniazda
  • HTTP i HTTPS
  • DNS – system nazw domenowych
  • DHCP – automatyczna konfiguracja
  • FTP i SFTP
  • SMTP, POP3, IMAP
  • SSH i Telnet
  • Podsumowanie i pytania
Struktura programowa modułu obejmuje dogłębną dekompozycję protokołów transportowych TCP i UDP, model adresowania procesów za pomocą gniazd (sockets), a także specyfikację techniczną i diagnostykę protokołów aplikacyjnych HTTP/1.1, HTTP/2, HTTPS/TLS, DNS, DHCP, FTP/SFTP, SMTP/IMAP oraz SSH zgodnie z normami IANA Service Name and Port Number Registry.
Plan części 6

Harmonogram niniejszego wykładu został zaplanowany w sposób odzwierciedlający naturalny przepływ danych w dół i w górę stosu sieciowego, łącząc teoretyczne podstawy projektowania protokołów z praktyką diagnostyczną inżyniera sieci. W pierwszej sekcji poddamy drobiazgowej wiwisekcji protokół TCP: poznamy mechanizmy segmentacji ciągłego strumienia bajtów, pojęcie Maximum Segment Size (MSS) i jego ścisłą relację z MTU warstwy łącza danych, a także algorytmy potwierdzeń skumulowanych i selektywnych (SACK) oraz sterowanie oknem przesuwnym.

W drugiej kolejności omówiona zostanie maszyna stanów połączenia TCP, w tym trójkrokowy proces nawiązywania sesji (Three-Way Handshake: SYN, SYN-ACK, ACK), procedury eleganckiego i wymuszonego zamykania połączeń (FIN, RST) oraz zjawisko wyczerpywania zasobów w stanach TIME_WAIT. Kontrapunktem dla TCP będzie analiza protokołu UDP, w której wykażemy, dlaczego prostota ośmiobajtowego nagłówka stanowi fundament nowoczesnych usług czasu rzeczywistego (VoIP, streaming wideo) oraz nowego protokołu transportowego QUIC bazującego na UDP.

Trzecia, najobszerniejsza część modułu poświęcona jest usługom aplikacyjnym, które kształtują współczesny internet. Przeanalizujemy strukturę transakcji HTTP i rewolucję kryptograficzną wprowadzoną przez TLS 1.3 w protokole HTTPS. Poznamy architekturę rozproszonej bazy DNS, mechanizmy dynamicznej konfiguracji węzłów w procesie DHCP DORA, transfer plików oraz protokoły pocztowe i bezpiecznego zarządzania. Całość wieńczą praktyczne laboratoria diagnostyczne oparte na Wiresharku, tcpdump oraz inspekcji gniazd systemowych za pomocą narzędzia ss.

3/55
Segmentacja danych w TCP
Cel slajdu: Wyjaśnienie mechanizmu segmentacji strumienia danych w TCP, relacji między MTU a MSS oraz struktury numerów sekwencyjnych.

Jak TCP dzieli dane?

Warstwa aplikacji przekazuje dane do TCP. TCP dzieli je na segmenty o rozmiarze MSS (Maximum Segment Size).

MSS = MTU – nagłówek IP (20B) – nagłówek TCP (20B) = 1460 bajtów (dla MTU 1500).

Każdy segment ma Sequence Number – umożliwia złożenie danych w odpowiedniej kolejności.

Segmentacja TCP to proces podziału ciągłego strumienia bajtów z bufora warstwy aplikacji na jednostki danych protokołu (PDU) zwane segmentami TCP, których maksymalny rozmiar ładunku jest ograniczany przez parametr MSS (Maximum Segment Size) negocjowany podczas nawiązywania połączenia (RFC 9293, RFC 879).
Dane segmenty pakiety ramki

Warstwa aplikacji postrzega transmisję TCP jako nieprzerwany, uporządkowany potok bajtów (byte-stream). Jednakże warstwa sieciowa (IP) oraz warstwa łącza danych (np. Ethernet) operują na dyskretnych pakietach i ramkach o ściśle zdefiniowanym maksymalnym rozmiarze jednostki transmisyjnej (MTU - Maximum Transmission Unit). W standardowej sieci Ethernet MTU wynosi dokładnie 1500 bajtów. Zadaniem warstwy transportowej TCP jest pobranie bajtów z bufora nadawczego gniazda i pocięcie ich na segmenty, które po dodaniu nagłówków TCP i IP zmieszczą się w pojedynczej ramce bez wywoływania niepożądanej fragmentacji na poziomie warstwy sieciowej.

Kluczowym parametrem optymalizacyjnym jest MSS (Maximum Segment Size). Reprezentuje on maksymalną liczbę bajtów czystych danych użytkownika, jaką nadawca może umieścić w jednym segmencie TCP. Wylicza się go według zależności: MSS = MTU - Nagłówek_IP - Nagłówek_TCP. Dla standardowego pakietu IPv4 o bazowym nagłówku 20 bajtów oraz standardowego nagłówka TCP o rozmiarze 20 bajtów, typowa wartość MSS w sieciach przewodowych wynosi: 1500 - 20 - 20 = 1460 bajtów. W przypadku protokołu IPv6 bazowy nagłówek wynosi 40 bajtów, co redukuje standardowy MSS do 1440 bajtów. Wartość ta jest proponowana przez każdy węzeł w opcji nagłówka TCP podczas wysyłania pakietów SYN.

Każdy wysyłany segment jest opatrzony 32-bitowym numerem sekwencyjnym (Sequence Number - SEQ). Warto zauważyć kluczowy szczegół inżynieryjny: numer sekwencyjny w TCP nie jest numerem kolejnego segmentu (1, 2, 3...), lecz numerem pierwszego bajtu danych zawartego w danym segmencie w ramach całego strumienia! Jeśli segment niesie 1460 bajtów danych, a jego numer SEQ wynosi 10001, to następny segment będzie posiadał numer SEQ równy 11461. Umożliwia to odbiorcy bezbłędne ułożenie bajtów w kolejności, wykrycie ewentualnych luk oraz usunięcie duplikatów.

4/55
Potwierdzenia i retransmisje TCP
Cel slajdu: Przedstawienie mechanizmu potwierdzeń skumulowanych i selektywnych (SACK), timerów retransmisji RTO oraz wykrywania utraty pakietów.

Potwierdzenia w TCP

Odbiorca wysyła ACK z numerem następnego oczekiwanego bajtu.

Jeśli nadawca nie otrzyma ACK w czasie RTO (Retransmission Timeout) – retransmituje segment.

Selektywne potwierdzenia (SACK): pozwalają potwierdzić wiele odebranych segmentów naraz.

Potwierdzenie TCP (ACK - Acknowledgment) to mechanizm sprzężenia zwrotnego, w którym odbiorca przesyła 32-bitowy numer ACK wskazujący numer kolejnego oczekiwanego bajtu danych (potwierdzenie skumulowane), a w przypadku rozszerzenia SACK (Selective Acknowledgment) bloki bajtów odebranych poza kolejnością (RFC 2018, RFC 6298).
Nadawca segment odbiorca ACK

Niezawodność protokołu TCP w środowisku zawodnym (jakim jest sieć IP oferująca jedynie dostarczanie w trybie Best-Effort) opiera się na mechanizmie potwierdzeń pozytywnych z retransmisją (PAR - Positive Acknowledgment with Retransmission). Odbiorca potwierdza pomyślne odebranie danych poprzez odesłanie segmentu z ustawioną flagą ACK oraz polem Acknowledgment Number. W klasycznym TCP potwierdzenie ma charakter kumulacyjny: wartość pola ACK = X informuje nadawcę, że wszystkie bajty o numerach sekwencyjnych od początku sesji aż do X - 1 zostały odebrane bezbłędnie, a odbiorca oczekuje teraz bajtu o numerze X.

W przypadku utraty segmentu w tranzycie nadawca nie może czekać w nieskończoność. Dla każdego wysłanego segmentu uruchamiany jest dynamiczny zegar retransmisji RTO (Retransmission Timeout). Wartość RTO jest wyliczana w czasie rzeczywistym na podstawie pomiarów czasu obiegu pakietu w sieci (RTT - Round-Trip Time) oraz jego odchylenia standardowego (zgodnie z algorytmem Jacobsona opisanym w RFC 6298). Jeżeli timer RTO wygaśnie przed nadejściem wymaganego potwierdzenia ACK, nadawca zakłada utratę pakietu i natychmiast retransmituje brakujące dane.

Klasyczne potwierdzenia kumulacyjne stwarzały jednak problem w przypadku utraty pojedynczego pakietu z serii: odbiorca odbierał pakiety kolejne, ale musiał wielokrotnie odsyłać ACK z numerem pierwszego brakującego bajtu (Duplicate ACKs), co zmuszało nadawcę do retransmisji Go-Back-N. Aby temu zapobiec, standard RFC 2018 wprowadził SACK (Selective Acknowledgment). Dzięki opcji SACK w nagłówku TCP odbiorca informuje nadawcę: „Brakuje mi bajtów 2000-2999, ale odebrałem poprawnie bloki 3000-4500 i 4501-6000”. Nadawca retransmituje wówczas wyłącznie brakujący wycinek danych, drastycznie oszczędzając pasmo transmisyjne.

5/55
Kontrola przepływu w TCP
Cel slajdu: Wyjaśnienie różnic między kontrolą przepływu (Flow Control) sterowaną przez okno rwnd a kontrolą przeciążenia sieci (Congestion Control) sterowaną przez okno cwnd.

Kontrola przepływu i przeciążenia

  • Okno odbiorcy (rwnd): mam tyle wolnego bufora – tyle możesz wysłać
  • Okno przeciążenia (cwnd): nadawca szacuje, ile może wysłać bez przeciążenia sieci
  • Okno wysyłania (swnd): min(rwnd, cwnd) – rzeczywisty limit
Kontrola przepływu i przeciążenia w TCP to dualny mechanizm regulacji tempa nadawania danych: Flow Control chroni odbiorcę przed zalaniem bufora za pomocą okna rwnd (RFC 9293), natomiast Congestion Control chroni routery pośredniczące przed zatorami w sieci za pomocą okna cwnd (RFC 5681).
Wykres okna TCP w czasie

Jednym z najważniejszych osiągnięć inżynieryjnych w historii internetu jest mechanizm regulacji transmisji w TCP, zapobiegający zarówno przeciążeniu pamięci odbiorcy (Flow Control), jak i globalnemu załamaniu przepustowości sieci (Congestion Collapse). Istnieje fundamentalna różnica między tymi dwoma pojęciami. Kontrola przepływu to relacja punkt-punkt pomiędzy dwoma komunikującymi się hostami. Odbiorca w każdym przesyłanym segmencie informuje nadawcę w 16-bitowym polu Window Size o rozmiarze wolnego miejsca w swoim buforze odbiorczym (tzw. Receive Window - rwnd). Nadawca pod żadnym pozorem nie może wysłać więcej niepotwierdzonych bajtów, niż wskazuje bieżąca wartość rwnd. Gdy bufor odbiorcy się zapełni, odsyła on okno o rozmiarze 0 (Zero Window), co wstrzymuje nadawcę do czasu opróżnienia bufora przez aplikację.

Z kolei kontrola przeciążenia (Congestion Control) dba o stan węzłów pośredniczących (routerów, przełączników) tworzących trasę w sieci WAN/LAN. Routery nie mają możliwości bezpośredniego poinformowania nadawcy TCP o wyczerpaniu swoich buforów kolejkowych (chyba że włączony jest mechanizm jawnego powiadamiania ECN - Explicit Congestion Notification wg RFC 3168). W klasycznym podejściu nadawca sam estymuje stan sieci, zarządzając wewnętrznym parametrem zwanym oknem przeciążenia (Congestion Window - cwnd). Rzeczywista liczba bajtów, jaką nadawca może mieć w tranzycie w danym momencie (tzw. Send Window - swnd), jest wyznaczana jako minimum z obu ograniczeń: swnd = min(rwnd, cwnd).

Zarządzanie oknem cwnd realizowane jest przez wyrafinowane algorytmy opisane w RFC 5681 (oraz nowocześniejsze jak CUBIC czy BBR). Proces rozpoczyna faza powolnego startu (Slow Start), w której okno cwnd rośnie wykładniczo (podwajając się z każdym pełnym RTT) aż do osiągnięcia progu ssthresh (Slow Start Threshold). Po przekroczeniu tego progu TCP wchodzi w fazę unikania przeciążeń (Congestion Avoidance), zwiększając okno liniowo (o 1 MSS na RTT). Wykrycie utraty pakietu powoduje drastyczne zmniejszenie cwnd oraz aktywację algorytmów szybkiej retransmisji (Fast Retransmit) i szybkiego powrotu do równowagi (Fast Recovery).

6/55
Trójfazowe uzgadnianie połączenia TCP
Cel slajdu: Przeanalizowanie procedury trójkrokowego uzgadniania (Three-Way Handshake), maszyny stanów TCP oraz mechanizmów bezpiecznego inicjowania numerów sekwencyjnych (ISN).

Nawiązywanie połączenia TCP

# Wireshark: filtr tcp.flags.syn == 1
1. [SYN] Seq=0 Klient → Serwer
2. [SYN,ACK] Seq=0 Ack=1 Serwer → Klient
3. [ACK] Seq=1 Ack=1 Klient → Serwer

Po tym połączenie jest ESTABLISHED – można wymieniać dane.

Trójkrokowe uzgadnianie połączenia (Three-Way Handshake) to sekwencja wymiany trzech segmentów TCP (SYN → SYN-ACK → ACK) inicjująca stan logicznego połączenia między dwoma gniazdami, uzgadniająca początkowe numery sekwencyjne ISN oraz opcje sesji, takie jak MSS i Window Scale (RFC 9293, RFC 7323).
Schemat Three-Way Handshake

Zanim jakikolwiek bajt danych użytkownika zostanie przesłany przez protokół TCP, oba węzły muszą nawiązać logiczną relację i zsynchronizować swoje wewnętrzne struktury danych w procesie trójfazowego uzgadniania (Three-Way Handshake). Serwer, na którym uruchomiona jest usługa, znajduje się w stanie pasywnego nasłuchiwania (LISTEN). Klient, chcąc nawiązać połączenie, generuje pierwszy segment z ustawioną flagą SYN (Synchronize). Segment ten zawiera losowo wygenerowany początkowy numer sekwencyjny klienta (Initial Sequence Number - ISN_c) oraz opcje, takie jak proponowany MSS czy współczynnik skalowania okna (Window Scale). Po wysłaniu segmentu klient przechodzi do stanu SYN_SENT.

Serwer, odbierając segment SYN, rezerwuje zasoby w tabeli połączeń i odpowiada segmentem z ustawionymi jednocześnie dwiema flagami: SYN oraz ACK (krok drugi: SYN-ACK). W segmencie tym serwer potwierdza odebranie sekwencji klienta poprzez ustawienie pola ACK = ISN_c + 1 oraz prezentuje swój własny, niezależny numer sekwencyjny ISN_s. Serwer wchodzi wówczas w stan SYN_RECEIVED. W trzecim kroku klient odsyła ostateczny segment z ustawioną flagą ACK i wartością pola ACK = ISN_s + 1. W tym momencie po stronie klienta sesja przechodzi w stan ESTABLISHED. Po odebraniu tego pakietu przez serwer, on również wchodzi w stan ESTABLISHED, a kanał jest gotowy do dwukierunkowej, pełnodupleksowej transmisji danych.

Warto zwrócić uwagę na aspekt bezpieczeństwa związany z generowaniem numerów ISN. We wczesnych implementacjach stosu TCP numery ISN były prostymi licznikami czasu, co pozwalało cyberprzestępcom na łatwe przewidywanie numerów sekwencyjnych i przeprowadzanie ataków TCP Spoofing / Hijacking. Zgodnie z wytycznymi RFC 6528, współczesne jądra systemów operacyjnych (Linux, Windows, FreeBSD) generują ISN w oparciu o kryptograficzne funkcje skrótu z unikalnym kluczem losowym, adresem IP i numerami portów, co całkowicie uniemożliwia ich odgadnięcie przez osoby trzecie.

7/55
Budowa i cechy protokołu UDP
Cel slajdu: Przedstawienie architektury protokołu User Datagram Protocol (UDP), struktury jego 8-bajtowego nagłówka oraz profilu zastosowań w telemetrii i transmisjach czasu rzeczywistego.

Protokół UDP

UDP (User Datagram Protocol) – bezpołączeniowy, szybki, prosty.

  • Nagłówek: 8 bajtów
  • Brak potwierdzeń i retransmisji
  • Brak kontroli przepływu
  • Idealny dla: DNS, DHCP, VoIP, streaming, gry

Sprawdzanie sumy (Checksum) – opcjonalne w IPv4, wymagane w IPv6.

User Datagram Protocol (UDP) to bezpołączeniowy protokół warstwy transportowej, który udostępnia aplikacjom mechanizm przesyłania niezależnych datagramów bez gwarancji dostarczenia, kolejności czy ochrony przed duplikacją, narzucając jedynie 8 bajtów nagłówka (RFC 768).
Budowa datagramu UDP

User Datagram Protocol (UDP), zdefiniowany w lapidarnym dokumencie RFC 768 opublikowanym w 1980 roku przez Davida Reeda, stanowi inżynieryjne ucieleśnienie zasady minimalizmu. Podczas gdy TCP jest protokołem złożonym, stanowym, pilnującym porządku i retransmitującym utracone pakiety, UDP jest bezstanowym protokołem bezpołączeniowym. Oznacza to, że przed wysłaniem danych nie następuje żadne uzgadnianie sesji (brak odpowiednika Three-Way Handshake), a po zakończeniu transmisji nie trzeba zamykać kanału. Każdy datagram wysyłany przez aplikację jest traktowany jako całkowicie niezależna jednostka informacyjna.

Nagłówek UDP ma stały, niezmienny rozmiar zaledwie 8 bajtów (64 bity) i składa się wyłącznie z czterech 16-bitowych pól: Source Port (port źródłowy nadawcy), Destination Port (port docelowy usługi), Length (łączna długość nagłówka i danych w bajtach, minimum 8) oraz Checksum (suma kontrolna). W protokole IPv4 obliczanie sumy kontrolnej było formalnie opcjonalne (wartość 0x0000 oznaczała brak kalkulacji), lecz w protokole IPv6 suma kontrolna UDP jest bezwzględnie wymagana, ponieważ nagłówek IPv6 nie posiada własnej sumy kontrolnej. Suma ta chroni nie tylko nagłówek UDP i dane, ale obejmuje także tzw. pseudonagłówek zawierający adresy IP nadawcy i odbiorcy, co zabezpiecza przed błędnym dostarczeniem datagramu do niewłaściwego hosta.

Brak mechanizmów retransmisji i potwierdzeń sprawia, że UDP nie wprowadza żadnych opóźnień związanych z oczekiwaniem na brakujące bajty (tzw. zjawisko Head-of-Line Blocking). Jeżeli w strumieniu wideo lub rozmowie głosowej VoIP zgubi się jeden pakiet, próba jego retransmisji po 150 milisekundach byłaby bezcelowa, gdyż dany fragment dźwięku czy klatki obrazu uległ już przedawnieniu. UDP pozwala aplikacji natychmiast wyrzucić datagram na interfejs sieciowy, przerzucając ewentualną kontrolę integralności lub adaptacji strumienia na wyższe warstwy aplikacji.

8/55
Porównanie protokołów TCP i UDP
Cel slajdu: Przeprowadzenie komparatywnej analizy inżynieryjnej kryteriów doboru protokołu transportowego (niezawodność vs opóźnienie, jitter, narzut) na podstawie rzeczywistych protokołów aplikacyjnych.

Kiedy TCP, kiedy UDP?

  • TCP: gdy niezawodność jest ważniejsza niż szybkość (strony WWW, e-mail, FTP)
  • UDP: gdy szybkość jest ważniejsza niż niezawodność (VoIP, streaming, DNS, gry)

Przykład: rozmowa Skype – jeśli pakiet się zgubi, nie ma sensu retransmitowa (opóźnienie byłoby słyszalne).

Dobór protokołu transportowego opiera się na kompromisie między integralnością i pewnością dostarczenia (TCP: bankowość, transfer plików, strony WWW wg RFC 9293) a minimalizacją opóźnień i narzutu (UDP: telefonia IP, gry wieloosobowe, streaming audio/video wg RFC 768, oraz QUIC/HTTP/3 wg RFC 9000).
Porównanie TCP vs UDP

Wybór pomiędzy TCP a UDP jest fundamentalną decyzją architektoniczną w projektowaniu systemów sieciowych i wynika bezpośrednio z tolerancji aplikacji na straty pakietów oraz opóźnienia transmisyjne. TCP jest bezwzględnie wybierany wszędzie tam, gdzie kluczowa jest absolutna integralność i bezbłędność danych, a utrata pojedynczego bajtu uniemożliwiłaby poprawne przetworzenie informacji. Przykłady obejmują protokoły: HTTP/HTTPS (strony WWW, API), SSH (sesje terminalowe), SMTP/IMAP (poczta elektroniczna) czy bazy danych (SQL, NoSQL). W tych zastosowaniach koszt retransmisji i buforowania jest w pełni akceptowalny w zamian za gwarancję spójności.

Z kolei UDP jest protokołem pierwszego wyboru w dwóch odmiennych scenariuszach. Pierwszym są systemy multimedialne czasu rzeczywistego (VoIP, wideokonferencje RTP/RTCP, gry online, telemetria przemysłowa IoT). Ludzki słuch i wzrok doskonale tolerują ubytek 1-2% próbek dźwięku lub pojedynczej klatki obrazu, natomiast gwałtowny skok opóźnienia (jitter) wywołany retransmisją TCP zniszczyłby płynność rozmowy. Drugim scenariuszem są krótkie, transakcyjne zapytania typu pytanie-odpowiedź, takie jak DNS czy NTP. Wysłanie jednego datagramu z pytaniem i odebranie jednego datagramu z odpowiedzią zajmuje dokładnie jeden obieg RTT; narzut trójkrokowego uzgadniania TCP oraz jego zamykania byłby w tym wypadku nieefektywny.

Współczesna inżynieria sieciowa wykreowała jednak fascynującą ewolucję: protokół QUIC (RFC 9000), który stanowi fundament standardu HTTP/3. Twórcy QUIC użyli UDP jako warstwy nośnej (omijając w ten sposób skostniałe stosy TCP wbudowane w jądra systemów operacyjnych i zapory ogniowe), implementując na poziomie przestrzeni użytkownika mechanizmy szyfrowania TLS 1.3, niezawodności oraz multipleksacji wielu niezależnych strumieni. Dzięki temu wyeliminowano problem Head-of-Line Blocking znany z klasycznego TCP, zachowując jednocześnie pełną integralność danych.

9/55
Socket jako identyfikator połączenia
Cel slajdu: Przedstawienie koncepcji gniazda sieciowego (Socket), kwintetu identyfikującego połączenie (5-tuple) oraz podziału przestrzeni portów według rejestru IANA.

Socket = IP + Port + Protokół

Każde połączenie TCP jest identyfikowane przez krotkę: (IP_src, Port_src, IP_dst, Port_dst, Protokół).

netstat -an
# Przykład:
TCP 192.168.1.10:52341 93.184.216.34:80 ESTABLISHED
Gniazdo sieciowe (Socket) to programistyczny punkt końcowy komunikacji dwukierunkowej, jednoznacznie określony przez parę: logiczny adres IP oraz numer portu transportowego; pełne połączenie w sieci identyfikowane jest przez tzw. kwintet (5-tuple): {IP źródłowy, port źródłowy, IP docelowy, port docelowy, protokół transportowy} (RFC 1122, RFC 6335).
Gniazdo jako para (IP, port)

Wielozadaniowe systemy operacyjne obsługują jednocześnie setki równoległych procesów komunikujących się przez sieć. Przeglądarka internetowa może pobierać dziesiątki elementów strony, klient poczty synchronizować wiadomości, a komunikator przesyłać głos – wszystko za pośrednictwem jednej karty sieciowej posiadającej pojedynczy adres IP. Mechanizmem umożliwiającym bezbłędne skierowanie przychodzącego pakietu do odpowiedniego procesu jest multipleksacja i demultipleksacja realizowana za pomocą gniazd sieciowych (Sockets) oraz numerów portów.

Numery portów to 16-bitowe liczby całkowite z zakresu od 0 do 65535, zarządzane globalnie przez organizację IANA (Internet Assigned Numbers Authority) zgodnie z wytycznymi RFC 6335. Przestrzeń portów jest podzielona na trzy fundamentalne zakresy: 1. Porty dobrze znane (Well-Known Ports: 0–1023) – przypisane do krytycznych usług systemowych (np. 22 dla SSH, 80 dla HTTP, 443 dla HTTPS, 53 dla DNS); w systemach uniksowych otwarcie gniazda w tym zakresie wymaga uprawnień administratora (root). 2. Porty zarejestrowane (Registered Ports: 1024–49151) – rejestrowane przez korporacje i deweloperów dla konkretnych aplikacji (np. 3306 dla MySQL, 8080 dla alternatywnych serwerów proxy HTTP). 3. Porty dynamiczne lub prywatne (Dynamic/Private/Ephemeral Ports: 49152–65535) – przydzielane automatycznie przez jądro systemu operacyjnego dla aplikacji klienckich jako porty źródłowe na czas trwania sesji.

Kluczowym pojęciem inżynieryjnym jest kwintet (5-tuple), składający się z: adresu źródłowego IP, portu źródłowego, adresu docelowego IP, portu docelowego oraz identyfikatora protokołu L4 (TCP lub UDP). Serwer WWW nasłuchujący na porcie 80 może obsługiwać tysiące klientów jednocześnie, ponieważ każde połączenie jest unikalne dzięki innemu adresowi IP klienta lub innemu wylosowanemu portowi efemerycznemu klienta. Zrozumienie kwintetu jest niezbędne do poprawnej konfiguracji reguł zapór ogniowych (iptables/nftables) oraz tablic translacji adresów NAT.

10/55
Podstawy protokołu HTTP
Cel slajdu: Przedstawienie architektury protokołu HTTP, jego ewolucji od wersji 1.0/1.1 do HTTP/2 i HTTP/3 oraz zasad bezstanowości transakcji webowych.

Hypertext Transfer Protocol

HTTP – protokół warstwy aplikacji do przesyłania dokumentów hipertekstowych.

  • Działa na TCP, port 80 (HTTP) lub 443 (HTTPS)
  • Model klient-serwer: przeglądarka → serwer WWW
  • Metody: GET, POST, PUT, DELETE, HEAD, OPTIONS
Hypertext Transfer Protocol (HTTP) to bezstanowy protokół warstwy aplikacji oparty na architekturze klient-serwer, stanowiący fundament wymiany danych w sieci World Wide Web, zdefiniowany w zintegrowanej serii norm IETF: RFC 9110 (HTTP Semantics), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2) oraz RFC 9114 (HTTP/3).
HTTP podstawy

Protokół HTTP, zaprojektowany pierwotnie przez Tima Bernersa-Lee w CERN na początku lat 90. XX wieku, zrewolucjonizował sposób udostępniania i konsumowania informacji na świecie. W swojej najpopularniejszej tekstowej wersji HTTP/1.1 protokół działa w oparciu o model transakcyjny żądanie-odpowiedź (Request-Response) przesyłany przez niezawodne połączenie TCP (domyślnie na porcie 80 dla ruchu jawnego lub porcie 443 dla zaszyfrowanego HTTPS). Klient (najczęściej przeglądarka internetowa) inicjuje połączenie z serwerem i wysyła zapytanie o określony zasób identyfikowany przez identyfikator URI/URL, na co serwer odpowiada komunikatem ze statusem oraz żądaną treścią (np. dokumentem HTML, obrazem JPEG czy danymi JSON).

Fundamentalną cechą HTTP jest jego bezstanowość (statelessness). Oznacza to, że każde żądanie wysłane do serwera jest przetwarzane w całkowitej izolacji – serwer nie przechowuje w warstwie protokołu żadnej wiedzy o poprzednich interakcjach z danym klientem. Aby umożliwić tworzenie złożonych aplikacji webowych wymagających logowania, koszyków zakupowych czy personalizacji, wprowadzono mechanizmy warstwy aplikacji, takie jak ciasteczka (Cookies zdefiniowane w RFC 6265), nagłówki autoryzacyjne (Authorization: Bearer) oraz tokeny sesyjne JWT.

Ewolucja protokołu HTTP zmierzała ku drastycznej optymalizacji wydajności. Klasyczny HTTP/1.1 wprowadził mechanizm stałych połączeń (Keep-Alive), eliminując konieczność kosztownego otwierania nowego gniazda TCP dla każdego pliku graficznego czy arkusza stylów. Jednakże dopiero standard HTTP/2 (RFC 9113) wprowadził binarną ramkę danych, kompresję nagłówków HPACK oraz pełną multipleksację wielu żądań w ramach jednego fizycznego połączenia TCP. Najnowszy standard HTTP/3 (RFC 9114) przeniósł transport na protokół QUIC/UDP, całkowicie eliminując blokowanie kolejki i drastycznie przyspieszając ładowanie aplikacji mobilnych.

11/55
Budowa żądania HTTP
Cel slajdu: Przeanalizowanie składni i struktury komunikatu żądania HTTP (Request Line, Headers, Message Body) oraz semantyki standardowych metod HTTP.

Budowa żądania HTTP

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Connection: keep-alive
Komunikat żądania HTTP (HTTP Request) to ustrukturyzowana jednostka danych przesyłana od klienta do serwera, składająca się z linii żądania (Request Line zawierającej metodę, ścieżkę zasobu i wersję protokołu), zestawu nagłówków klucz-wartość oraz opcjonalnego ciała wiadomości oddzielonego pustą linią CRLF (RFC 9112).
Wireshark żądanie GET

W protokole HTTP/1.1 komunikat żądania jest transmitowany w postaci czytelnego dla człowieka tekstu w standardzie ASCII/UTF-8. Pierwszą linią każdego zapytania jest tzw. linia żądania (Request Line), która składa się z trzech ściśle określonych elementów oddzielonych spacjami i zakończonych sekwencją nowej linii CRLF (Carriage Return i Line Feed, czyli bajty 0x0D 0x0A): metody HTTP, ścieżki do żądanego zasobu (URI) oraz identyfikatora wersji protokołu (np. HTTP/1.1). Przykładowy wiersz: GET /index.html HTTP/1.1 natychmiast informuje serwer o intencji klienta.

Metody HTTP definiują pożądaną akcję, jaka ma zostać wykonana na wskazanym zasobie. Do najważniejszych metod należą: 1. GET – bezpieczna (safe) i idempotentna metoda służąca wyłącznie do pobierania reprezentacji zasobu z serwera bez wywoływania efektów ubocznych. 2. POST – metoda nieidempotentna, przesyłająca dane w ciele żądania w celu utworzenia nowego zasobu lub przetworzenia formularza. 3. PUT – idempotentna metoda tworząca lub całkowicie zastępująca zasób pod wskazanym adresem URI. 4. DELETE – metoda usuwająca wskazany zasób. 5. HEAD – pobierająca wyłącznie nagłówki odpowiedzi bez ciała dokumentu (przydatna do sprawdzania rozmiaru pliku lub daty modyfikacji). 6. OPTIONS – odpytująca serwer o obsługiwane metody komunikacji (często używana w mechanizmach CORS w przeglądarkach).

Poniżej linii żądania umieszczane są nagłówki (Headers), zorganizowane w pary Nazwa: Wartość. W standardzie HTTP/1.1 bezwzględnie wymaganym nagłówkiem jest Host:, który wskazuje nazwę domenową wirtualnego hosta na serwerze wielodomenowym. Inne kluczowe nagłówki to m.in.: User-Agent: (identyfikacja klienta), Accept: (formaty akceptowane przez klienta, np. text/html, application/json), Content-Type: oraz Content-Length: definiujące typ i rozmiar ciała wiadomości, a także nagłówek Connection: keep-alive. Całość nagłówków kończy się obowiązkową pustą linią (CRLF), po której następuje ewentualne binarne lub tekstowe ciało zapytania.

12/55
Budowa odpowiedzi HTTP
Cel slajdu: Przedstawienie struktury odpowiedzi serwera HTTP (Status Line, Headers, Response Body) oraz klasyfikacji kodów statusu.

Odpowiedź HTTP

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Date: Mon, 01 Jan 2024 12:00:00 GMT

<html>...</html>

Kody statusu: 1xx (informacyjne), 2xx (sukces), 3xx (przekierowanie), 4xx (błąd klienta), 5xx (błąd serwera).

Komunikat odpowiedzi HTTP (HTTP Response) to komunikat zwrotny serwera składający się z wiersza statusu (Status Line: wersja protokołu, trzycyfrowy kod numeryczny i fraza tekstowa), nagłówków odpowiedzi oraz właściwego ładunku (payload), zdefiniowany w RFC 9110 i RFC 9112.
Odpowiedź HTTP

Po odebraniu i zinterpretowaniu żądania klienta, serwer WWW generuje komunikat odpowiedzi. Podobnie jak w przypadku zapytania, odpowiedź w standardzie HTTP/1.1 rozpoczyna się od pojedynczego wiersza nagłówkowego, zwanego wierszem statusu (Status Line). Zawiera on wersję protokołu (np. HTTP/1.1), trzycyfrowy numeryczny kod statusu (Status Code) oraz czytelną dla człowieka frazę wyjaśniającą (Reason Phrase), np. HTTP/1.1 200 OK lub HTTP/1.1 404 Not Found. Kod numeryczny jest kluczowy dla oprogramowania klienckiego, które na jego podstawie podejmuje decyzje o dalszym przetwarzaniu transakcji.

Kody statusu zostały podzielone przez standard IETF na pięć logicznych klas według pierwszej cyfry: 1. 1xx (Informational) – kody informacyjne oznaczające kontynuację przetwarzania żądania (np. 101 Switching Protocols przy przejściu na WebSocket). 2. 2xx (Successful) – akcja została pomyślnie odebrana, zrozumiana i zaakceptowana (np. 200 OK, 201 Created po utworzeniu rekordu, 204 No Content). 3. 3xx (Redirection) – konieczność podjęcia dodatkowych działań w celu spełnienia żądania (np. 301 Moved Permanently dla trwałego przekierowania na HTTPS, 304 Not Modified informujący klienta o ważności lokalnej pamięci podręcznej cache). 4. 4xx (Client Error) – błąd po stronie klienta (np. 400 Bad Request przy błędzie składni, 401 Unauthorized, 403 Forbidden, 404 Not Found, 405 Method Not Allowed). 5. 5xx (Server Error) – serwer nie zdołał spełnić poprawnego żądania z powodu awarii wewnętrznej (np. 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout).

W sekcji nagłówków serwer przekazuje metadane dotyczące przetwarzania, w tym nagłówek Date:, oprogramowanie serwera w Server:, dyrektywy buforowania w Cache-Control: oraz kluczowy nagłówek Content-Type: (np. text/html; charset=UTF-8, application/json), który instruuje przeglądarkę, jak zinterpretować ciało odpowiedzi. Po pustej linii CRLF serwer przesyła właściwy strumień danych – kod strony WWW, arkusz stylów, skrypt JavaScript lub binarny plik graficzny.

13/55
Szyfrowanie HTTPS i TLS
Cel slajdu: Wyjaśnienie mechanizmów bezpieczeństwa w HTTPS, roli protokołu TLS 1.3, infrastruktury klucza publicznego (PKI) oraz weryfikacji certyfikatów X.509.

HTTP + Szyfrowanie

HTTPS to HTTP przez warstw TLS/SSL.

  • Port 443
  • Szyfrowanie danych między klientem a serwerem
  • Certyfikat X.509 – potwierdza tożsamość serwera
  • Wireshark: ruch HTTPS jest zaszyfrowany – widać tylko Application Data
HTTPS (HTTP Secure) to implementacja protokołu HTTP działająca wewnątrz bezpiecznego tunelu kryptograficznego warstwy transportowej TLS (Transport Layer Security), standardowo na porcie TCP 443, zapewniająca poufność, integralność danych oraz wzajemne uwierzytelnienie stron (RFC 2818, RFC 8446 (TLS 1.3)).
HTTPS i TLS

Klasyczny protokół HTTP przesyła wszystkie dane w postaci jawnego tekstu. W przypadku podsłuchu medium transmisyjnego (np. w publicznej sieci Wi-Fi lub na trasie tranzytowej dostawcy internetu) napastnik może bez trudu odczytać loginy, hasła, numery kart płatniczych oraz ciasteczka sesyjne, a także modyfikować treść strony (atak Man-in-the-Middle). Odpowiedzią na te fundamentalne zagrożenia jest HTTPS, który polega na enkapsulacji całego ruchu HTTP wewnątrz protokołu TLS (Transport Layer Security). Obecnym złotym standardem kryptograficznym w internecie jest standard RFC 8446 (TLS 1.3).

HTTPS realizuje trzy podstawowe filary cyberbezpieczeństwa: 1. Poufność (Confidentiality) – wszystkie przesyłane nagłówki, parametry URL oraz treść wiadomości są szyfrowane za pomocą silnych algorytmów symetrycznych (np. AES-GCM lub ChaCha20-Poly1305), co uniemożliwia ich odczytanie przez osoby trzecie. 2. Integralność (Integrity) – każdy blok danych jest chroniony kryptograficznym kodem uwierzytelniającym (MAC), co gwarantuje natychmiastowe wykrycie jakiejkolwiek próby podmiany lub wstrzyknięcia złośliwego kodu do strumienia. 3. Uwierzytelnienie (Authentication) – serwer udowadnia swoją tożsamość za pomocą certyfikatu cyfrowego X.509 v3, co daje klientowi pewność, że łączy się z autentycznym bankiem lub portalem, a nie z serwerem podszywającym się.

Fundamentem zaufania w internecie jest infrastruktura klucza publicznego (PKI - Public Key Infrastructure). Certyfikat serwera musi zostać cyfrowo podpisany przez zaufany urząd certyfikacji (CA - Certificate Authority), którego certyfikat główny (Root CA) znajduje się w preinstalowanym magazynie zaufania systemu operacyjnego lub przeglądarki. W najnowszym protokole TLS 1.3 cały proces uzgadniania kryptograficznego (TLS Handshake) został zoptymalizowany do zaledwie jednego obiegu pakietów (1-RTT), a w przypadku wznawiania sesji do zera (0-RTT Early Data), co całkowicie wyeliminowało historyczny zarzut o powolność połączeń szyfrowanych.

14/55
Rekordy DNS i ich typy
Cel slajdu: Przedstawienie architektury hierarchicznego systemu nazw domenowych DNS, struktury drzewa domen oraz typów rekordów zasobowych (Resource Records).

DNS – więcej niż tylko tłumaczenie

DNS przechowuje różne typy rekordów:

  • A: IPv4
  • AAAA: IPv6
  • CNAME: alias (www → example.com)
  • MX: serwer poczty
  • NS: serwer nazw
  • TXT: tekst (SPF, DKIM, weryfikacja domeny)
Domain Name System (DNS) to globalnie rozproszona, hierarchiczna baza danych realizująca translację łatwych do zapamiętania nazw mnemonicznych na binarne adresy IP oraz udostępniająca metadane usług sieciowych poprzez ustandaryzowane rekordy zasobowe (Resource Records) (RFC 1034, RFC 1035).
DNS rekordy

System nazw domenowych DNS stanowi jedną z najważniejszych i najbardziej odpornych na awarie architektur w historii informatyki. Choć komputery i routery w sieci internetowej komunikują się wyłącznie za pomocą 32-bitowych adresów IPv4 lub 128-bitowych adresów IPv6, dla ludzi operowanie długimi ciągami cyfr byłoby skrajnie nieintuicyjne i podatne na błędy. DNS rozwiązuje ten problem, tworząc ogólnoświatowe, odwrócone drzewo przestrzeni nazw. Na samym szczycie hierarchii znajduje się strefa główna (Root Zone), reprezentowana przez symboliczną kropkę, zarządzana przez 13 klastrów serwerów głównych (Root Servers: od a.root-servers.net do m.root-servers.net rozproszonych za pomocą technologii Anycast).

Poniżej strefy głównej znajdują się domeny najwyższego poziomu (TLD - Top-Level Domains), dzielące się na domeny generyczne (gTLD, np. .com, .org, .net, .edu) oraz narodowe (ccTLD, np. .pl, .de, .uk). Kolejnym poziomem są domeny drugiego poziomu (SLD, np. pw.edu.pl), w ramach których właściciele stref mogą tworzyć dowolne subdomeny. Każda strefa DNS posiada wyznaczone autorytatywne serwery nazw (Authoritative Name Servers), które przechowują ostateczną i prawnie wiążącą konfigurację danej domeny.

Baza DNS przechowuje dane w postaci rekordów zasobowych (RR - Resource Records). Do najważniejszych typów rekordów należą: 1. A – mapuje nazwę domenową na 32-bitowy adres IPv4. 2. AAAA (tzw. quad-A) – mapuje nazwę na 128-bitowy adres IPv6. 3. CNAME (Canonical Name) – tworzy alias wskazujący na inną kanoniczną nazwę domenową. 4. MX (Mail Exchanger) – wskazuje serwery pocztowe odpowiedzialne za przyjmowanie poczty dla domeny wraz z ich priorytetami. 5. NS (Name Server) – deleguje obsługę strefy do określonych autorytatywnych serwerów nazw. 6. TXT – przechowuje dowolne dane tekstowe, wykorzystywane powszechnie w mechanizmach cyberbezpieczeństwa poczty (rekordy SPF, DKIM, DMARC) oraz weryfikacji własności domen. 7. PTR – rekord translacji odwrotnej (Reverse DNS) w domenach in-addr.arpa i ip6.arpa, mapujący adres IP z powrotem na nazwę hosta.

15/55
Diagnostyka DNS w praktyce
Cel slajdu: Przedstawienie metodyki diagnostyki i analizy zapytań DNS za pomocą narzędzi nslookup, dig oraz filtrów analizatora Wireshark.

Diagnostyka DNS

nslookup google.pl
dig google.pl
dig google.pl A +short

Wireshark: filtr dns – zobacz zapytania i odpowiedzi.

Diagnostyka DNS to proces weryfikacji poprawności konfiguracji stref, propagacji rekordów oraz rozstrzygania zapytań (resolving) za pomocą wyspecjalizowanych narzędzi sieciowych, takich jak dig (Domain Information Groper) i nslookup, operujących na porcie UDP/TCP 53 (RFC 1035, RFC 8482).
Diagnostyka DNS

Diagnostyka systemu DNS jest fundamentalną umiejętnością inżyniera sieciowego, ponieważ ponad 70% zgłoszeń o rzekomej „awarii internetu” lub niedostępności usług webowych wynika z błędów translacji nazw, wygaśnięcia wpisów w pamięci podręcznej lub problemów z serwerami rekurencyjnymi (Resolvers). Zapytania DNS są standardowo przesyłane za pomocą protokołu UDP na porcie 53 w postaci pojedynczych datagramów. W przypadku odpowiedzi przekraczających tradycyjny limit 512 bajtów (gdy nie jest stosowane rozszerzenie EDNS0 zdefiniowane w RFC 6891) lub podczas transferów całych stref między serwerami (AXFR/IXFR), protokół DNS automatycznie przełącza się na niezawodny transport TCP na porcie 53.

W środowiskach profesjonalnych podstawowym narzędziem diagnostycznym jest uniksowe polecenie dig (Domain Information Groper), będące częścią pakietu BIND-utils. W przeciwieństwie do przestarzałego programu nslookup, dig nie korzysta z systemowych buforów resolvera, lecz wysyła bezpośrednie zapytania do wskazanego serwera, prezentując pełną, surową strukturę odpowiedzi DNS. Kluczowe sekcje odpowiedzi dig obejmują: - HEADER: zawiera flagi protokołu (np. qr – odpowiedź, aa – Authoritative Answer oznaczająca odpowiedź autorytatywną z pierwszej ręki, rd – Recursion Desired, ra – Recursion Available) oraz kod statusu (np. NOERROR lub NXDOMAIN oznaczający nieistniejącą domenę). - QUESTION SECTION: powtórzenie zadanego pytania o nazwę i typ rekordu. - ANSWER SECTION: właściwe rekordy zwrócone przez serwer wraz z parametrem TTL (Time To Live). - AUTHORITY & ADDITIONAL SECTION: serwery NS oraz ich adresy IP (rekordy klejące Glue Records).

W analizatorze Wireshark do inspekcji transakcji DNS wykorzystuje się prosty filtr dns. Wireshark automatycznie koreluje zapytanie (DNS Query) z nadejściem odpowiedzi (DNS Response) na podstawie 16-bitowego identyfikatora transakcji (Transaction ID) znajdującego się w nagłówku DNS, co pozwala inżynierowi precyzyjnie zmierzyć czas odpowiedzi serwera DNS i zdiagnozować zatory transmisyjne.

16/55
Proces DORA w DHCP
Cel slajdu: Szczegółowe przeanalizowanie czterofazowego procesu DHCP DORA (Discover, Offer, Request, Acknowledge), mechanizmu dzierżawy oraz parametrów konfiguracji sieciowej.

Jak DHCP przydziela IP?

DORA: Discover, Offer, Request, ACK.

Wireshark: filtr dhcp lub bootp.

DHCP można też użyć do przydzielenia: bramy domyślnej, DNS, domeny, serwera NTP.

Dynamic Host Configuration Protocol (DHCP) to protokół warstwy aplikacji oparty na architekturze klient-serwer, który w procesie DORA (Discover, Offer, Request, ACK) automatycznie przydziela węzłom adresy IP, maski podsieci, bramy domyślne oraz adresy DNS na określony czas dzierżawy (Lease Time) (RFC 2131, RFC 2132).
4 kroki DORA

Ręczna konfiguracja adresów IP, masek podsieci, bram domyślnych oraz serwerów DNS na setkach urządzeń końcowych w przedsiębiorstwie lub na urządzeniach mobilnych użytkowników domowych byłaby skrajnie nieefektywna i prowadziłaby do nieustannych konfliktów adresowych. Protokół DHCP rozwiązuje ten problem, automatyzując proces konfiguracji węzłów w sieci lokalnej LAN. Protokół ten wywodzi się bezpośrednio z historycznego protokołu BOOTP i wykorzystuje transport UDP: serwer DHCP nasłuchuje na porcie 67, natomiast klient odbiera komunikaty na porcie 68.

Proces przydzielania konfiguracji nowemu urządzeniu nosi akronim DORA i składa się z czterech precyzyjnych kroków: 1. DHCP Discover – klient po podłączeniu do medium nie posiada adresu IP, więc wysyła datagram rozgłoszeniowy (Broadcast: IP docelowy 255.255.255.255, MAC docelowy FF:FF:FF:FF:FF:FF) z zapytaniem: „Czy w tej sieci znajduje się serwer DHCP?”. 2. DHCP Offer – serwer DHCP rezerwuje ze swojej puli wolny adres IP i odsyła klientowi ofertę zawierającą proponowany adres IP, maskę podsieci, czas dzierżawy (Lease Time) oraz swój własny identyfikator (Server Identifier). 3. DHCP Request – jeśli klient otrzyma kilka ofert od różnych serwerów, wybiera jedną z nich (zazwyczaj pierwszą nadeszłą) i wysyła rozgłoszeniowy komunikat Request: „Wybieram ofertę od serwera X i proszę o przydzielenie adresu Y”. Rozgłoszenie to informuje pozostałe serwery DHCP, że ich oferty zostały odrzucone i mogą zwolnić zarezerwowane adresy. 4. DHCP Acknowledgment (ACK) – wybrany serwer przesyła ostateczne potwierdzenie wraz z pełnym zestawem opcji DHCP (brama domyślna w opcji 3, serwery DNS w opcji 6, domena w opcji 15). W tym momencie klient formalnie konfiguruje swój interfejs.

Adres przydzielany jest na określony czas dzierżawy (Lease Time). Klient po upływie 50% czasu dzierżawy (timer T1) próbuje jednostkowo (Unicast) odnowić dzierżawę u macierzystego serwera za pomocą komunikatu DHCP Request. Jeśli serwer nie odpowiada, po upływie 87.5% czasu (timer T2) klient ponawia próbę w trybie rozgłoszeniowym (Broadcast) do dowolnego serwera. W przypadku braku odpowiedzi, po wygaśnięciu dzierżawy interfejs natychmiast traci adres IP.

17/55
Protokoły transferu plików
Cel slajdu: Przedstawienie protokołów transferu plików: FTP (tryb aktywny i pasywny), FTPS oraz bezpiecznego protokołu SFTP opartego na SSH.

Transfer plików

FTP: port 20 (dane) i 21 (kontrola). Nieszyfrowany – hasła w plain text.

FTPS: FTP + TLS.

SFTP: SSH File Transfer Protocol – szyfrowany, działa na porcie 22.

Tryby: aktywny i pasywny (Active/Passive) – różnica w sposobie nawiązywania połączeń danych.

Protokoły transferu plików obejmują klasyczny FTP (File Transfer Protocol) operujący na oddzielnych kanałach sterowania (port 21) i danych (port 20/dynamiczny) (RFC 959), jego szyfrowany wariant FTPS (RFC 4217) oraz podsystem SFTP (SSH File Transfer Protocol) działający wewnątrz tunelu SSH na porcie 22 (RFC 4251).
FTP i SFTP

Przesyłanie plików pomiędzy węzłami sieciowymi jest jednym z najstarszych zadań teleinformatyki. Opublikowany w 1985 roku standard RFC 959 zdefiniował File Transfer Protocol (FTP). Cechą unikalną FTP jest architektura dwukanałowa (Out-of-Band Control). Klient najpierw nawiązuje z serwerem trwałe połączenie sterujące (Control Connection) na porcie TCP 21, przez które przesyłane są komendy użytkownika (np. USER, PASS, LIST, RETR) oraz kody odpowiedzi serwera. Każdy transfer pliku lub wylistowanie katalogu wymaga jednak otwarcia odrębnego, krótkotrwałego połączenia danych (Data Connection).

Architektura ta rodzi poważne komplikacje w zestawieniu z zaporami sieciowymi (firewall) i translatorami NAT, co wymusiło powstanie dwóch trybów pracy: 1. Tryb aktywny (Active Mode / PORT) – klient otwiera losowy port N dla danych i informuje serwer komendą PORT: „Połącz się ze mną na mój port N”. Serwer inicjuje wówczas połączenie ze swojego portu TCP 20 do klienta. Z perspektywy zapory klienta jest to niepożądany pakiet przychodzący z zewnątrz, który w 99% przypadków zostaje natychmiast zablokowany! 2. Tryb pasywny (Passive Mode / PASV) – klient wysyła do serwera komendę PASV, na co serwer otwiera losowy port powyżej 1024 i odsyła jego numer. Następnie to klient inicjuje połączenie wychodzące do serwera na wskazany port danych. Ponieważ połączenie wychodzi z wewnątrz sieci lokalnej, domowe routery i zapory bez trudu przepuszczają taki ruch.

Klasyczny FTP przesyła zarówno dane uwierzytelniające (login, hasło), jak i treść plików w postaci jawnego tekstu. Z tego względu we współczesnych systemach produkcyjnych został on bezwzględnie wyparty przez SFTP (SSH File Transfer Protocol). Należy wyraźnie podkreślić, że SFTP nie jest „FTP z szyfrowaniem”, lecz całkowicie odrębnym protokołem działającym jako podsystem SSH-2 na standardowym porcie TCP 22. Cała transmisja – w tym autoryzacja kluczem kryptograficznym i przesyłanie plików – realizowana jest wewnątrz pojedynczego, silnie zaszyfrowanego i integralnego strumienia SSH.

18/55
Protokoły poczty elektronicznej
Cel slajdu: Przedstawienie architektury systemów poczty elektronicznej (MUA, MTA, MDA) oraz ról protokołów SMTP, POP3 i IMAP.

Poczta elektroniczna

  • SMTP: port 25 (lub 587, 465) – wysyłanie poczty
  • POP3: port 110 – odbieranie (pobiera i usuwa z serwera)
  • IMAP: port 143 – odbieranie (zostawia na serwerze, synchronizacja)

Opcje szyfrowane: SMTPS, POP3S, IMAPS – przez TLS.

Protokoły poczty elektronicznej tworzą dwustopniowy model dystrybucji wiadomości: SMTP (Simple Mail Transfer Protocol) służy do nadawania i przesyłania poczty między serwerami MTA (RFC 5321), natomiast IMAP4 (RFC 3501) oraz POP3 (RFC 1939) umożliwiają odbiór i synchronizację wiadomości przez klienta (MUA).
SMTP POP3 IMAP

Ekosystem poczty elektronicznej w internecie opiera się na rozproszonym modelu asynchronicznym, w którym nadawca i odbiorca nie muszą być jednocześnie dostępni w sieci. W architekturze tej wyróżniamy trzy podstawowe komponenty: klienta pocztowego użytkownika (MUA - Mail User Agent, np. Thunderbird, Outlook), serwer przekazujący pocztę (MTA - Mail Transfer Agent, np. Postfix, Exim, Microsoft Exchange) oraz serwer dostarczający i przechowujący skrzynki pocztowe (MDA - Mail Delivery Agent / Mailstore, np. Dovecot). Do realizacji tych zadań wykorzystywane są odrębne, wyspecjalizowane protokoły.

Protokół SMTP (Simple Mail Transfer Protocol) jest protokołem typu „push” (wypychanie). Odpowiada on za przesłanie wiadomości od klienta MUA do lokalnego serwera pocztowego (Submission) oraz za kaskadowe przekazywanie wiadomości pomiędzy serwerami MTA w internecie na podstawie rekordów DNS MX domeny docelowej. Standardowo wymiana między serwerami MTA odbywa się na porcie TCP 25. Z kolei nadawanie poczty przez uwierzytelnionego użytkownika (klienta MUA) realizowane jest zgodnie z RFC 6409 na porcie TCP 587 (Message Submission) z obowiązkowym szyfrowaniem STARTTLS i uwierzytelnieniem SASL.

Do pobierania wiadomości ze skrzynki na serwerze służą protokoły odbiorcze typu „pull”: 1. POP3 (Post Office Protocol v3) – historyczny protokół działający na porcie TCP 110 (lub 995 z SSL/TLS). W domyślnym paradygmacie pobiera on całą zawartość skrzynki na dysk lokalny komputera i usuwa wiadomości z serwera. Jest zupełnie nieprzystosowany do współczesnego środowiska pracy na wielu urządzeniach jednocześnie (smartfon, laptop, tablet). 2. IMAP4 (Internet Message Access Protocol v4) – zaawansowany protokół synchronizacyjny działający na porcie TCP 143 (lub 993 z SSL/TLS). W IMAP wiadomości, foldery, flagi przeczytania oraz wersje robocze na stałe spoczywają na serwerze, a klient pobiera jedynie nagłówki lub żądane treści, synchronizując stan skrzynki w czasie rzeczywistym na wszystkich urządzeniach użytkownika.

19/55
Protokoły zdalnego dostępu
Cel slajdu: Przedstawienie ewolucji protokołów zdalnego dostępu: od przestarzałego i podatnego protokołu Telnet do standardu bezpiecznego dostępu powłoki SSH-2.

Zdalny dostęp

  • Telnet: port 23 – nieszyfrowany, tekst jawny. Nie używaj w produkcji!
  • SSH: port 22 – szyfrowany, bezpieczny. Uwierzytelnianie hasłem lub kluczem.
ssh user@192.168.1.100
Protokoły zdalnego dostępu terminalowego obejmują jawnotekstowy i wycofany z eksploatacji Telnet (port 23, RFC 854) oraz kryptograficzny standard SSH-2 (Secure Shell) (port 22, RFC 4251, RFC 4253), zapewniający silne uwierzytelnianie, poufność oraz tunelowanie portów.
SSH i Telnet

Zarządzanie urządzeniami sieciowymi (routerami, przełącznikami) oraz serwerami w centrach danych wymaga niezawodnego i bezpiecznego dostępu do interfejsu wiersza poleceń (CLI). W pierwszych dekadach rozwoju sieci ARPANET i internetu dominował protokół Telnet, zdefiniowany w dokumencie RFC 854 z 1983 roku, operujący na porcie TCP 23. Telnet zapewnia wirtualną emulację terminala (Network Virtual Terminal - NVT), jednakże nie posiada absolutnie żadnych mechanizmów kryptograficznych. Każdy znak wpisany przez administratora – w tym nazwa użytkownika i tajne hasło dostępowe – jest wysyłany w medium w postaci niezaszyfrowanego tekstu ASCII. W dobie współczesnych zagrożeń korzystanie z Telnetu do zarządzania urządzeniami w jakiejkolwiek sieci produkcyjnej jest rażącym błędem bezpieczeństwa.

Standardem branżowym w zdalnej administracji stał się protokół SSH-2 (Secure Shell), ustandaryzowany przez IETF w dokumentach od RFC 4251 do RFC 4254, działający na porcie TCP 22. Protokół SSH tworzy bezpieczny, zaszyfrowany kanał komunikacyjny, opierając się na architekturze trójwarstwowej: 1. Warstwa transportowa (SSH-TRANS) – odpowiada za uzgodnienie algorytmów kryptograficznych, bezpieczną wymianę klucza sesyjnego (np. za pomocą algorytmu Diffie-Hellmana lub krzywych eliptycznych ECDH) oraz uwierzytelnienie tożsamości serwera za pomocą jego klucza hosta (Host Key). 2. Warstwa uwierzytelniania użytkownika (SSH-USERAUTH) – weryfikuje tożsamość administratora za pomocą hasła, a w wariancie wysoce zalecanym: za pomocą pary asymetrycznych kluczy kryptograficznych (np. kluczy ED25519 lub RSA o długości minimum 3072 bitów). 3. Warstwa połączenia (SSH-CONN) – multipleksuje szyfrowany kanał na wiele niezależnych logicznych kanałów, umożliwiając interaktywne sesje powłoki (shell), transfer plików SFTP/SCP oraz tunelowanie portów TCP (port forwarding).

Mechanizm tunelowania portów w SSH (Local Port Forwarding, Remote Port Forwarding oraz Dynamic Port Forwarding działający jako serwer proxy SOCKS5) pozwala administratorom bezpiecznie transmitować dowolny niezaszyfrowany ruch aplikacyjny przez publiczną sieć internetową wewnątrz chronionego tunelu SSH, co czyni go nieocenionym narzędziem w codziennej pracy inżynierskiej.

20/55
Tabela najważniejszych portów
Cel slajdu: Przedstawienie syntetycznego zestawienia najważniejszych portów transportowych (TCP i UDP), ich przeznaczenia oraz przynależności do rejestru IANA.

Porty – ściągawka

PortProtokółTransport
20/21FTPTCP
22SSHTCP
23TelnetTCP
25SMTPTCP
53DNSTCP/UDP
67/68DHCPUDP
80HTTPTCP
110POP3TCP
143IMAPTCP
443HTTPSTCP
Rejestr portów usługowych IANA systematyzuje standardowe przypisania portów transportowych dla usług sieciowych w oparciu o specyfikację RFC 6335 oraz oficjalną bazę IANA Service Name and Port Number Registry.
Porty ściągawka

Biegła znajomość standardowych numerów portów transportowych oraz wykorzystywanego przez nie protokołu L4 (TCP lub UDP) stanowi elementarz każdego inżyniera sieciowego, administratora systemów operacyjnych oraz specjalisty ds. cyberbezpieczeństwa. Porty z zakresu dobrze znanego (0–1023) podlegają ścisłej standaryzacji przez IANA, a ich znajomość jest niezbędna do prawidłowego konfigurowania list kontroli dostępu (ACL), polityk zapór ogniowych (firewalls), translacji portów PAT/NAT oraz analizy zrzutów ruchu pakietowego w programie Wireshark.

Kluczowe porty protokołów omówionych w pierwszej części wykładu obejmują: - Port 20 / TCP: FTP-Data (przesyłanie danych w aktywnym trybie FTP). - Port 21 / TCP: FTP-Control (kanał sterujący sesji FTP). - Port 22 / TCP: SSH (Secure Shell) oraz SFTP (bezpieczny transfer plików). - Port 23 / TCP: Telnet (niezaszyfrowany dostęp terminalowy – archiwalny). - Port 25 / TCP: SMTP (Simple Mail Transfer Protocol – wymiana między serwerami MTA). - Port 53 / UDP i TCP: DNS (Domain Name System – zapytania standardowo po UDP, strefy i duże pakiety po TCP). - Port 67 / UDP: DHCP Server (odbieranie zapytań od klientów). - Port 68 / UDP: DHCP Client (odbieranie ofert i potwierdzeń od serwera). - Port 80 / TCP: HTTP (Hypertext Transfer Protocol – ruch nieszyfrowany WWW). - Port 110 / TCP: POP3 (Post Office Protocol v3 – odbiór poczty). - Port 123 / UDP: NTP (Network Time Protocol – precyzyjna synchronizacja czasu). - Port 143 / TCP: IMAP (Internet Message Access Protocol – synchronizacja poczty). - Port 161 / UDP: SNMP (Simple Network Management Protocol – odpytywanie agentów). - Port 443 / TCP (i UDP dla HTTP/3): HTTPS (HTTP Secure – szyfrowany ruch WWW). - Port 587 / TCP: SMTP Submission (nadawanie poczty przez klienta z autoryzacją SASL). - Port 993 / TCP: IMAPS (IMAP over TLS/SSL). - Port 995 / TCP: POP3S (POP3 over TLS/SSL).

Podczas projektowania systemów bezpieczeństwa należy zawsze pamiętać, że sam numer portu nie determinuje w 100% przesyłanego protokołu. Zaawansowane zapory ogniowe nowej generacji (NGFW - Next-Generation Firewall) nie polegają jedynie na numerze portu L4, lecz dokonują głębokiej inspekcji pakietów (DPI - Deep Packet Inspection) w celu weryfikacji sygnatur protokołów warstwy 7, uniemożliwiając np. tunelowanie niedozwolonego ruchu przez otwarty port 443.

21/55
Flagi TCP i ich znaczenie
Cel slajdu: Uporządkowanie wiedzy na temat flag sterujących w 20-bajtowym nagłówku TCP (SYN, ACK, FIN, RST, PSH, URG, ECE, CWR) oraz ich funkcji w maszynie stanów połączenia.

Sprawdź swoją wiedzę

Pytanie: Jakie są flagi TCP i do czego służą?

Odpowiedź: SYN (nawiązanie połączenia), ACK (potwierdzenie), FIN (zakończenie), RST (reset), PSH (push danych), URG (pilne dane).

Flagi nagłówka TCP (Control Bits) to 1-bitowe pola sterujące zdefiniowane w RFC 9293 (oraz rozszerzone w RFC 3168 o mechanizm ECN), które determinują charakterystykę przetwarzania segmentu przez stos sieciowy i kontrolują przejścia maszyny stanów połączenia.
Nagłówek TCP z flagami

Nagłówek protokołu TCP w 13. i 14. bajcie zawiera pole bitów sterujących (Control Bits), powszechnie zwanych flagami TCP. Ustawienie bitu na wartość 1 aktywuje ściśle określoną funkcję semantyczną w procesie wymiany danych. Standard RFC 9293 wyróżnia sześć klasycznych flag podstawowych oraz flagi rozszerzeń sieciowych:

1. SYN (Synchronize) – inicjuje nawiązanie połączenia w procedurze Three-Way Handshake i uzgadnia początkowy numer sekwencyjny ISN.
2. ACK (Acknowledgment) – informuje, że pole Acknowledgment Number niesie poprawny numer potwierdzenia kolejnego bajtu; flaga ta jest obecna w praktycznie każdym segmencie po nawiązaniu sesji.
3. FIN (Finish) – inicjuje eleganckie, uporządkowane zamknięcie kierunku transmisji; oznacza, że nadawca nie ma już więcej danych do przesłania, lecz nadal może odbierać dane od partnera.
4. RST (Reset) – wymusza natychmiastowe, awaryjne zerwanie sesji bez oczekiwania na potwierdzenia, wysyłana np. w odpowiedzi na próbę połączenia z zamkniętym portem lub w przypadku utraty spójności sesji.
5. PSH (Push) – instruuje stos TCP odbiorcy, aby nie buforował nadesłanych danych w celu wypełnienia większego bloku pamięci, lecz natychmiast przekazał je wyżej do procesu aplikacyjnego (niezbędne np. w interaktywnych sesjach SSH).
6. URG (Urgent) – wskazuje, że pole Urgent Pointer zawiera offset danych priorytetowych, które powinny zostać obsłużone poza kolejnością.
7. ECE (ECN-Echo) i CWR (Congestion Window Reduced) – bity zdefiniowane w RFC 3168 służące do jawnego powiadamiania o zatorach w routerach sieciowych bez konieczności porzucania pakietów.

Zrozumienie kombinacji flag ma kluczowe znaczenie w analizie bezpieczeństwa sieciowego. Techniki skanowania portów (np. w narzędziu Nmap) wykorzystują niestandardowe kombinacje flag (skany SYN stealth, FIN scan, Xmas scan z ustawionymi flagami FIN, PSH i URG, czy skany Null bez żadnych flag), aby na podstawie reakcji systemu operacyjnego (pakiet RST lub brak odpowiedzi) precyzyjnie określić stan portu oraz reguły zaporowe zapory sieciowej.

22/55
Budowa nagłówka UDP
Cel slajdu: Przeanalizowanie wewnętrznej struktury 8-bajtowego nagłówka UDP, znaczenia jego pól oraz mechanizmu weryfikacji integralności za pomocą sumy kontrolnej.

Sprawdź swoją wiedzę

Pytanie: Ile bajtów ma nagłówek UDP?

Odpowiedź: 8 bajtów (Source Port, Destination Port, Length, Checksum – każde po 2 bajty).

Nagłówek UDP (User Datagram Protocol Header) to minimalistyczna struktura protokołowa o stałym rozmiarze 8 bajtów (64 bity) zdefiniowana w RFC 768, składająca się z czterech 16-bitowych pól: portu źródłowego, portu docelowego, długości datagramu oraz sumy kontrolnej.
Nagłówek UDP z polami

Nagłówek UDP jest jednym z najbardziej eleganckich i zwięzłych projektów w historii inżynierii protokołów komunikacyjnych. W przeciwieństwie do nagłówka TCP, którego bazowy rozmiar wynosi 20 bajtów (a z opcjami może osiągać do 60 bajtów), nagłówek UDP ma sztywny, niezmienny rozmiar wynoszący dokładnie 8 bajtów. Brak jakichkolwiek pól opcjonalnych gwarantuje, że procesory sieciowe routerów oraz jądro systemu operacyjnego mogą przetwarzać nagłówki UDP z minimalnym narzutem obliczeniowym i pamięciowym.

Struktura nagłówka dzieli się na cztery 16-bitowe pola (po 2 bajty każde): 1. Source Port (Port źródłowy, bity 0–15) – wskazuje port procesu wysyłającego na hoście źródłowym. Pole to jest opcjonalne w protokole IPv4 (gdy aplikacja nie oczekuje odpowiedzi, może wpisać wartość 0x0000), lecz w praktyce prawie zawsze zawiera dynamicznie przydzielony port efemeryczny. 2. Destination Port (Port docelowy, bity 16–31) – określa port usługi nasłuchującej na hoście docelowym (np. port 53 dla serwera DNS, port 67 dla serwera DHCP, port 123 dla serwera czasu NTP). 3. Length (Długość, bity 32–47) – określa całkowity rozmiar datagramu UDP w bajtach, obejmujący zarówno 8 bajtów nagłówka, jak i właściwe dane warstwy aplikacji. Minimalna wartość tego pola to 8 (pusty datagram bez danych). 4. Checksum (Suma kontrolna, bity 48–63) – 16-bitowa jedynkowa suma dopełnień służąca do weryfikacji integralności datagramu.

Kluczowym zagadnieniem akademickim jest kalkulacja sumy kontrolnej UDP. Obejmuje ona nie tylko nagłówek UDP i jego ładunek, ale również tzw. pseudonagłówek IPv4/IPv6. Pseudonagłówek zawiera adres IP źródłowy, adres IP docelowy, identyfikator protokołu (wartość 17 dla UDP) oraz długość datagramu. Dołączenie adresów warstwy sieciowej do obliczeń w warstwie transportowej zapobiega sytuacji, w której uszkodzony pakiet IP z przekłamanym adresem docelowym trafiłby do przypadkowego hosta i został bezkrytycznie zaakceptowany przez gniazdo UDP o zgodnym numerze portu. W protokole IPv6 obliczanie sumy kontrolnej UDP jest bezwzględnie obowiązkowe (zgodnie z RFC 8200).

23/55
Maksymalny rozmiar segmentu TCP
Cel slajdu: Zrozumienie zależności matematycznej i architektonicznej pomiędzy parametrem MSS warstwy transportowej a MTU warstwy łącza danych oraz mechanizmu Path MTU Discovery.

Sprawdź swoją wiedzę

Pytanie: Czym jest MSS i jaka jest jego typowa wartość?

Odpowiedź: Maximum Segment Size – maksymalny rozmiar segmentu TCP bez nagłówków. Dla MTU 1500: MSS = 1500 – 20 (IP) – 20 (TCP) = 1460 bajtów.

Maximum Segment Size (MSS) to negocjowany w opcjach segmentu SYN maksymalny rozmiar danych użytkownika w segmencie TCP (RFC 879), ściśle powiązany z Maximum Transmission Unit (MTU) wzorem: MSS = MTU - Nagłówek_IP - Nagłówek_TCP.
Schemat MTU MSS

Pojęcia MTU i MSS są fundamentalne dla zapewnienia optymalnej wydajności transmisji w sieciach pakietowych i zapobiegania destrukcyjnemu zjawisku fragmentacji pakietów IP na trasie routingu. MTU (Maximum Transmission Unit) definiuje maksymalny rozmiar jednostki danych PDU, jaką warstwa łącza danych może przenieść w pojedynczej ramce bez podziału. W sieciach Ethernet standard IEEE 802.3 narzuca MTU o wartości 1500 bajtów. Z kolei MSS (Maximum Segment Size) odnosi się wyłącznie do warstwy transportowej TCP i określa, ile bajtów czystego ładunku aplikacyjnego może znaleźć się w pojedynczym segmencie.

Matematyczna relacja wynika bezpośrednio z narzutu nagłówków protokołów: - Dla standardowego pakietu IPv4: MTU = 1500 bajtów. Bazowy nagłówek IPv4 wynosi 20 bajtów, a bazowy nagłówek TCP wynosi 20 bajtów. Stąd: MSS = 1500 - 20 - 20 = 1460 bajtów. - Dla pakietu IPv6: MTU = 1500 bajtów. Stały nagłówek IPv6 wynosi 40 bajtów, a bazowy nagłówek TCP wynosi 20 bajtów. Stąd: MSS = 1500 - 40 - 20 = 1440 bajtów. Jeżeli w segmencie TCP wykorzystywane są dodatkowe opcje nagłówka (np. TCP Timestamps zajmujące 12 bajtów czy SACK), efektywny MSS ulega dalszemu pomniejszeniu o narzut tych opcji.

Co dzieje się, gdy na trasie transmisji znajduje się łącze o mniejszym MTU (np. tunel VPN IPsec, tunel GRE lub łącze PPPoE z MTU = 1492)? Jeżeli pakiet ma ustawiony bit DF (Don't Fragment), router pośredniczący musi go odrzucić i odesłać komunikat błędu ICMP Fragmentation Needed z wartością akceptowalnego MTU (RFC 1191 Path MTU Discovery). Jeżeli z powodu błędnej konfiguracji zapory ogniowej komunikaty ICMP są blokowane (zjawisko PMTUD Black Hole), sesja TCP zawiesza się przy próbie przesłania dużego pliku. W praktyce inżynierskiej routery brzegowe stosują wówczas mechanizm TCP MSS Clamping (np. w iptables: -j TCPMSS --clamp-mss-to-pmtu), który w locie przepisuje wartość MSS w pakietach SYN, chroniąc klientów przed problemami transmisyjnymi.

24/55
Port 80 i protokół HTTP
Cel slajdu: Przedstawienie roli portu 80 w protokole HTTP oraz mechanizmów bezpiecznego przekierowania ruchu na szyfrowany port 443 za pomocą kodów statusu 301/308 i nagłówka HSTS.

Sprawdź swoją wiedzę

Pytanie: Port 80 – który protokół?

Odpowiedź: HTTP (Hypertext Transfer Protocol) – nieszyfrowany protokół WWW.

Port 80 bywa ograniczany polityką firewalla, dlatego nowe serwisy domyślnie przekierowują na HTTPS (443).
Port TCP 80 to ustandaryzowany w rejestrze IANA port protokołu HTTP dla transmisji jawnotekstowej; współczesne serwery WWW konfigurują na nim automatyczne przekierowanie HTTP 301/308 na port TCP 443 (HTTPS) oraz wymuszają politykę HSTS (HTTP Strict Transport Security) (RFC 6797).
Ikona HTTP z portem 80

Domyślnym portem przypisanym w 1991 roku do protokołu HTTP w rejestrze IANA jest port TCP 80. Gdy użytkownik wpisuje w pasku adresu przeglądarki URL bez wskazania schematu (np. example.com), przeglądarka historycznie podejmowała pierwszą próbę połączenia właśnie na port 80 za pomocą niezaszyfrowanego protokołu HTTP. Ponieważ przesyłanie danych w postaci jawnej stanowi krytyczne zagrożenie dla prywatności i integralności użytkowników, nowoczesny internet wdrożył wielowarstwowe mechanizmy wymuszania migracji całego ruchu na bezpieczny protokół HTTPS (port TCP 443).

Standardowym mechanizmem jest automatyczne przekierowanie po stronie serwera WWW (np. Nginx, Apache). Gdy serwer odbiera na porcie 80 zapytanie GET /sciezka HTTP/1.1, natychmiast generuje odpowiedź z kodem statusu 301 Moved Permanently (lub nowocześniejszym 308 Permanent Redirect zdefiniowanym w RFC 7538, który gwarantuje zachowanie metody HTTP przy przekierowaniu) oraz nagłówkiem lokalizacji: Location: https://example.com/sciezka. Przeglądarka zamyka wówczas połączenie na porcie 80 i natychmiast nawiązuje nową, bezpieczną sesję TLS na porcie 443.

Jednakże samo przekierowanie 301/308 nadal pozostawia wąskie okno podatności: pierwsze zapytanie na porcie 80 jest przesyłane jawnym tekstem, co pozwala agresorowi w ataku Man-in-the-Middle (np. przy użyciu narzędzia sslstrip) na przechwycenie i zablokowanie przekierowania. Ostateczną ochronę zapewnia standard HSTS (HTTP Strict Transport Security, RFC 6797). Serwer wysyła nagłówek Strict-Transport-Security: max-age=31536000; includeSubDomains; preload, który instruuje przeglądarkę, aby przez określony czas (np. rok) bezwzględnie zamieniała wszystkie próby połączenia HTTP na HTTPS lokalnie, przed wysłaniem jakiegokolwiek pakietu do sieci.

25/55
Rekord MX w DNS
Cel slajdu: Wyjaśnienie roli i składni rekordu zasobowego MX (Mail Exchange) w systemie DNS, mechanizmu priorytetów oraz trasowania poczty między serwerami MTA.

Sprawdź swoją wiedzę

Pytanie: Do czego służy rekord MX w DNS?

Odpowiedź: MX (Mail Exchange) – wskazuje serwer poczty odpowiedzialny za odbiór e-maili dla domeny.

Rekord MX (Mail Exchanger Record) to rekord zasobowy systemu DNS definiujący serwery pocztowe odpowiedzialne za przyjmowanie poczty elektronicznej (SMTP) dla danej domeny wraz z 16-bitową wartością priorytetu (preferencji) (RFC 1035, RFC 5321).
Schemat domena MX serwer poczty

Gdy użytkownik wysyła wiadomość e-mail na adres student@pw.edu.pl, serwer nadawczy (MTA) nie łączy się bezpośrednio z hostem o nazwie pw.edu.pl. Zamiast tego serwer MTA wykonuje zapytanie do systemu DNS o rekord typu MX (Mail Exchanger) dla strefy domenowej pw.edu.pl. Rekord MX wskazuje pełną nazwę kanoniczną (FQDN) jednego lub więcej serwerów pocztowych upoważnionych do odbioru poczty w imieniu tej domeny, a także przypisuje każdemu z nich wartość numeryczną określającą wagę priorytetu.

Składnia rekordu MX obejmuje wartość preferencji (Preference) oraz nazwę hosta docelowego. Kluczową zasadą inżynieryjną jest reguła: im niższa wartość liczbowa, tym wyższy priorytet doręczenia. Rozważmy typową konfigurację DNS przedsiębiorstwa: - example.com. IN MX 10 mail-primary.example.com. - example.com. IN MX 20 mail-backup.example.com.
Serwer wysyłający podejmie próbę połączenia z serwerem mail-primary.example.com (priorytet 10). Dopiero w przypadku jego awarii, niedostępności sieciowej lub przekroczenia limitu czasu (timeout), serwer podejmie próbę doręczenia przesyłki do serwera zapasowego mail-backup.example.com (priorytet 20). Serwer zapasowy buforuje wówczas wiadomości w kolejce i przekazuje je do serwera głównego po przywróceniu jego sprawności.

Standard RFC 5321 nakłada rygorystyczne wymagania syntaktyczne na rekordy MX: wartość rekordu MX musi bezwzględnie wskazywać na rekord typu A lub AAAA, nigdy zaś na rekord typu CNAME (alias). Wskazanie rekordu CNAME w rekordzie MX jest rażącym błędem konfiguracyjnym naruszającym specyfikację IETF, prowadzącym do pętli translacji oraz odrzucania wiadomości przez rygorystyczne serwery pocztowe.

26/55
Różnice między POP3 a IMAP
Cel slajdu: Porównanie architektury, mechanizmów synchronizacji i zastosowań protokołów odbioru poczty elektronicznej POP3 i IMAP4.

Sprawdź swoją wiedzę

Pytanie: Jaka jest różnica między POP3 a IMAP?

Odpowiedź: POP3 pobiera i usuwa z serwera (offline), IMAP synchronizuje i zostawia na serwerze (online, dostęp z wielu urządzeń).

POP3 (Post Office Protocol v3) oraz IMAP4 (Internet Message Access Protocol v4) to protokoły warstwy aplikacji służące do pobierania poczty z serwera MDA; POP3 (RFC 1939) realizuje model pobierz-i-usuń, natomiast IMAP4 (RFC 3501) zapewnia zaawansowaną, dwukierunkową synchronizację stanu skrzynek i folderów w czasie rzeczywistym.
POP3 vs IMAP

Wybór protokołu dostępu do skrzynki pocztowej determinuje model pracy użytkownika oraz architekturę przechowywania danych w organizacji. Protokół POP3 (Post Office Protocol v3), zdefiniowany w RFC 1939, został opracowany w erze komputerów osobistych typu mainframe i połączeń komutowanych (dial-up). Założeniem POP3 jest prosta mechanika „skrytki pocztowej”: klient łączy się z serwerem na porcie TCP 110 (lub 995 dla POP3S), pobiera wszystkie nowe wiadomości na dysk twardy lokalnego komputera, po czym wysyła polecenie ich usunięcia z serwera i natychmiast zamyka sesję.

Choć protokół POP3 minimalizuje zapotrzebowanie serwera na przestrzeń dyskową, jest zupełnie nieadekwatny we współczesnym środowisku pracy wielourządzeniowej. Jeżeli użytkownik pobierze wiadomość przez POP3 na komputerze stacjonarnym w pracy, nie będzie miał do niej dostępu ze smartfona ani z laptopa domowego. Dodatkowo POP3 nie obsługuje struktury folderów na serwerze ani flag stanu wiadomości (przeczytana, oznaczona gwiazdką, wersja robocza).

Standardem odpowiadającym na te wyzwania jest protokół IMAP4 (Internet Message Access Protocol v4), opisany w RFC 3501, działający na porcie TCP 143 (lub 993 dla IMAPS). W architekturze IMAP serwer jest centralnym i jedynym trwałym repozytorium wiadomości. Klient utrzymuje stałe połączenie, pobierając jedynie metadane i nagłówki wiadomości; treść i duże załączniki są ściągane dopiero na żądanie użytkownika. Wszystkie zmiany – przeczytanie wiadomości, przeniesienie do innego katalogu, usunięcie czy oznaczenie etykietą – są natychmiast synchronizowane z serwerem w czasie rzeczywistym (m.in. za pomocą komendy IMAP IDLE), gwarantując identyczny stan skrzynki na każdym urządzeniu.

27/55
Kod błędu HTTP 404
Cel slajdu: Przedstawienie semantyki kodu błędu HTTP 404 Not Found, jego pozycji w taksonomii błędów 4xx oraz implikacji dla bezpieczeństwa i konfiguracji serwerów WWW.

Sprawdź swoją wiedzę

Pytanie: Co to jest HTTP 404?

Odpowiedź: Kod statusu HTTP 404 – Not Found. Oznacza, że żaden zasób nie istnieje na serwerze.

Kody 4xx to błędy klienta (np. 400 Bad Request, 403 Forbidden, 404 Not Found), 5xx to błędy serwera.
Kod statusu HTTP 404 Not Found to ustandaryzowany kod odpowiedzi warstwy aplikacji należący do klasy błędów klienta (4xx), informujący, że serwer docelowy nie odnalazł bieżącej reprezentacji zasobu wskazanego w identyfikatorze URI (RFC 9110).
Strona z błędem 404

Kod odpowiedzi 404 Not Found jest prawdopodobnie najbardziej rozpoznawalnym komunikatem błędu w historii teleinformatyki. Zdefiniowany precyzyjnie w standardzie semantyki HTTP (RFC 9110), należy do 4. klasy kodów statusu (4xx Client Error). Kody z tej grupy informują, że przyczyną niepowodzenia transakcji jest żądanie wygenerowane przez klienta – najczęściej w wyniku literówki w adresie URL, odwołania do usuniętego lub przeniesionego pliku, bądź braku odpowiednich parametrów zapytania.

Kluczowym aspektem inżynieryjnym jest rozróżnienie pomiędzy błędem 404 a innymi powiązanymi kodami błędów klienta: - 400 Bad Request – serwer nie może przetworzyć żądania ze względu na błąd syntaktyczny klienta (np. uszkodzony nagłówek lub błędny format JSON). - 401 Unauthorized – brak wymaganego uwierzytelnienia; żądanie musi zawierać poprawne poświadczenia (np. nagłówek Authorization). - 403 Forbidden – serwer zrozumiał żądanie i uwierzytelnił klienta, lecz odmawia przyznania uprawnień dostępu do danego zasobu. - 404 Not Found – serwer nie znalazł zasobu pod podaną ścieżką URI; status ten nie przesądza, czy brak ten ma charakter tymczasowy, czy stały. - 410 Gone – serwer informuje, że zasób istniał, lecz został celowo i trwale usunięty, a adres URI nie powinien być ponownie odpytywany (kluczowe dla robotów indeksujących wyszukiwarek internetowych SEO).

Z punktu widzenia cyberbezpieczeństwa kod 404 bywa świadomie wykorzystywany w politykach maskowania zasobów. Zgodnie z wytycznymi RFC 9110, jeżeli serwer nie chce ujawnić nieuprawnionemu użytkownikowi, że dany poufny zasób w ogóle istnieje w systemie (aby chronić się przed rekonesansem agresora), może zwrócić kod 404 Not Found zamiast kodu 403 Forbidden. Dodatkowo profesjonalna konfiguracja serwerów WWW (Nginx, Apache) wymaga zdefiniowania własnej, statycznej strony błędu 404 bez ujawniania wersji serwera i szczegółów systemu operacyjnego w nagłówku Server:.

28/55
Etapy DORA w DHCP
Cel slajdu: Utrwalenie sekwencji komunikatów w procedurze DHCP DORA, struktury adresów MAC/IP w warstwie L2/L3 oraz mechanizmów unikania konfliktów adresowych.

Sprawdź swoją wiedzę

Pytanie: Jakie są etapy DORA w DHCP?

Odpowiedź: Discover (klient szuka serwera), Offer (serwer oferuje adres), Request (klient prosi o adres), ACK (serwer potwierdza).

Cykl DHCP DORA to sekwencja czterech komunikatów protokołu DHCP: Discover (rozgłoszenie klienta), Offer (propozycja serwera), Request (żądanie przydziału wybranego adresu) oraz Acknowledgment (ACK) (ostateczne potwierdzenie i przesłanie opcji konfiguracyjnych) (RFC 2131).
Schemat DORA w 4 krokach

Mechanizm DORA stanowi rdzeń dynamicznego przydzielania adresacji IP w sieciach lokalnych. Prześledzenie tego procesu w warstwach L2 (Ethernet), L3 (IPv4) i L4 (UDP) pozwala zrozumieć, w jaki sposób węzeł sieciowy nieposiadający jeszcze adresu IP jest w stanie poprawnie komunikować się ze stosem sieciowym:

1. DHCP Discover: Klient nie zna adresu sieci ani serwera. Tworzy ramkę Ethernet z docelowym adresem MAC FF:FF:FF:FF:FF:FF (Broadcast) oraz pakiet IPv4 z adresem źródłowym 0.0.0.0 i docelowym 255.255.255.255. W nagłówku UDP port źródłowy wynosi 68, a docelowy 67. Wewnątrz komunikatu klient przesyła swój unikalny identyfikator sprzętowy (Client MAC Address).
2. DHCP Offer: Każdy aktywny serwer DHCP w podsieci, który odbierze rozgłoszenie, sprawdza swoją pulę adresów (Scope) i generuje komunikat Offer. Proponuje w nim adres IP (pole yiaddr - your IP address), maskę oraz identyfikator serwera. Pakiet ten może być wysłany w trybie Unicast (jeśli serwer na to zezwala) lub Broadcast.
3. DHCP Request: Klient, otrzymawszy oferty, dokonuje wyboru i wysyła rozgłoszeniowy komunikat Request zawierający adres IP wybranego serwera w opcji 54. Rozgłoszenie jest krytyczne: dzięki niemu pozostałe serwery DHCP, których oferty nie zostały wybrane, wiedzą, że mogą natychmiast odblokować proponowane wcześniej adresy i zwrócić je do puli wolnych zasobów.
4. DHCP Acknowledgment (ACK): Wybrany serwer przesyła ostateczny pakiet ACK z pełną konfiguracją: czasem dzierżawy (opcja 51), bramą domyślną (opcja 3), serwerami DNS (opcja 6) oraz serwerami czasu NTP (opcja 42).

Aby wykluczyć konflikty adresowe, przed wysłaniem komunikatu ACK profesjonalny serwer DHCP często wysyła w sieci lokalnej zapytanie ICMP Echo Request (ping) na proponowany adres IP. Co więcej, klient po odebraniu ACK wysyła tzw. Gratuitous ARP (lub ARP Probe wg RFC 5227) z pytaniem o swój nowo przydzielony adres. Jeżeli jakikolwiek inny host w sieci odpowie na to zapytanie, klient natychmiast odrzuca przydzielony adres komunikatem DHCP Decline i rozpoczyna procedurę DORA od nowa.

29/55
Różnice między FTP a SFTP
Cel slajdu: Przeanalizowanie różnic protokołowych i kryptograficznych między jawnym protokołem FTP (lub FTPS) a podsystemem SFTP działającym wewnątrz protokołu SSH-2.

Sprawdź swoją wiedzę

Pytanie: Czym różnią się FTP od SFTP?

Odpowiedź: FTP (port 20/21) przesyła dane jawnym tekstem. SFTP (port 22) działa przez SSH – wszystkie dane są szyfrowane.

SFTP (SSH File Transfer Protocol) to niezależny binarny protokół transferu plików działający jako podsystem bezpiecznej powłoki SSH na porcie TCP 22 (RFC 4251), całkowicie odmienny od klasycznego protokołu FTP (File Transfer Protocol, porty 20/21) (RFC 959).
FTP tekst jawny vs SFTP kódka

Wśród początkujących adeptów sieci komputerowych powszechne jest mylenie protokołów SFTP i FTPS oraz traktowanie ich jako prostych modyfikacji klasycznego protokołu FTP. Z inżynieryjnego punktu widzenia są to technologie o całkowicie różnej architekturze, historii i zasadzie działania:

1. FTP (File Transfer Protocol, RFC 959) – protokół tekstowy z 1985 roku, wykorzystujący oddzielne kanały sterowania (port TCP 21) oraz danych (port TCP 20 w trybie aktywnym lub porty dynamiczne w trybie pasywnym). Protokół ten nie posiada żadnego szyfrowania; dane logowania i pliki transmitowane są czystym tekstem, co czyni go skrajnie podatnym na ataki sniffing i podsłuch w sieciach lokalnych.
2. FTPS (FTP over SSL/TLS, RFC 4217) – to klasyczny protokół FTP opakowany w warstwę kryptograficzną TLS. Choć zapewnia poufność danych, dziedziczy wszystkie poważne wady architektoniczne FTP: wymaga otwierania wielu dynamicznych portów połączeń danych, co sprawia ogromne problemy przy przechodzeniu przez translatory NAT i nowoczesne korporacyjne zapory ogniowe.
3. SFTP (SSH File Transfer Protocol, RFC 4251) – to całkowicie odrębny, binarny protokół opracowany przez grupę roboczą IETF SECSH. SFTP nie ma żadnego związku z kodem ani logiką FTP! Działa jako podsystem (subsystem) wewnątrz pojedynczego, bezpiecznego połączenia protokołu SSH na standardowym porcie TCP 22.

Zalety SFTP sprawiły, że stał się on bezdyskusyjnym standardem w profesjonalnych środowiskach korporacyjnych. Do uruchomienia bezpiecznego transferu plików wystarczy otworzyć na zaporze sieciowej jeden port (TCP 22), eliminując skomplikowane reguły inspekcji pomocniczej (algorytmy ALG/conntrack) wymagane przez FTP. Ponadto SFTP wykorzystuje całą infrastrukturę uwierzytelniania SSH, w tym silne logowanie oparte na parach asymetrycznych kluczy kryptograficznych (np. ED25519), co eliminuje konieczność utrzymywania haseł w plikach konfiguracyjnych.

30/55
Keep-Alive w HTTP/1.1
Cel slajdu: Przedstawienie mechanizmu trwałych połączeń TCP (Persistent Connections) w HTTP/1.1, nagłówka Connection: keep-alive oraz optymalizacji narzutu Three-Way Handshake.

Sprawdź swoją wiedzę

Pytanie: Jak działa Keep-Alive w HTTP/1.1?

Odpowiedź: Keep-Alive utrzymuje połączenie TCP otwarte po odpowiedzi, pozwalajc na wysłanie wielu żądań bez ponownego handshake. Zmniejsza opóźnienia.

Połączenia trwałe (Persistent Connections / Keep-Alive) w protokole HTTP to mechanizm utrzymywania otwartego gniazda TCP dla wielu sekwencyjnych żądań i odpowiedzi, domyślnie aktywny w HTTP/1.1 (RFC 9112), redukujący opóźnienia związane z ponawianiem trójkrokowego uzgadniania sesji TCP.
HTTP/1.0 vs HTTP/1.1 Keep-Alive

W pierwotnej specyfikacji protokołu HTTP/1.0 każde pojedyncze żądanie zasobu wymagało nawiązania nowego połączenia TCP i natychmiastowego zamknięcia go po przesłaniu odpowiedzi przez serwer (tzw. Short-Lived Connection). Współczesna strona internetowa składa się jednak z setek drobnych obiektów: skryptów JavaScript, arkuszy CSS, czcionek webowych i grafik. W modelu HTTP/1.0 pobranie 100 elementów strony wymagałoby przeprowadzenia 100 procedur trójkrokowego uzgadniania TCP (Three-Way Handshake), 100 procedur zamykania połączenia oraz wielokrotnego restartowania algorytmu Slow Start w TCP, co drastycznie degradowało czas ładowania strony (latency).

Standard RFC 9112 (HTTP/1.1) rozwiązał ten problem, wprowadzając mechanizm połączeń trwałych (Persistent Connections) jako domyślne zachowanie protokołu. Klient i serwer po przesłaniu pierwszego zasobu utrzymują gniazdo TCP w stanie ESTABLISHED, przesyłając kolejne zapytania w tym samym strumieniu. Nagłówek Connection: keep-alive (często z dodatkowym parametrem Keep-Alive: timeout=5, max=100) precyzuje, jak długo gniazdo ma pozostać otwarte w oczekiwaniu na kolejne pakiety oraz ile maksymalnie transakcji może zostać obsłużonych w ramach jednej sesji.

Utrzymanie otwartego gniazda TCP przynosi ogromne korzyści wydajnościowe: eliminuje opóźnienia RTT na uzgadnianie połączenia, pozwala oknu przeciążenia cwnd osiągnąć optymalny rozmiar i drastycznie redukuje zużycie pamięci w jądrze systemu operacyjnego. Aby zamknąć połączenie po zakończeniu pobierania wszystkich niezbędnych zasobów, strona wysyłająca dołącza w nagłówku dyrektywę Connection: close, po czym następuje standardowa sekwencja zamknięcia FIN/ACK.

31/55
Procedura TLS handshake
Cel slajdu: Przedstawienie etapów uzgadniania kryptograficznego TLS Handshake, redukcji liczby RTT w standardzie TLS 1.3 oraz procesu negocjacji symetrycznych kluczy sesyjnych.

Sprawdź swoją wiedzę

Pytanie: Co to jest TLS handshake?

Odpowiedź: Klient i serwer uzgadniają wersję TLS, wymieniają certyfikaty, ustalaj klucze symetryczne do szyfrowania sesji.

Uzgadnianie TLS (TLS Handshake) to protokół negocjacji kryptograficznej realizowany na początku sesji HTTPS, który weryfikuje tożsamość serwera za pomocą certyfikatu X.509, uzgadnia zestaw algorytmów (Cipher Suite) i bezpiecznie generuje jednorazowe symetryczne klucze sesyjne (RFC 8446 (TLS 1.3)).
Schemat TLS handshake

Nawiązanie bezpiecznego połączenia HTTPS wymaga przeprowadzenia dwóch następujących po sobie faz uzgadniania: najpierw trójkrokowego uzgadniania w warstwie transportowej (TCP Handshake), a bezpośrednio po nim negocjacji kryptograficznej w warstwie bezpieczeństwa (TLS Handshake). Standard RFC 8446 (TLS 1.3) wprowadził rewolucyjne zmiany w stosunku do starszego TLS 1.2, skracając czas negocjacji z dwóch pełnych obiegów sieciowych (2-RTT) do zaledwie jednego (1-RTT), a jednocześnie usuwając przestarzałe i podatne algorytmy kryptograficzne (np. RSA Key Exchange, CBC, RC4, MD5, SHA-1).

Przebieg nowoczesnego uzgadniania TLS 1.3 (1-RTT) wygląda następująco: 1. Client Hello – klient wysyła listę obsługiwanych szyfrów (Cipher Suites), wersję protokołu, losowy ciąg Client Random, nazwę serwera SNI (Server Name Indication) oraz – co jest innowacją TLS 1.3 – propozycję klucza publicznego Diffie-Hellmana (Key Share) dla wybranych krzywych eliptycznych (np. X25519). 2. Server Hello + Encrypted Extensions + Certificate + Certificate Verify + Finished – serwer wybiera szyfr, generuje swój własny udział klucza (Server Key Share) i odsyła go do klienta. W tym momencie obie strony posiadają już komplet danych do niezależnego wyliczenia wspólnego symetrycznego klucza sesji (Master Secret) za pomocą algorytmu ECDHE! 3. Wszystkie dalsze komunikaty serwera (w tym przesłanie certyfikatu X.509 oraz podpis cyfrowy Certificate Verify) są już w pełni zaszyfrowane kluczem sesyjnym, co uniemożliwia biernemu obserwatorowi podejrzenie certyfikatu strony w medium.

Kluczową zaletą architektury TLS 1.3 jest zagwarantowanie doskonałego utajniania z wyprzedzeniem (PFS - Perfect Forward Secrecy). Dzięki generowaniu efemerycznych kluczy Diffie-Hellmana dla każdej sesji, nawet jeśli klucz prywatny serwera zostanie w przyszłości skradziony przez przestępców, nie pozwoli to na odszyfrowanie nagranych wcześniej zrzutów ruchu sieciowego.

32/55
Narzędzie dig do DNS
Cel slajdu: Przedstawienie zaawansowanego wykorzystania narzędzia dig do diagnostyki DNS, interpretacji sekwencji zapytań i analizy flag odpowiedzi.

Sprawdź swoją wiedzę

Pytanie: Do czego służy narzędzie dig?

Odpowiedź: dig (Domain Information Groper) – zaawansowane narzędzie do zapytań DNS, pokazuje wszystkie szczegóły odpowiedzi.

dig (Domain Information Groper) to profesjonalne, elastyczne narzędzie wiersza poleceń w środowiskach uniksowych i Linux służące do wykonywania bezpośrednich zapytań do serwerów nazw DNS i szczegółowej analizy struktury odpowiedzi zgodnie ze specyfikacją RFC 1035 i BIND 9.
Zrzut ekranu z dig

W profesjonalnej administracji sieciami komputerowymi polecenie dig jest bezapelacyjnym liderem w diagnostyce systemu DNS, całkowicie deklasując starsze narzędzie nslookup. Podczas gdy nslookup korzysta z funkcji bibliotecznych systemu operacyjnego i ukrywa wiele szczegółów protokołu, dig wysyła precyzyjnie skonstruowane zapytania sieciowe bezpośrednio do wskazanego serwera DNS i wyświetla wierną reprezentację odebranego pakietu odpowiedzi wraz z metadanymi protokołu.

Typowa składnia wywołania narzędzia obejmuje: dig @serwer_dns nazwa_domeny typ_rekordu +opcje, np. dig @1.1.1.1 pw.edu.pl A +noall +answer. Wynik zwrócony przez dig dzieli się na czytelne sekcje: - Header Flags: informuje o stanie odpowiedzi: opcode: QUERY, status: NOERROR (lub NXDOMAIN – brak domeny), flagi: qr (odpowiedź), rd (Recursion Desired – zapytanie rekurencyjne), ra (Recursion Available – serwer obsługuje rekurencję), aa (Authoritative Answer – odpowiedź pochodzi bezpośrednio z serwera autorytatywnego dla strefy). - QUESTION SECTION: precyzuje, o co pytano (np. pw.edu.pl. IN A). - ANSWER SECTION: prezentuje zwrócone rekordy zasobowe, ich klasę (zwykle IN – Internet), typ oraz wartość parametru TTL w sekundach (czas, przez jaki wpis może być buforowany). - Stats: zawiera czas wykonania zapytania w milisekundach (Query time), adres IP i port serwera odpowiadającego oraz dokładną datę i rozmiar pakietu w bajtach.

Niezwykle potężną funkcją diagnostyczną jest flaga +trace (np. dig +trace google.com). Uruchamia ona pełne, iteracyjne śledzenie procesu rezolucji DNS od serwerów głównych Root (.), poprzez serwery domeny najwyższego poziomu TLD (.com), aż po serwery autorytatywne badanej domeny. Pozwala to natychmiast zlokalizować, na którym poziomie hierarchii wystąpił błąd delegacji strefy lub awaria serwera nazw.

33/55
Różnica między GET a POST
Cel slajdu: Przeanalizowanie różnic semantycznych, syntaktycznych i bezpieczeństwa pomiędzy metodami HTTP GET i POST w oparciu o pojęcia bezpieczeństwa i idempotentności.

Sprawdź swoją wiedzę

Pytanie: Jaka jest różnica między metodami GET a POST w HTTP?

Odpowiedź: GET – pobiera dane, parametry w URL (widoczne). POST – wysyła dane, parametry w ciele żądania (niewidoczne).

Metody HTTP GET i POST to podstawowe czasowniki protokołu HTTP zdefiniowane w RFC 9110; metoda GET jest bezpieczna i idempotentna (służy do odczytu danych), natomiast POST jest nieidempotentna (służy do przesyłania danych w celu ich przetworzenia na serwerze).
GET vs POST

Właściwe zrozumienie semantyki metod HTTP GET i POST stanowi fundament architektury aplikacji internetowych oraz projektowania interfejsów programistycznych RESTful API. Standard RFC 9110 wprowadza dwa kluczowe pojęcia formalne charakteryzujące metody:

1. Bezpieczeństwo (Safe Method) – metoda jest bezpieczna, jeśli jej wywołanie nie powoduje żadnych efektów ubocznych (modyfikacji stanu) na serwerze. Metoda GET jest bezpieczna – jej jedynym celem jest pobranie reprezentacji zasobu. Z kolei metoda POST nie jest bezpieczna, ponieważ jej wykonanie modyfikuje stan bazy danych (np. utworzenie nowego zamówienia w sklepie internetowym).
2. Idempotentność (Idempotent Method) – metoda jest idempotentna, jeśli wielokrotne wykonanie tego samego żądania daje identyczny skutek na serwerze jak wykonanie jednokrotne. Metoda GET jest idempotentna – odpytanie serwera o ten sam dokument dziesięć razy zwraca ten sam stan bez wprowadzania zmian. Metoda POST nie jest idempotentna – wysłanie żądania POST dziesięć razy spowoduje utworzenie dziesięciu odrębnych rekordów lub obciążenie karty płatniczej dziesięć razy!

Różnice techniczne manifestują się również w strukturze komunikatu: - GET przesyła parametry wyłącznie w ciągu zapytania (Query String) wewnątrz adresu URL (np. /search?q=sieci). Z tego względu parametry te są ograniczone długością URL, są widoczne w logach serwerów proxy, historii przeglądarki i podlegają buforowaniu (caching). - POST przesyła dane w ciele wiadomości (Message Body) pod nagłówkami, kodując je w formatach takich jak application/x-www-form-urlencoded, multipart/form-data (przesyłanie plików) lub application/json. Ciało żądania POST nie jest widoczne w pasku adresu, nie podlega ograniczeniom długości URL i domyślnie nie jest buforowane przez serwery pośredniczące.

34/55
Definicja gniazda sieciowego
Cel slajdu: Przedstawienie definicji gniazda sieciowego (Socket API), kwintetu identyfikującego połączenie oraz struktur adresowych jądra systemu operacyjnego.

Sprawdź swoją wiedzę

Pytanie: Co to jest socket?

Odpowiedź: Socket = (IP_src, Port_src, IP_dst, Port_dst, Protokół). Jednoznacznie identyfikuje połączenie sieciowe.

Gniazdo sieciowe (Socket) to programistyczny interfejs komunikacyjny (API) reprezentujący punkt końcowy połączenia w węźle sieciowym, identyfikowany przez kombinację adresu IP i portu transportowego, natomiast pełne połączenie jest jednoznacznie określone przez kwintet (5-tuple) (RFC 1122, POSIX Berkeley Sockets).
Para gniazd klient serwer

Koncepcja gniazda sieciowego (Berkeley Sockets API) została wprowadzona w 1983 roku w systemie BSD UNIX 4.2 i stała się uniwersalnym standardem programowania sieciowego zaimplementowanym we wszystkich współczesnych systemach operacyjnych (Linux, Windows Winsock, macOS). Gniazdo jest abstrakcją systemową reprezentującą punkt końcowy, do którego proces może zapisywać dane (za pomocą funkcji write() lub send()) oraz z którego może odczytywać dane (za pomocą read() lub recv()), dokładnie tak, jakby operował na standardowym pliku dyskowym (zgodnie z uniksową regułą „wszystko jest plikiem”).

W warstwie sieciowej pojedyncze gniazdo lokalne definiowane jest przez parę: {Lokalny adres IP, Lokalny numer portu}. Jednakże pojedyncze gniazdo nasłuchujące (Listening Socket) serwera – na przykład serwera WWW nasłuchującego na porcie 80 – może jednocześnie obsługiwać setki tysięcy niezależnych połączeń od różnych klientów. W jaki sposób system operacyjny bezbłędnie rozróżnia segmenty TCP należące do poszczególnych użytkowników?

Kluczem jest kwintet połączenia (5-tuple), który musi być unikalny dla każdej aktywnej sesji w globalnej tablicy połączeń jądra. Na kwintet składają się: 1. Source IP (adres IP klienta), 2. Source Port (port efemeryczny klienta), 3. Destination IP (adres IP serwera), 4. Destination Port (port usługi na serwerze, np. 80), 5. Protocol (identyfikator protokołu transportowego: TCP = 6, UDP = 17).
Nawet jeśli tysiąc klientów łączy się z tym samym adresem IP i portem serwera WWW, każdy klient posiada inny adres IP lub inny wylosowany port źródłowy, co gwarantuje pełną izolację sesji.

35/55
Flaga RST w TCP
Cel slajdu: Przeanalizowanie okoliczności generowania segmentu z flagą TCP RST, jego semantyki oraz implikacji w diagnostyce sieciowej i cyberbezpieczeństwie.

Sprawdź swoją wiedzę

Pytanie: Kiedy TCP wysyła RST?

Odpowiedź: RST (Reset) – gdy port jest zamknięty, połączenie nieoczekiwanie przerwane, lub pakiet nie pasuje do żadnego połączenia.

Flaga TCP RST (Reset) to 1-bitowe pole sterujące w nagłówku TCP, którego wysłanie natychmiastowo niszczy logiczne połączenie bez procedury potwierdzania, informując drugą stronę o odrzuceniu połączenia lub błędzie niespójności sesji (RFC 9293).
Schemat klient SYN serwer RST

W przeciwieństwie do flagi FIN, która służy do kulturalnego, eleganckiego i obustronnie potwierdzonego zamykania sesji TCP (Graceful Teardown w procedurze FIN → ACK → FIN → ACK), flaga RST (Reset) jest narzędziem brutalnym i bezkompromisowym. Segment z ustawioną flagą RST nie wymaga żadnego potwierdzenia od odbiorcy; jego nadejście powoduje natychmiastowe usunięcie połączenia z tablicy gniazd systemu operacyjnego, wyczyszczenie buforów oraz zgłoszenie błędu aplikacji (np. Connection reset by peer).

Standard RFC 9293 definiuje konkretne scenariusze inżynieryjne, w których stos sieciowy generuje segment RST: 1. Próba połączenia z zamkniętym portem: Jeżeli klient wyśle segment SYN na adres IP serwera, ale na wskazanym porcie docelowym nie nasłuchuje żadna usługa (brak gniazda w stanie LISTEN), jądro systemu operacyjnego serwera natychmiast odsyła pakiet RST/ACK, informując klienta: „Ten port jest zamknięty, nie ponawiaj prób”. 2. Nadejście segmentu dla nieistniejącego połączenia: Jeśli po awarii i restarcie serwera dotrze do niego segment ze starej sesji klienta, serwer (nie posiadając stanu tego połączenia w pamięci) odsyła RST, zmuszając klienta do ponownego uzgodnienia sesji. 3. Awaryjne przerwanie przez aplikację: Gdy proces nagle zakończy działanie z błędem krytycznym (crash) lub zamknie gniazdo z opcją SO_LINGER ustawioną na czas 0, nieskonsumowane dane są porzucane, a partner otrzymuje segment RST.

W analizie bezpieczeństwa segmenty RST odgrywają kluczową rolę w zaporach ogniowych i systemach zapobiegania włamaniom (IPS). Niektóre zaawansowane reguły firewalli (np. w iptables opcja -j REJECT --reject-with tcp-reset) celowo odsyłają pakiet RST w odpowiedzi na niedozwolone próby połączeń, aby natychmiast zakończyć sesję skanera podatności, zamiast zmuszać klienta do długotrwałego oczekiwania na timeout przy cichym odrzuceniu DROP.

36/55
Klasyfikacja kodów HTTP
Cel slajdu: Przedstawienie taksonomii pięciu klas kodów statusu protokołu HTTP, ich interpretacji semantycznej oraz typowych reprezentantów w architekturze WWW.

Sprawdź swoją wiedzę

Pytanie: Jakie są rodzaje kodów statusu HTTP?

Odpowiedź: 1xx (informacyjne), 2xx (sukces – 200 OK), 3xx (przekierowanie – 301, 302), 4xx (błąd klienta – 404), 5xx (błąd serwera – 500).

Kody statusu HTTP (HTTP Status Codes) to 3-cyfrowe kody numeryczne zdefiniowane w RFC 9110, podzielone na 5 logicznych klas na podstawie pierwszej cyfry: 1xx (informacyjne), 2xx (sukces), 3xx (przekierowania), 4xx (błędy klienta) oraz 5xx (błędy serwera).
Tabela z kodami HTTP

Standard RFC 9110 systematyzuje odpowiedzi serwerów WWW za pomocą 3-cyfrowych kodów, które precyzyjnie definiują rezultat przetworzenia nadesłanego żądania. Każda z pięciu klas kodów odpowiada innemu etapowi cyklu życia transakcji i narzuca oprogramowaniu klienckiemu określone zachowanie algorytmiczne:

1. Klasa 1xx (Informational): Kody tymczasowe sygnalizujące trwanie przetwarzania. Przykłady: 100 Continue (informuje klienta, że nagłówki zostały zaakceptowane i może wysłać duże ciało wiadomości) oraz 101 Switching Protocols (używane w procedurze uaktualnienia połączenia HTTP do pełnodupleksowego protokołu WebSocket).
2. Klasa 2xx (Successful): Potwierdzenie pomyślnego wykonania żądanej akcji. Przykłady: 200 OK (standardowy sukces pobrania zasobu), 201 Created (żądanie doprowadziło do pomyślnego utworzenia nowego zasobu na serwerze) oraz 204 No Content (akcja wykonana poprawnie, lecz serwer celowo nie odsyła ciała odpowiedzi).
3. Klasa 3xx (Redirection): Wymagają od klienta skierowania zapytania pod inny adres URI. Przykłady: 301 Moved Permanently (trwała zmiana adresu), 302 Found (tymczasowe przekierowanie), 304 Not Modified (zasób w lokalnym buforze pamięci podręcznej przeglądarki jest nadal aktualny – ogromna optymalizacja transferu) oraz 308 Permanent Redirect.
4. Klasa 4xx (Client Error): Wskazują, że żądanie zawierało błąd lub nie mogło zostać spełnione z przyczyn leżących po stronie klienta. Przykłady: 400 Bad Request, 401 Unauthorized (brak poświadczeń), 403 Forbidden (odmowa dostępu mimo uwierzytelnienia), 404 Not Found oraz 429 Too Many Requests (przekroczenie limitów zapytań Rate Limiting).
5. Klasa 5xx (Server Error): Oznaczają awarię lub niemożność przetworzenia poprawnego zapytania przez infrastrukturę serwerową. Przykłady: 500 Internal Server Error (błąd skryptu aplikacyjnego), 502 Bad Gateway (serwer proxy odebrał nieprawidłową odpowiedź od serwera nadrzędnego), 503 Service Unavailable (przeciążenie serwera lub przerwa techniczna) oraz 504 Gateway Timeout (brak odpowiedzi serwera docelowego w wyznaczonym czasie).

37/55
Rekord CNAME w DNS
Cel slajdu: Przedstawienie roli i ograniczeń rekordu CNAME (Canonical Name) w architekturze DNS oraz problemu strefy głównej (Zone Apex / CNAME at Root).

Sprawdź swoją wiedzę

Pytanie: Do czego służy rekord CNAME w DNS?

Odpowiedź: CNAME (Canonical Name) – alias domeny. Np. www.example.com → CNAME → example.com.

Rekord CNAME (Canonical Name Record) to rekord zasobowy systemu DNS definiujący alias mapujący daną nazwę domenową na inną nazwę kanoniczną wskazaną w rekordzie docelowym (RFC 1034, RFC 1035).
Schemat www CNAME domena A IP

Rekord CNAME (Canonical Name) jest mechanizmem tworzenia logicznych aliasów w hierarchicznej przestrzeni nazw DNS. Jeżeli organizacja posiada fizyczny serwer o nazwie kanonicznej serwer12.hosting.example.com posiadający przypisany rekord A z adresem IP, może utworzyć wiele rekordów CNAME dla poszczególnych usług, np. www.example.com CNAME serwer12.hosting.example.com oraz ftp.example.com CNAME serwer12.hosting.example.com. Gdy resolver DNS przetwarza zapytanie o www.example.com, po napotkaniu rekordu CNAME automatycznie ponawia procedurę rozwiązywania nazwy dla wskazanego celu kanonicznego.

Zaletą tego rozwiązania jest prostota zarządzania: w przypadku zmiany fizycznego adresu IP serwera hostingowego administrator musi zmodyfikować wyłącznie jeden rekord A (dla serwer12.hosting.example.com), a wszystkie dziesiątki aliasów CNAME wskazujących na tę nazwę natychmiast zaczną kierować ruch na nowy adres bez konieczności jakiejkolwiek edycji.

Istnieje jednak fundamentalne ograniczenie architektoniczne narzucone przez specyfikację RFC 1034: jeżeli dla danej nazwy węzła istnieje rekord CNAME, nie może dla niego istnieć żaden inny rekord zasobowy. Zasada ta rodzi tzw. problem wierzchołka strefy (Zone Apex lub Root Domain, np. domeny example.com bez przedrostka www). Na poziomie wierzchołka strefy muszą bezwzględnie istnieć rekordy SOA oraz rekordy NS! Zgodnie ze standardem uniemożliwia to umieszczenie rekordu CNAME bezpośrednio w korzeniu strefy (example.com). Nowoczesne serwery DNS w chmurze (np. Cloudflare, AWS Route 53) rozwiązują ten problem za pomocą mechanizmu spłaszczania CNAME (CNAME Flattening / rekordy ALIAS/ANAME), syntetyzując w locie rekord A w odpowiedzi na zapytania o wierzchołek domeny.

38/55
Buforowanie DNS i TTL
Cel slajdu: Przedstawienie mechanizmów buforowania odpowiedzi DNS (Caching) na węzłach pośrednich i stacjach roboczych oraz roli parametru Time to Live (TTL).

Sprawdź swoją wiedzę

Pytanie: Czym jest DNS caching?

Odpowiedź: Lokalna pamięć podręczna odpowiedzi DNS. Przyspiesza kolejne zapytania. Czas życia (TTL) określa, jak długo wpis jest ważny.

Buforowanie DNS (DNS Caching) to mechanizm tymczasowego przechowywania rekordów zasobowych w lokalnej pamięci podręcznej resolverów i hostów przez czas określony parametrem TTL (Time to Live) w sekundach, redukujący opóźnienia i obciążenie serwerów autorytatywnych (RFC 1035, RFC 2308 (Negative Caching)).
Schemat DNS cache

Gdyby każde pojedyncze kliknięcie w link w przeglądarce internetowej wymagało przeprowadzenia pełnego procesu rozwiązywania nazwy DNS od serwerów głównych Root aż po serwery autorytatywne, globalna infrastruktura internetu uległaby natychmiastowemu paraliżowi pod lawiną miliardów zapytań. Skalowalność i wydajność systemu DNS opiera się na wielowarstwowym mechanizmie buforowania (Caching). Odpowiedzi DNS są zapamiętywane w pamięci podręcznej przeglądarki, lokalnego resolvera w systemie operacyjnym (np. systemd-resolved w Linuksie) oraz na serwerach rekurencyjnych dostawcy usług internetowych (ISP Resolver).

Kluczowym parametrem sterującym czasem przechowywania wpisu w buforze jest TTL (Time To Live), wyrażany jako 32-bitowa liczba całkowita reprezentująca sekundy. Właściciel domeny konfiguruje wartość TTL w strefie serwera autorytatywnego dla każdego rekordu z osobna. Typowe wartości wynoszą: - 86400 sekund (24 godziny) – dla rzadko zmienianych rekordów (np. rekordy NS, MX), co maksymalizuje oszczędność pasma i szybkość działania. - 300–600 sekund (5–10 minut) – zalecane przed planowanymi migracjami infrastruktury, aby zmiany adresów IP szybko rozpropagowały się w sieci globalnej. - 60 sekund lub mniej – w architekturach dynamicznego równoważenia obciążenia (DNS Load Balancing / Failover).

Standard RFC 2308 ustandaryzował również mechanizm negatywnego buforowania (Negative Caching). Jeżeli resolver otrzyma odpowiedź, że dana subdomena nie istnieje (kod statusu NXDOMAIN), fakt ten jest również zapamiętywany w buforze przez czas określony w rekordzie SOA strefy (pole MINIMUM). Zapobiega to zalewaniu serwerów autorytatywnych powtarzającymi się zapytaniami o błędne lub złośliwe nazwy domenowe.

39/55
Sprawdzanie otwartych portów
Cel slajdu: Przedstawienie narzędzi i metodyki badania aktywnych gniazd sieciowych i otwartych portów w systemie operacyjnym (ss, netstat, lsof) oraz zdalnie (nmap).

Sprawdź swoją wiedzę

Pytanie: Jak sprawdzić otwarte porty na serwerze?

Odpowiedź: ss -tlnp (Linux; netstat przestarzały) lub netstat -an (Windows) lokalnie, nmap zdalnie, jawny test portu TCP (telnet IP port tylko jako test otwarcia portu).

Skanowanie portów bez zgody może być uznane za atak – zawsze pytaj o zgod!
Badanie otwartych portów i gniazd to procedura diagnostyczna i audytorska weryfikująca aktywne usługi sieciowe nasłuchujące w systemie za pomocą narzędzi lokalnych (ss, lsof w oparciu o podsystem netlink jądra Linux) oraz zdalnych skanerów sieciowych (nmap).
Zrzut ekranu z nmap

Regularna inspekcja aktywnych gniazd sieciowych w systemie operacyjnym jest podstawowym obowiązkiem administratora sieci i systemów IT w ramach twardnienia systemów (System Hardening). Każdy otwarty port w stanie nasłuchiwania (LISTEN) reprezentuje proces aplikacyjny wystawiony na komunikację z medium sieciowym, stanowiąc potencjalny wektor ataku w przypadku wykrycia podatności w oprogramowaniu serwera.

We współczesnych dystrybucjach Linuksa podstawowym narzędziem inspekcji lokalnej jest polecenie ss (Socket Statistics), wchodzące w skład pakietu iproute2, które całkowicie zastąpiło przestarzałe polecenie netstat. Narzędzie ss komunikuje się bezpośrednio z jądrem systemu przez interfejs Netlink, co pozwala na błyskawiczne pobieranie informacji nawet w systemach obsługujących dziesiątki tysięcy równoległych sesji. Kluczowe parametry wywołania to: - ss -tuln: wyświetla wszystkie gniazda TCP (-t) i UDP (-u) w stanie nasłuchiwania (-l) z numerycznymi adresami i portami bez translacji DNS (-n). - ss -tulpn: dodaje identyfikator procesu (PID) oraz nazwę programu (-p), co wymaga uprawnień administratora root/sudo. - ss -s: prezentuje całościowe statystyki podsumowujące stany gniazd w jądrze.

Do badania portów z perspektywy zdalnej sieci (np. w celu weryfikacji skuteczności reguł zapory ogniowej) wykorzystuje się zaawansowany skaner Nmap (Network Mapper). Wykonując skanowanie typu SYN Stealth Scan (nmap -sS -p- 192.168.1.1), Nmap wysyła pakiety SYN i na podstawie odpowiedzi (SYN-ACK dla portu otwartego, RST dla portu zamkniętego lub brak odpowiedzi przy blokowaniu przez firewall ze stanem filtered) tworzy pełną mapę usług dostępnych na badanym hoście.

40/55
Telnet w diagnostyce sieci
Cel slajdu: Przedstawienie wykorzystania klienta Telnet oraz nowoczesnych alternatyw (nc, curl, Test-NetConnection) do szybkiej weryfikacji dostępności portów TCP warstwy 4.

Sprawdź swoją wiedzę

Pytanie: Co to jest telnet w kontekcie diagnostyki?

Odpowiedź: jawny test portu TCP (telnet IP port) – testuje, czy port jest otwarty i czy serwer odpowiada; do logowania służy wyłącznie SSH. Np. telnet smtp.gmail.com 25 sprawdza serwer SMTP.

Testowanie połączeń L4 za pomocą klienta Telnet / Netcat to technika diagnostyczna polegająca na próbie zestawienia sesji TCP z wybranym portem docelowym w celu weryfikacji osiągalności usługi i drożności zapór sieciowych bez uruchamiania dedykowanej aplikacji klienckiej (RFC 854).
Zrzut ekranu z telnet

Chociaż protokół Telnet został słusznie wycofany z eksploatacji jako narzędzie do zdalnego zarządzania serwerami ze względu na brak szyfrowania, sam program kliencki telnet przez dekady pozostawał jednym z najpopularniejszych narzędzi w podręcznym arsenale inżyniera sieciowego. Wynika to z faktu, że klient Telnet jest w istocie uniwersalnym, prostym klientem TCP: potrafi nawiązać surowe połączenie trójkrokowe z dowolnym adresem IP na dowolnym wskazanym porcie transportowym (np. telnet poczta.example.com 25 lub telnet serwer.local 80).

Wykonanie takiego testu pozwala inżynierowi natychmiastowo rozstrzygnąć kluczowy dylemat diagnostyczny: „Czy problem leży w sieci (brak routingu, zablokowany port na zaporze ogniowej), czy też w samej aplikacji warstwy 7?”. Jeśli po wpisaniu polecenia ekran terminala natychmiast wyświetla komunikat Connected to serwer, inżynier ma 100% pewności, że: 1. Routing w warstwie IP działa poprawnie w obu kierunkach. 2. Zapory ogniowe na trasie przepuszczają pakiety TCP. 3. Usługa po stronie serwera nasłuchuje na wskazanym porcie i pomyślnie przeszła procedurę Three-Way Handshake.
W przypadku braku odpowiedzi (zawieszenie terminala na Trying...) przyczyną jest blokowanie ruchu przez firewall, natomiast natychmiastowy komunikat Connection refused świadczy o odesłaniu pakietu RST przez serwer (zamknięty port).

We współczesnych systemach operacyjnych klient Telnet jest często domyślnie odinstalowany. Doświadczeni inżynierowie zastępują go nowocześniejszymi i bardziej elastycznymi narzędziami: - W systemie Linux: nc -zv 192.168.1.10 443 (narzędzie Netcat w trybie skanowania portu) lub curl -v telnet://192.168.1.10:80. - W systemie Windows PowerShell: polecenie cmdlet Test-NetConnection -ComputerName 192.168.1.10 -Port 443, które dodatkowo weryfikuje trasę routingu i rozstrzyganie nazw DNS.

41/55
Analiza HTTP w Wireshark
Cel slajdu: Praktyczne przećwiczenie przechwytywania i laboratoryjnej analizy transakcji HTTP/1.1 w programie Wireshark, dekodowania nagłówków żądania i wiersza statusu.

Wykonaj samodzielnie – Analiza HTTP w Wireshark

  1. Otwórz Wireshark, przechwyć żądanie HTTP do dowolnej strony (http://, nie https://)
  2. Znajd metod HTTP, Host, User-Agent, kod odpowiedzi
  3. Rozwiń sekcję Hypertext Transfer Protocol – przeanalizuj wszystkie nagłówki
  4. Zapisz zrzut ekranu z rozwiniętym nagłówkiem HTTP
Laboratoryjna analiza ruchu HTTP to procedura badawcza z wykorzystaniem analizatora pakietów Wireshark (Wireshark User's Guide), weryfikująca syntaktykę żądań i odpowiedzi HTTP w odniesieniu do normy RFC 9112.
Zrzut ekranu Wireshark HTTP

Ćwiczenie laboratoryjne polegające na przechwyceniu i dekompozycji nieszyfrowanego ruchu HTTP stanowi najlepszy sposób na utrwalenie wiedzy o architekturze żądanie-odpowiedź. Aby zrealizować zadanie, student uruchamia analizator Wireshark na aktywnym interfejsie sieciowym (np. eth0 lub karcie Wi-Fi), a następnie w polu filtra wyświetlania (Display Filter) wpisuje regułę: http. Po uruchomieniu przechwytywania należy w przeglądarce otworzyć przykładową stronę testową nieszyfrowaną (np. http://info.cern.ch lub lokalny serwer testowy).

W oknie listy pakietów Wiresharka natychmiast uwidoczni się zielona linia reprezentująca pakiet GET / HTTP/1.1. W dolnym panelu szczegółów pakietu (Packet Details) student powinien rozwinąć poszczególne warstwy stosu TCP/IP: 1. Frame / Ethernet II: weryfikacja adresów fizycznych MAC nadawcy i bramy domyślnej. 2. Internet Protocol Version 4: weryfikacja adresu IP źródłowego klienta oraz adresu IP serwera docelowego, a także wartości pola Protocol (wartość 6 oznaczająca TCP). 3. Transmission Control Protocol: analiza portu źródłowego (losowy port wysoki) oraz portu docelowego (80), a także numeru sekwencyjnego SEQ i potwierdzenia ACK. 4. Hypertext Transfer Protocol: pełna dekonstrukcja warstwy aplikacji. Student analizuje linię żądania (Request Method: GET, Request URI: /, Request Version: HTTP/1.1) oraz nagłówki klienta (Host, User-Agent, Accept, Accept-Encoding).

Kolejnym krokiem ćwiczenia jest odnalezienie odpowiadającego pakietu serwera (zwykle oznaczonego jako HTTP/1.1 200 OK). Wireshark w nagłówku HTTP prezentuje nagłówki serwera (np. Server: Apache, Content-Type: text/html) oraz ładunek danych w sekcji Line-based text data. Kliknięcie prawym przyciskiem myszy na pakiet i wybranie opcji Follow → TCP Stream pozwala obejrzeć pełną, nieprzerwaną konwersację w postaci kolorowego tekstu (czerwony – zapytanie klienta, niebieski – odpowiedź serwera), co doskonale ilustruje strumieniową naturę protokołu TCP.

42/55
Badanie DNS i netstat
Cel slajdu: Praktyczne opanowanie poleceń dig do badania rekordów DNS oraz narzędzia ss do inspekcji lokalnych gniazd sieciowych w systemie Linux.

Wykonaj samodzielnie – Diagnostyka DNS i gniazd

  1. Sprawdź konfigurację DNS: nslookup google.pl i nslookup -type=MX google.pl
  2. Wykonaj netstat -an – jakie połączenia są aktywne?
  3. Sprawd, jakie porty słucha twój komputer (netstat -anb Windows, ss -tln Linux)
Diagnostyka systemowa stosu sieciowego obejmuje weryfikację rozstrzygania nazw za pomocą narzędzia dig (RFC 1035) oraz analizę aktywnych punktów końcowych L4 w jądrze za pomocą polecenia ss z pakietu iproute2.
Zrzuty ekranu z wynikami polece

W ramach drugiego zadania laboratoryjnego student wciela się w rolę administratora sieci diagnozującego środowisko hosta. Pierwszy etap polega na zbadaniu struktury rekordów DNS dla wybranej domeny akademickiej (np. pw.edu.pl) z poziomu wiersza poleceń terminala Linux. Student wykonuje sekwencję poleceń:

1. Zapytanie o adresy IPv4: dig pw.edu.pl A +noall +answer – weryfikacja rekordów A oraz czasu TTL.
2. Zapytanie o serwery pocztowe: dig pw.edu.pl MX +noall +answer – analiza priorytetów serwerów MTA.
3. Zapytanie do konkretnego serwera publicznego z pominięciem resolvera lokalnego: dig @8.8.8.8 pw.edu.pl A – porównanie czasu zapytania (Query time) i flag odpowiedzi (sprawdzenie obecności flagi ra).
4. Inspekcja rekordów SPF/DKIM: dig pw.edu.pl TXT +noall +answer – odnalezienie polityki bezpieczeństwa poczty v=spf1 ....

Drugi etap ćwiczenia skupia się na inspekcji gniazd sieciowych lokalnego systemu operacyjnego za pomocą polecenia ss. Student uruchamia terminal z uprawnieniami administratora i wpisuje komendę: sudo ss -tulpn. W wyniku otrzymuje tabelę prezentującą wszystkie otwarte gniazda TCP i UDP w stanie LISTEN. Zadaniem studenta jest zidentyfikowanie: - Kolumny Netid (tcp / udp), - Kolumny Local Address:Port (odróżnienie gniazd nasłuchujących na wszystkich interfejsach 0.0.0.0:* lub :::* od gniazd ograniczonych do pętli zwrotnej 127.0.0.1:*), - Kolumny Process, w której jądro systemu wskazuje dokładną nazwę procesu (np. sshd, systemd-resolve, nginx) oraz jego unikalny identyfikator PID. Umiejętność ta jest kluczowa przy wykrywaniu nieautoryzowanych usług i trojanów nasłuchujących w systemie.

43/55
Dopasowywanie portów do protokołów
Cel slajdu: Utrwalenie standardowego przyporządkowania portów transportowych do protokołów aplikacyjnych (22-SSH, 80-HTTP, 443-HTTPS, 53-DNS, 25-SMTP) w rejestrze IANA.

Dopasuj port do protokołu

PortProtokół
22?
80?
443?
53?
25?

Odpowiedzi: 22 – SSH, 80 – HTTP, 443 – HTTPS, 53 – DNS, 25 – SMTP.

Porty standardowe (Well-Known Ports) to numery z zakresu 0–1023 przypisane przez IANA do uniwersalnych usług internetowych zgodnie z normą RFC 6335.
Tabela z portami na osi czasu

Błyskawiczne i bezbłędne kojarzenie numerów portów transportowych z obsługiwanymi protokołami warstwy aplikacji jest podstawowym wymogiem stawianym każdemu inżynierowi sieciowemu podczas egzaminów certyfikacyjnych (np. Cisco CCNA, CompTIA Network+) oraz w codziennej pracy inżynierskiej. Przedstawione w ćwiczeniu zestawienie obejmuje fundamenty współczesnej komunikacji sieciowej:

1. Port 22 → SSH (Secure Shell): Wykorzystuje transport TCP. Służy do bezpiecznego, szyfrowanego zarządzania terminalowego urządzeniami, wykonywania poleceń oraz bezpiecznego transferu plików przez SFTP/SCP. Całkowicie zastąpił historyczny port 23 (Telnet).
2. Port 80 → HTTP (Hypertext Transfer Protocol): Wykorzystuje transport TCP. Bazowy port transmisji stron WWW w postaci nieszyfrowanej. We współczesnych wdrożeniach służy głównie do nasłuchiwania w celu odesłania natychmiastowego przekierowania HTTP 301/308 do portu HTTPS.
3. Port 443 → HTTPS (HTTP Secure): Wykorzystuje transport TCP w wersji HTTP/1.1 i HTTP/2 (opakowany w protokół TLS 1.3), a w najnowszym standardzie HTTP/3 wykorzystuje protokół UDP na tym samym porcie 443 w oparciu o technologię QUIC (RFC 9000).
4. Port 53 → DNS (Domain Name System): Protokół hybrydowy. W standardowym scenariuszu zapytanie-odpowiedź wykorzystuje transport UDP w celu minimalizacji opóźnień i narzutu. W przypadku transferów stref (AXFR), zapytań o dużych rozmiarach DNSSEC lub przy braku obsługi EDNS0 przełącza się automatycznie na protokół TCP.
5. Port 25 → SMTP (Simple Mail Transfer Protocol): Wykorzystuje transport TCP. Tradycyjny port służący do wymiany przesyłek pocztowych pomiędzy serwerami pocztowymi MTA (Server-to-Server Relay).

Podczas tworzenia polityk bezpieczeństwa na brzegowych zaporach sieciowych (Firewall) inżynier musi precyzyjnie definiować kierunki ruchu. Na przykład: zezwolenie na ruch wychodzący dla stacji roboczych powinno obejmować porty TCP 80, TCP 443 oraz UDP/TCP 53, podczas gdy port TCP 25 powinien być dla zwykłych stacji bezwzględnie zablokowany, aby uniemożliwić zainfekowanym komputerom rozsyłanie spamu w charakterze maszyn botnetowych.

44/55
Przechwytywanie DNS w Wireshark
Cel slajdu: Praktyczne przećwiczenie przechwytywania i analizy transakcji DNS w Wiresharku z wykorzystaniem Transaction ID i flag nagłówka DNS.

Przechwyć zapytanie DNS w Wireshark

  1. Uruchom Wireshark, filtr: dns
  2. Wykonaj nslookup google.pl
  3. Znajd w przechwyconym ruchu zapytanie DNS (Type A) i odpowiedź
  4. Zidentyfikuj pola: Transaction ID, Flags, Questions, Answers
Analiza protokołu DNS w Wireshark to proces inspekcji datagramów UDP/53, weryfikujący zgodność zapytania i odpowiedzi na podstawie 16-bitowego identyfikatora Transaction ID oraz bitów sterujących nagłówka DNS (RFC 1035).
Zrzut ekranu z rozwinitym pakietem DNS

Przechwycenie transakcji DNS w programie Wireshark pozwala naocznie zaobserwować, jak lekki i efektywny jest model komunikacji oparty na protokole UDP. Aby przeprowadzić to ćwiczenie laboratoryjne, student otwiera Wireshark, wybiera aktywną kartę sieciową i w polu filtra wpisuje: dns. Następnie w terminalu systemowym wymusza wysłanie pojedynczego zapytania, wpisując komendę: dig example.com A.

W oknie Wiresharka pojawią się natychmiast dokładnie dwa powiązane ze sobą pakiety: 1. Pakiet zapytania (Standard query): wysłany z losowego portu klienta na port UDP 53 serwera DNS. W nagłówku DNS znajduje się 16-bitowe pole Transaction ID (np. 0x4a12) oraz flaga QR = 0 (Query). W sekcji Questions znajduje się poszukiwana nazwa: example.com, Type: A (Host Address), Class: IN. 2. Pakiet odpowiedzi (Standard query response): wysłany z portu UDP 53 serwera z powrotem na port klienta. W pakiecie tym pole Transaction ID ma dokładnie tę samą wartość 0x4a12! To właśnie identyfikator transakcji pozwala klientowi bezbłędnie skojarzyć odpowiedź z właściwym zapytaniem w bezpołączeniowym środowisku UDP.

Szczególną uwagę należy zwrócić na flagi w pakiecie odpowiedzi: - QR = 1: oznacza komunikat odpowiedzi (Response). - AA (Authoritative Answer): flaga informująca, czy odpowiadający serwer jest autorytatywnym zarządcą strefy (wartość 1), czy jedynie serwerem buforującym (wartość 0). - TC (Truncated): wskazuje, czy odpowiedź przekroczyła dopuszczalny rozmiar i została obcięta (co wymusza natychmiastowe powtórzenie zapytania przez TCP). - RD (Recursion Desired) oraz RA (Recursion Available): potwierdzają realizację zapytania w trybie rekurencyjnym. - RCODE (Reply Code): kod błędu, gdzie 0 oznacza No error, a 3 oznacza NXDOMAIN (Non-Existent Domain).

45/55
Obserwacja DORA w Wireshark
Cel slajdu: Praktyczne prześledzenie pełnego cyklu DHCP DORA w środowisku laboratoryjnym za pomocą Wiresharka oraz analiza opcji protokołu DHCP.

DORA w praktyce

  1. Uruchom Wireshark, filtr: dhcp lub bootp
  2. Wykonaj ipconfig /release i ipconfig /renew (Windows) lub dhclient (Linux)
  3. Przeanalizuj cztery pakiety DORA: Discover, Offer, Request, ACK
  4. Sprawd, jakie opcje DHCP są negocjowane (Subnet Mask, Router, DNS)
Laboratoryjna analiza DHCP DORA to procedura inspekcji sekwencji pakietów DHCP (filtry bootp lub dhcp) weryfikująca proces negocjacji adresu IP i parametrów podsieci zgodnie z RFC 2131.
Cztery pakiety DORA w Wireshark

Zaobserwowanie procedury DHCP DORA w rzeczywistym ruchu sieciowym jest jednym z najbardziej pouczających doświadczeń laboratoryjnych. Aby wywołać pełny cykl DORA na stacji roboczej Linux, student uruchamia Wireshark z filtrem dhcp (lub historycznym filtrem bootp), a następnie w terminalu wymusza zwolnienie i ponowne pobranie konfiguracji sieciowej za pomocą poleceń: sudo dhclient -r && sudo dhclient -v (lub odpowiednio ipconfig /release i ipconfig /renew w systemie Windows).

W oknie Wiresharka zarejestrowana zostanie sekwencja czterech kolejnych pakietów. Wnikliwa analiza pól nagłówkowych ujawnia kluczowe mechanizmy inżynieryjne: 1. DHCP Discover: Źródłowy adres IP to 0.0.0.0, a docelowy to rozgłoszeniowy 255.255.255.255. W nagłówku Ethernet docelowy adres MAC to FF:FF:FF:FF:FF:FF. Wewnątrz warstwy Bootstrap Protocol znajduje się pole Client MAC address identyfikujące kartę sieciową studenta oraz Transaction ID (xid) skoordynowany dla całej sesji. W sekcji opcji widoczna jest Option 53: DHCP Message Type = DHCP Discover. 2. DHCP Offer: Serwer przesyła ofertę. W polu Your (client) IP address (yiaddr) widnieje proponowany adres IP (np. 192.168.1.150). W opcjach serwer przesyła swój adres w Option 54 (Server Identifier) oraz proponowany czas dzierżawy w Option 51 (IP Address Lease Time). 3. DHCP Request: Klient formalnie żąda przydziału zaoferowanego adresu, wysyłając pakiet ponownie jako Broadcast 255.255.255.255, wskazując w Option 50 żądany adres IP (Requested IP Address) oraz w Option 54 identyfikator wybranego serwera. 4. DHCP ACK: Serwer ostatecznie potwierdza przydział. W opcjach pakietu student odnajduje pełną konfigurację hosta: Option 1 (Subnet Mask), Option 3 (Router - brama domyślna) oraz Option 6 (Domain Name Server).

Ćwiczenie to pozwala zrozumieć, dlaczego obecność nieautoryzowanego serwera DHCP w sieci lokalnej (tzw. Rogue DHCP Server) stanowi śmiertelne zagrożenie dla bezpieczeństwa sieci. Fałszywy serwer może odpowiedzieć szybciej komunikatem Offer i w opcji 3 wskazać adres IP agresora jako bramę domyślną, realizując w ten sposób całkowity podsłuch ruchu użytkowników (Man-in-the-Middle).

46/55
Analiza sesji TCP w Wireshark
Cel slajdu: Przeanalizowanie pełnego cyklu życia sesji TCP w Wiresharku: nawiązania (SYN, SYN-ACK, ACK), transferu danych z numeracją SEQ/ACK oraz eleganckiego zamknięcia (FIN, ACK).

Przeanalizuj pełną sesję TCP

  1. Przechwy ruch do dowolnej strony HTTP
  2. Znajd trzy pakiety Three-Way Handshake
  3. Kliknij prawym → Follow → TCP Stream – zobacz całą wymianę danych
  4. Zidentyfikuj, gdzie kończy się połączenie (FIN lub RST)
Analiza cyklu życia połączenia TCP to całościowe badanie przebiegu sesji od procedury Three-Way Handshake, poprzez analizę okna przesuwnego i retransmisji, aż po procedurę zamknięcia czterofazowego (FIN-ACK) lub awaryjnego (RST) wg RFC 9293.
Follow TCP Stream w Wireshark

Zdolność do zrekonstruowania i zinterpretowania pełnej sesji TCP w analizatorze pakietów to znak rozpoznawczy doświadczonego inżyniera sieciowego. W ramach tego zadania student rejestruje prostą sesję TCP (np. pobranie pliku przez curl http://example.com) i analizuje ją w Wiresharku z filtrem tcp.port == 80. Pełna sesja dzieli się na trzy wyodrębnione fazy:

Faza 1: Inicjalizacja (Handshake)
- Pakiet 1: Klient wysyła [SYN] z relatywnym numerem Seq=0. W opcjach TCP negocjuje: MSS (np. 1460), SACK Permitted, Window Scale (np. mnożnik 64).
- Pakiet 2: Serwer odpowiada [SYN, ACK] z Seq=0 oraz Ack=1 (potwierdza bajt SYN klienta, który wirtualnie konsumuje 1 numer sekwencyjny).
- Pakiet 3: Klient wysyła [ACK] z Seq=1 i Ack=1. Stan sesji osiąga ESTABLISHED.

Faza 2: Wymiana danych i sterowanie przepływem
- Klient przesyła segment z danymi żądania HTTP GET (np. długość ładunku Len=120). Numer Seq=1, Ack=1.
- Serwer w kolejnym pakiecie odsyła [ACK] z Ack=121 (potwierdza odebranie 120 bajtów: 1 + 120 = 121).
- Następnie serwer przesyła segmenty z danymi odpowiedzi HTTP. Student obserwuje wzrost numerów Seq serwera oraz zmiany wartości pola Window size value i wyliczonego Calculated window size (uwzględniającego wynegocjowany współczynnik Window Scale).

Faza 3: Zamknięcie połączenia (Graceful Teardown)
Po przesłaniu wszystkich danych następuje procedura kulturalnego zamknięcia:
- Serwer wysyła segment z flagami [FIN, ACK], informując: „Nie mam więcej danych do przesłania”. Flaga FIN konsumuje 1 numer sekwencyjny.
- Klient odsyła [ACK] potwierdzający FIN serwera.
- Następnie klient (po zamknięciu swojej strony aplikacji) wysyła własny segment [FIN, ACK].
- Serwer odsyła ostateczny [ACK]. Strona inicjująca zamknięcie przechodzi w stan TIME_WAIT (trwający typowo 2 * MSL, czyli około 60-120 sekund), aby upewnić się, że ostatni ACK dotarł do partnera i nie zakłóci przyszłych sesji na tych samych portach.

47/55
Podsumowanie zdobytej wiedzy
Cel slajdu: Dokonanie syntetycznego podsumowania mechanizmów warstwy transportowej i aplikacji omówionych w module 6 oraz ich wzajemnych zależności architektonicznych.

Co już wiemy?

  • TCP dzieli dane na segmenty, gwarantuje dostarczenie przez ACK i retransmisje
  • UDP jest prosty i szybki – brak gwarancji, ale mały narzut
  • HTTP/HTTPS to podstawa WWW, DNS tłumaczy nazwy, DHCP konfiguruje
  • Każdy protokół ma domyślny port – ściągawka portów to podstawa
  • Wireshark pozwala analizować każdy aspekt komunikacji
Synteza wiedzy o protokołach sieciowych integruje paradygmaty transmisji strumieniowej i datagramowej (TCP wg RFC 9293 vs UDP wg RFC 768) z funkcjami protokołów aplikacyjnych HTTP, HTTPS, DNS, DHCP, FTP/SFTP, SMTP/IMAP oraz SSH.
Mapa myli podsumowująca protokoły

Kończąc merytoryczną część wykładu, warto zebrać najważniejsze wnioski w spójną całość architektoniczną. Podstawowym wnioskiem inżynieryjnym jest zrozumienie, że żaden protokół w stosie TCP/IP nie funkcjonuje w próżni. Każda usługa warstwy aplikacji dobiera protokół warstwy transportowej w sposób ściśle dopasowany do swoich wymagań dotyczących niezawodności, przepustowości, opóźnień oraz odporności na straty pakietów.

W warstwie transportowej opanowaliśmy dwa diametralnie różne modele komunikacji: 1. TCP (Transmission Control Protocol): zorientowany na połączenie, gwarantujący bezbłędne, uporządkowane dostarczenie strumienia danych za cenę narzutu 20-bajtowego nagłówka, trójkrokowego uzgadniania (Three-Way Handshake) oraz konieczności zarządzania buforami i oknami (rwnd, cwnd). Zobaczyliśmy, jak algorytmy kontroli przeciążeń chronią całą sieć internetową przed paraliżem. 2. UDP (User Datagram Protocol): bezpołączeniowy, lekki (zaledwie 8 bajtów narzutu), oferujący natychmiastowe nadawanie bez gwarancji kolejności i dostarczenia, stanowiący fundament telefonii IP, streamingu oraz nowego protokołu QUIC.

W warstwie aplikacji prześledziliśmy działanie mechanizmów leżących u podstaw codziennego funkcjonowania internetu. Zrozumieliśmy, w jaki sposób DNS przekształca nazwy domenowe w adresy IP i dlaczego TTL decyduje o dynamice zmian w sieci; jak proces DHCP DORA w pełni automatyzuje integrację nowego węzła z infrastrukturą lokalną; jak ewoluował protokół HTTP od prostych tekstowych zapytań do wielostrumieniowej, silnie szyfrowanej komunikacji HTTPS/TLS 1.3; oraz dlaczego archaiczne protokoły jawnotekstowe (Telnet, klasyczny FTP) musiały zostać bezwzględnie zastąpione przez kryptograficzne standardy SSH-2 i SFTP.

48/55
Ściągawka protokołów sieciowych
Cel slajdu: Przedstawienie przekrojowej tabeli referencyjnej protokołów sieciowych, ich warstw w modelu ISO/OSI i TCP/IP, numerów portów oraz standardów RFC.

Ściągawka protokołów

ProtokółPortTransportZastosowanie
HTTP80TCPStrony WWW
HTTPS443TCPSzyfrowane WWW
DNS53TCP/UDPTłumaczenie nazw
DHCP67/68UDPKonfiguracja IP
FTP20/21TCPTransfer plików
SSH22TCPZdalny dostęp
SMTP25TCPWysyłanie poczty
POP3110TCPOdbieranie poczty
IMAP143TCPSynchronizacja poczty
Matryca referencyjna protokołów sieciowych to zestawienie kluczowych parametrów technicznych protokołów warstwy L4 i L7, systematyzujące wiedzę inżynierską zgodnie z oficjalnymi rejestrami IANA oraz specyfikacjami IETF RFC.
Ikony protokołów obok tabeli

Jako inżynierowie teleinformatyki i projektanci systemów sieciowych musimy biegle posługiwać się parametrami technicznymi podstawowych protokołów internetowych. Poniższe zestawienie stanowi esencję wiedzy referencyjnej, niezbędną podczas projektowania reguł zapór ogniowych, konfiguracji serwerów oraz rozwiązywania problemów transmisyjnych:

• SSH (Secure Shell): Warstwa aplikacji (L7), transport TCP, port 22. Zapewnia szyfrowaną powłokę terminalową, autoryzację kluczami publicznymi oraz tunelowanie TCP (RFC 4251).
• SMTP (Simple Mail Transfer Protocol): Warstwa aplikacji (L7), transport TCP, port 25 (relay między serwerami MTA) oraz port 587 (submission z autoryzacją SASL i STARTTLS) (RFC 5321).
• DNS (Domain Name System): Warstwa aplikacji (L7), transport UDP i TCP, port 53. Standardowe zapytania klientów po UDP, strefy i pakiety powyżej 512 B po TCP (RFC 1035).
• DHCP (Dynamic Host Configuration Protocol): Warstwa aplikacji (L7), transport UDP, port 67 (serwer) i 68 (klient). Automatyczna konfiguracja IP w cyklu DORA (RFC 2131).
• HTTP / HTTPS: Warstwa aplikacji (L7), port 80 (HTTP jawny, RFC 9112) oraz port 443 (HTTPS z TLS 1.3, RFC 8446). Transport TCP (HTTP/1.1, HTTP/2) lub UDP (HTTP/3 QUIC).
• POP3 / IMAP4: Warstwa aplikacji (L7), transport TCP. POP3 na porcie 110 (szyfrowany 995), IMAP na porcie 143 (szyfrowany 993). Odbiór i synchronizacja poczty elektronicznej (RFC 1939, RFC 3501).
• SNMP / NTP: Warstwa aplikacji (L7), transport UDP. SNMP na porcie 161/162 (zarządzanie siecią), NTP na porcie 123 (synchronizacja czasu zegarów systemowych).

Zestawienie to warto traktować jako punkt wyjścia do tworzenia restrykcyjnych polityk bezpieczeństwa (Default Deny) w systemach zapór ogniowych przedsiębiorstwa, gdzie cały ruch nieznany jest bezwzględnie odrzucany.

49/55
Pytania do samodzielnej powtórki
Cel slajdu: Przedstawienie zestawu przekrojowych pytań kontrolnych sprawdzających dogłębne zrozumienie mechanizmów protokołów TCP, UDP, DNS, HTTP oraz bezpieczeństwa sieciowego.

Pytania do samodzielnego sprawdzenia

  1. Jakie są flagi TCP?
  2. Ile bajtów ma nagłówek TCP, a ile UDP?
  3. Co to jest Three-Way Handshake?
  4. Jakie są etapy DORA w DHCP?
  5. Jakie są kody statusu HTTP?
Zestaw ewaluacyjny modułu 6 to zestaw problemowych pytań akademickich weryfikujących wiedzę z zakresu mechanizmów transportowych, modeli transakcyjnych i diagnostyki protokołów aplikacyjnych.
Ikona znaku zapytania

Prawdziwe opanowanie inżynierii sieciowej nie polega na mechanicznym zapamiętywaniu suchych definicji, lecz na umiejętności logicznego dedukowania, dlaczego protokoły zostały zaprojektowane w dany sposób oraz jak reagują w nietypowych sytuacjach awaryjnych. Poniższy zestaw pytań kontrolnych został skonstruowany z myślą o samodzielnej weryfikacji wiedzy przed podejściem do egzaminu kierunkowego:

1. Pytanie 1 (Warstwa transportowa TCP): Dlaczego procedura Three-Way Handshake wymaga wymiany dokładnie trzech segmentów (SYN, SYN-ACK, ACK), a nie wystarczą dwa (SYN, SYN-ACK)? Jakie krytyczne zagrożenie dla spójności sesji i starych duplikatów pakietów rozwiązał ten projekt?
2. Pytanie 2 (Parametry sieciowe i fragmentacja): W sieci Ethernet ze standardowym MTU = 1500 bajtów skonfigurowano tunel GRE (dodający 24 bajty narzutu). Jaka powinna być poprawna wartość parametru MSS dla protokołu IPv4, aby wyeliminować fragmentację pakietów?
3. Pytanie 3 (Architektura HTTP): Czym różni się kod odpowiedzi 301 Moved Permanently od kodu 302 Found z perspektywy pamięci podręcznej przeglądarki internetowej oraz robotów indeksujących wyszukiwarek?
4. Pytanie 4 (Diagnostyka DNS): Administrator domeny zmienił adres IP serwera WWW w rekordzie A z parametrem TTL = 86400 sekund. Dlaczego część użytkowników w internecie przez kolejne 24 godziny wciąż łączy się ze starym adresem serwera?
5. Pytanie 5 (Protokoły i bezpieczeństwo): Dlaczego protokół SFTP jest z punktu widzenia administratora zapory sieciowej znacznie łatwiejszy i bezpieczniejszy we wdrożeniu niż protokół FTPS w trybie aktywnym?

Zaleca się, aby student podjął próbę samodzielnego sformułowania precyzyjnych, inżynierskich odpowiedzi na powyższe pytania przed przejściem do kolejnego slajdu zawierającego oficjalny klucz rozwiązań.

50/55
Odpowiedzi do pytań powtórkowych
Cel slajdu: Przedstawienie wyczerpujących, akademickich odpowiedzi na pytania kontrolne z analizą inżynieryjną, odwołaniami do norm RFC i najlepszych praktyk.

Odpowiedzi do pytań kontrolnych

  1. SYN, ACK, FIN, RST, PSH, URG
  2. TCP: 20B (minimum), UDP: 8B
  3. SYN → SYN-ACK → ACK
  4. Discover, Offer, Request, ACK
  5. 1xx, 2xx, 3xx, 4xx, 5xx
Klucz odpowiedzi i dyskusja inżynierska zawiera autorytatywne wyjaśnienia zagadnień problemowych modułu 6 oparte na standardach IETF: RFC 9293, RFC 9110 oraz RFC 1035.
Ikona odpowiedzi

Poniżej przedstawiono szczegółowe uzasadnienia inżynieryjne do pytań kontrolnych z poprzedniego slajdu:

Odpowiedź 1 (Three-Way Handshake): Wymiana trzech pakietów jest matematycznie minimalnym warunkiem do uzgodnienia pełnodupleksowego połączenia w zawodnym kanale transmisyjnym. Dwa pakiety nie wystarczą, ponieważ klient musi potwierdzić serwerowi odbiór jego numeru sekwencyjnego ISN_s. Gdyby sesja stawała się aktywna po dwóch krokach, opóźniony i zduplikowany pakiet SYN ze starej, zamkniętej dawno sesji dotarłby do serwera, serwer odpowiedziałby SYN-ACK i niepotrzebnie zaalokował zasoby dla sesji widmo, o której klient nic nie wie. Trzeci pakiet ACK wysłany przez klienta jest ostatecznym dowodem, że to właśnie ten klient zainicjował bieżące połączenie.

Odpowiedź 2 (Kalkulacja MSS z tunelem GRE): W standardowym Ethernecie MTU = 1500 bajtów. Tunel GRE wprowadza dodatkowy nagłówek transportowy IP (20 B) oraz nagłówek GRE (4 B), czyli łącznie 24 bajty narzutu. Efektywne MTU wewnątrz tunelu spada zatem do 1500 - 24 = 1476 bajtów. Wewnątrz tunelu pakiet IPv4 niesie nagłówek IP (20 B) oraz nagłówek TCP (20 B). Poprawna wartość parametru MSS wynosi zatem: 1476 - 20 - 20 = 1436 bajtów.

Odpowiedź 3 (Kody 301 vs 302): Kod 301 informuje o trwałej zmianie adresu – przeglądarka zapamiętuje to przekierowanie w trwałym buforze cache i przy kolejnych próbach łączy się bezpośrednio z nowym adresem bez pytania serwera źródłowego, a wyszukiwarki przenoszą ranking SEO na nowy adres. Kod 302 to przekierowanie tymczasowe – przeglądarka za każdym razem odpytuje stary adres URI, a ranking wyszukiwarki pozostaje przy pierwotnym adresie.

Odpowiedź 4 (Propagacja DNS i buforowanie): Wartość TTL = 86400 sekund oznacza, że serwery rekurencyjne ISP na całym świecie buforują wpis przez 24 godziny od momentu pierwszego zapytania. Dopóki lokalny licznik TTL w buforze danego resolvera nie odliczy do zera, serwer ten nie zapyta serwera autorytatywnego o nową wartość rekordu A, odsyłając użytkownikom stary adres IP.

Odpowiedź 5 (Wdrożenie SFTP vs FTPS): SFTP wymaga otwarcia wyłącznie jednego, standardowego portu TCP 22 na zaporze sieciowej i nie wymaga żadnych inspekcji pakietów. FTPS wymaga otwarcia portu sterowania (990 lub 21) oraz szerokiego zakresu portów dynamicznych dla kanału danych (np. porty 50000–51000), a ponieważ kanał sterujący jest zaszyfrowany TLS, zapory ogniowe nie mogą odczytać komendy PASV (brak możliwości dynamicznego otwierania portów przez conntrack), co prowadzi do blokowania transferu.

51/55
Narzędzia do analizy protokołów
Cel slajdu: Przedstawienie taksonomii profesjonalnych narzędzi inżynierskich do analizy protokołów sieciowych: Wireshark, tcpdump, ss, dig, curl oraz nmap.

Narzędzia do analizy protokołów

  • Wireshark: graficzna analiza pakietów, filtry, statystyki
  • tcpdump/tshark: analiza z wiersza polece
  • netstat/ss: aktywne połączenia i nasłuchujące porty
  • nslookup/dig: zapytania DNS
  • telnet: testowanie portów TCP
Zestaw narzędzi analizy protokołów (Protocol Analysis Toolset) to zintegrowane środowisko programowe obejmujące analizatory pakietów (Wireshark, tcpdump), narzędzia inspekcji gniazd (ss), testery aplikacji (curl) oraz próbniki DNS (dig).
Koa ikon narzdzi

W codziennej praktyce inżynierskiej rozwiązywanie problemów transmisyjnych (troubleshooting) wymaga biegłego posługiwania się odpowiednimi narzędziami diagnostycznymi dopasowanymi do badanej warstwy modelu sieciowego. Nie istnieje jedno uniwersalne narzędzie rozwiązujące każdy problem; kluczem jest synergia pomiędzy programami graficznymi a szybkimi narzędziami wiersza poleceń:

1. Wireshark: Bezdyskusyjny lider w dziedzinie graficznej analizy protokołów. Umożliwia głęboką dekompozycję setek protokołów, rekonstrukcję strumieni TCP (Follow TCP Stream), analizę wykresów czasowo-sekwencyjnych Stevensa oraz badanie zniekształceń głosu w strumieniach VoIP RTP. Stanowi podstawowe środowisko laboratoryjne i audytorskie.
2. tcpdump: Standardowe narzędzie przechwytywania ruchu w serwerach bez interfejsu graficznego (headless Linux/Unix). Lekkie, oparte na bibliotece libpcap, pozwala na precyzyjne filtrowanie ruchu za pomocą wyrażeń BPF (Berkeley Packet Filter), np. tcpdump -i eth0 -nn 'tcp port 80 and host 192.168.1.5' -w zrzut.pcap w celu późniejszej analizy w Wiresharku.
3. ss (Socket Statistics): Najszybsze narzędzie do lokalnego badania stanu gniazd transportowych w Linuksie. Pozwala zweryfikować, czy aplikacja rzeczywiście nasłuchuje na wskazanym porcie i czy nie dochodzi do przepełnienia kolejki połączeń (Listen Backlog).
4. dig (Domain Information Groper): Niezastąpione narzędzie do badania systemu DNS, pozwalające na manualne testowanie odpowiedzi z dowolnego serwera na świecie i analizę flag strefy.
5. curl: Wszechstronny klient HTTP/HTTPS/FTP wiersza poleceń. Za pomocą flagi curl -Iv https://example.com inżynier może błyskawicznie przeanalizować pełny proces negocjacji TLS, certyfikat X.509 oraz nagłówki odpowiedzi HTTP bez uruchamiania ciężkiej przeglądarki.
6. nmap: Uniwersalny skaner sieciowy pozwalający na audyt otwartych portów L4, detekcję wersji usług (Service Version Detection) oraz badanie podatności za pomocą skryptów NSE.

Biegłość w łączeniu tych narzędzi (np. przechwycenie ruchu przez tcpdump na zdalnym routerze i przesyłanie strumienia przez SSH bezpośrednio do lokalnego Wiresharka) to fundament nowoczesnego zarządzania infrastrukturą IT.

52/55
Testowanie portów za pomocą telnet
Cel slajdu: Przedstawienie metodyki ręcznego testowania usług aplikacyjnych (HTTP, SMTP) za pomocą prostych klientów TCP (netcat, openssl s_client).

Testowanie połączenia do serwera

telnet google.pl 80
GET / HTTP/1.1
Host: google.pl

Jeśli port jest otwarty – serwer odpowie nagłówkami HTTP.

Manualne testowanie usług aplikacyjnych to technika weryfikacji syntaktyki protokołów tekstowych poprzez ręczne wprowadzanie komend do surowego połączenia TCP zestawionego narzędziami netcat (nc) lub openssl s_client.
Zrzut ekranu z telnet do portu 80

Jedną z unikalnych i niezwykle cennych cech protokołów internetowych pierwszej i drugiej generacji (takich jak HTTP/1.1, SMTP czy POP3) jest ich tekstowy charakter. Ponieważ komunikaty wymieniane są w czytelnym dla człowieka kodowaniu ASCII, inżynier sieciowy nie musi polegać na gotowych aplikacjach (przeglądarkach, klientach pocztowych), lecz może osobiście wcielić się w rolę klienta, nawiązać surowe połączenie TCP i manualnie przesyłać polecenia protokołu.

Klasycznym przykładem jest ręczne pobranie strony WWW za pomocą narzędzia Netcat (nc):
1. Student wpisuje w terminalu: nc example.com 80.
2. Po nawiązaniu sesji TCP wpisuje ręcznie komendy żądania HTTP/1.1:
GET / HTTP/1.1
Host: example.com
Connection: close
[Enter - pusta linia CRLF]
3. W odpowiedzi serwer natychmiast zwraca wiersz statusu (HTTP/1.1 200 OK), nagłówki odpowiedzi oraz kod HTML strony.

W przypadku usług szyfrowanych nowoczesnym protokołem TLS (np. HTTPS na porcie 443 lub bezpieczna poczta SMTPS na porcie 465) zwykły Netcat jest bezużyteczny, ponieważ nie potrafi przeprowadzić kryptograficznego TLS Handshake. W takim wypadku inżynier sięga po potężne narzędzie OpenSSL: openssl s_client -connect example.com:443. Program najpierw przeprowadza pełną negocjację TLS, wyświetla łańcuch certyfikatów i wynegocjowany szyfr (np. TLS_AES_256_GCM_SHA384), a następnie pozostawia otwarty, w pełni odszyfrowany terminal, w którym inżynier może wpisywać surowe zapytania HTTP dokładnie tak, jak w niezabezpieczonym połączeniu. Technika ta jest niezastąpiona przy diagnozowaniu wygasłych certyfikatów SSL oraz błędów wirtualnych hostów SNI.

53/55
Porównanie HTTP i HTTPS w Wireshark
Cel slajdu: Przeanalizowanie różnic w widoczności i integralności ruchu sieciowego na przykładzie porównania zrzutów ruchu HTTP (czysty tekst) oraz HTTPS (szyfrowanie TLS 1.3) w Wiresharku.

Różnica HTTP vs HTTPS w Wireshark

Przechwy ruch do http:// (nieszyfrowany) i https:// (szyfrowany).

W HTTP widzisz pełną treść żądania i odpowiedzi. W HTTPS widzisz tylko Application Data – treść jest zaszyfrowana.

Komparatywna analiza ruchu jawnego i szyfrowanego w programie Wireshark uwidacznia kontrast pomiędzy transparentnością protokołu HTTP (RFC 9112) a kryptograficzną ochroną HTTPS/TLS (RFC 8446).
HTTP czytelny vs HTTPS zaszyfrowany

Nic tak dosadnie nie uzmysławia konieczności powszechnego stosowania szyfrowania w internecie, jak bezpośrednie zestawienie dwóch sesji przechwyconych w programie Wireshark: nieszyfrowanej sesji HTTP oraz zabezpieczonej sesji HTTPS. W ćwiczeniu laboratoryjnym student analizuje oba scenariusze, badając, co dokładnie widzi potencjalny intruz podsłuchujący ruch w punkcie styku sieci (np. operator sieci Wi-Fi w kawiarni lub dostawca tranzytowy ISP).

W przypadku klasycznego protokołu HTTP (port 80) Wireshark dokonuje pełnego dekodowania każdego elementu transmisji. W panelu szczegółów pakietu student widzi pełną treść żądania: dokładny adres URL, parametry zapytania (np. wyszukiwane frazy), nagłówki Cookie: zawierające tokeny uwierzytelniające sesję oraz – w przypadku formularzy logowania POST – jawną nazwę użytkownika i hasło w czystym tekście ASCII. Intruz może nie tylko skopiować te poświadczenia (Credential Sniffing), ale również podmienić zawartość strony HTML lub wstrzyknąć złośliwy skrypt JavaScript.

W przypadku protokołu HTTPS (port 443) obraz w Wiresharku ulega całkowitej zmianie. Po wstępnym trójkrokowym uzgadnianiu TCP oraz wymianie komunikatów Client Hello i Server Hello (w których jawna pozostaje jedynie nazwa domeny w rozszerzeniu SNI), wszystkie kolejne pakiety w analizatorze są oznaczone lakoniczną etykietą: Application Data: Application Data Protocol: http-over-tls. Cała zawartość – w tym metody, ścieżki zasobów, nagłówki, ciasteczka i dane użytkownika – stanowi kryptograficzny szum nie do odróżnienia od ciągu losowego. Co więcej, w protokole TLS 1.3 nawet certyfikat serwera jest zaszyfrowany, uniemożliwiając bierną inwigilację profilu przeglądania użytkownika.

54/55
Dobre praktyki analizy sieci
Cel slajdu: Przedstawienie zbioru najlepszych praktyk inżynierskich w konfiguracji, twardnieniu (hardeningu) i bezpiecznej eksploatacji protokołów sieciowych.

Dobre praktyki

  • Filtruj ruch: we Wireshark używaj display filtrów (http, dns, tcp.port==443)
  • Używaj Follow TCP Stream do zobaczenia całej sesji
  • Statystyki → Protocol Hierarchy – sprawd, które protokoły dominują
  • Statystyki → IO Graph – wizualizacja przepustowości w czasie
  • Zapisuj przechwycony ruch do pliku pcap do późniejszej analizy
Filtry Wireshark to klucz do efektywnej analizy – naucz się ich!
Dobre praktyki bezpieczeństwa protokołów sieciowych to zbiór zaleceń architektonicznych i konfiguracyjnych obejmujących wycofywanie protokołów jawnotekstowych, wdrażanie TLS 1.3, zasadę domyślnej odmowy (Default Deny) oraz higienę konfiguracji DNS i DHCP.
Protocol Hierarchy w Wireshark

Bezpieczeństwo i niezawodność infrastruktury sieciowej zależy w równym stopniu od poprawności fizycznego okablowania, co od dyscypliny w konfiguracji protokołów transportowych i aplikacyjnych. W oparciu o wytyczne organizacji takich jak NIST, CIS Controls oraz rekomendacje IETF, każdy inżynier sieciowy powinien bezwzględnie stosować poniższe zasady:

1. Całkowita eliminacja protokołów jawnotekstowych: W nowoczesnej sieci produkcyjnej nie ma miejsca na usługi transmitujące poświadczenia czystym tekstem. Dostęp terminalowy Telnet (port 23) musi być bezwzględnie zablokowany i zastąpiony przez SSH-2 (port 22). Transfer plików FTP (port 21) należy zastąpić przez SFTP na porcie 22. Cały nieszyfrowany ruch webowy HTTP (port 80) powinien być automatycznie przekierowywany na HTTPS (port 443) z wymuszeniem nagłówka HSTS.
2. Twardnienie konfiguracji kryptograficznej (TLS Hardening): Na serwerach webowych należy wyłączyć przestarzałe i skompromitowane protokoły SSLv3, TLS 1.0 oraz TLS 1.1, dopuszczając wyłącznie TLS 1.2 i TLS 1.3. Należy skonfigurować silne zestawy szyfrów (Cipher Suites) z doskonałym utajnianiem z wyprzedzeniem (PFS) opartym na ECDHE.
3. Higiena portów i reguła Default Deny: Na routerach brzegowych i zaporach ogniowych jedyną dopuszczalną polityką domyślną jest DROP/REJECT dla całego ruchu, z precyzyjnym otwieraniem wyłącznie niezbędnych portów. Wszystkie nieużywane usługi i demony na serwerach powinny zostać zatrzymane i wyłączone z autostartu systemowego.
4. Ochrona infrastruktury DNS i DHCP: W sieciach lokalnych LAN należy wdrożyć na przełącznikach mechanizm DHCP Snooping, który blokuje fałszywe serwery DHCP (Rogue DHCP) na portach dostępowych. Dla systemu DNS zaleca się wdrożenie szyfrowania zapytań za pomocą DoT (DNS over TLS, port 853) lub DoH (DNS over HTTPS, port 443) oraz walidację podpisów kryptograficznych stref za pomocą DNSSEC.

Stosowanie tych reguł minimalizuje powierzchnię ataku (Attack Surface) i drastycznie podnosi koszt przeprowadzenia skutecznego ataku przez cyberprzestępców.

55/55
Zakończenie szóstej części
Cel slajdu: Formalne podsumowanie modułu 6, wskazanie osiągniętych efektów kształcenia oraz zapowiedź modułu 7 poświęconego trasowaniu (routingowi) i protokołom łącza danych.

Koniec części 6

Następna część: Protokoły warstwy sieciowej i łącza – IP, ICMP, ARP, Ethernet, CSMA/CD, CSMA/CA, STP/RSTP.

Praca własną: przechwyć w Wireshark ruch HTTP i HTTPS, porównaj widoczne informacje. Wykonaj nslookup dla 5 domen, sprawd różne typy rekordów.

Zwieńczenie modułu protokołów sieciowych potwierdza opanowanie mechanizmów transportu danych L4 (TCP/UDP), obsługi gniazd sieciowych oraz specyfikacji i diagnostyki kluczowych usług internetowych warstwy L7.
Zapowiedź części 7

Gratulacje! Dobiegła końca szósta część kursu Projektowania i Diagnostyki Sieci Komputerowych, poświęcona fundamentalnym protokołom sieciowym warstw transportowej i aplikacji. Podczas tego obszernego modułu przeszliśmy drogę od mikroskopijnej analizy bitów w nagłówkach TCP i UDP, poprzez skomplikowane maszyny stanów i algorytmy przeciwdziałania przeciążeniom sieciowym, aż po zaawansowaną analizę usług webowych, domenowych, pocztowych i administracyjnych.

Zdobyta wiedza teoretyczna poparta umiejętnościami praktycznymi z zakresu obsługi analizatora Wireshark, dekodowania pakietów, posługiwania się poleceniami dig, ss oraz testowania gniazd sieciowych stanowi solidny fundament Waszego warsztatu inżynierskiego. Rozumiecie już nie tylko to, jak dane są przesyłane, ale przede wszystkim dlaczego twórcy internetu podjęli konkretne decyzje projektowe i jakie konsekwencje rodzą one dla wydajności oraz bezpieczeństwa systemów IT.

W kolejnej, siódmej części kursu (PiDSK Część 7: Protokoły sieciowe i łącza) zejdziemy głębiej w strukturę sieci rozległych i lokalnych. Skupimy się na mechanizmach podejmowania decyzji o trasowaniu pakietów (routing statyczny i dynamiczny OSPF, BGP), protokołach łącza danych (PPP, HDLC, Frame Relay, MPLS), enkapsulacji ramek oraz diagnostyce fizycznej i logicznej spójności połączeń transmisyjnych. Zachęcamy do powtórzenia materiału i wykonania ćwiczeń laboratoryjnych w środowisku testowym!