Model OSI w praktyce
W ramach ćwiczeń w domowym laboratorium sieciowym przetestowałem działanie modelu OSI w praktyce. Wygenerowałem rzeczywisty ruch sieciowy pomiędzy dwiema maszynami wirtualnymi, przechwyciłem go snifferem pakietów i przeanalizowałem warstwa po warstwie.
Do przeprowadzenia ćwiczenia wykorzystałem dwie maszyny wirtualne w swoim środowisku homelab.
Krok 1: Uruchomienie usługi testowej
Na maszynie Ubuntu uruchomiłem prosty serwer HTTP na porcie 8080:
python3 -m http.server 8080
Krok 2: Uruchomienie przechwytywania ruchu
Na maszynie Kali włączyłem podsłuch pakietów na interfejsie sieciowym eth0. Do podglądu ruchu sieciowego użyłem zarówno programu Wireshark, jak i konsoli.
sudo tcpdump -i eth0 host 192.168.202.131 and port 8080 -w /tmp/osi_lab.pcap
Krok 3: Wygenerowanie żądania i zatrzymanie nasłuchu
Z poziomu Kali wysłałem pojedyncze zapytanie HTTP do serwera:
curl -i http://192.168.202.131:8080/
Analiza ramki w modelu OSI
Przechwycony pakiet zawierający żądanie pozwala zaobserwować strukturę nagłówków odpowiadających kolejnym warstwom modelu OSI:
- Warstwa 1 (Fizyczna):
- Reprezentowana jako surowa ramka (
Frame 18: 150 bytes on wire). - Określa fizyczny rozmiar przesłanych danych na interfejsie sieciowym.
- Reprezentowana jako surowa ramka (

- Warstwa 2 (Łącza danych):
- Nagłówek
Ethernet II. - Zawiera fizyczne adresy sprzętowe:
- Source MAC (karta sieciowa Kali)
- Destination MAC (karta sieciowa Ubuntu)
- typ zawartości (
IPv4 - 0x0800).
- Nagłówek

- Warstwa 3 (Sieciowa):
- Nagłówek
Internet Protocol Version 4. - Odpowiada za logiczne adresowanie:
- adres źródłowy (
192.168.202.130) - adres docelowy (
192.168.202.131) - czas życia pakietu (
TTL) - identyfikator protokołu nadrzędnego (
TCP - 6).
- adres źródłowy (
- Nagłówek

- Warstwa 4 (Transportowa):
- Nagłówek
Transmission Control Protocol (TCP). - Definiuje port źródłowy (wysoki, losowy port klienta, np.
48212), port docelowy (8080), numery sekwencyjne i potwierdzeń (Seq/Ack) oraz flagi kontrolne sterujące połączeniem.
- Nagłówek

- Warstwy 5–7 (Sesji, Prezentacji, Aplikacji):
- Sekcja
Hypertext Transfer Protocol (HTTP). - Warstwa sesji – zarządza stanem i czasem trwania połączenia.
- Warstwa prezentacji – odpowiada za format danych i kodowanie znaków.
- Warstwa aplikacji – właściwe polecenie zrozumiałe dla aplikacji:
GET / HTTP/1.1User-Agent: curl/8.x.x
- Sekcja

Dodatkowe obserwacje
Podczas ćwiczeń sprawdziłem również działanie protokołu ARP i 3-way handshake.
Działanie protokołu ARP
Po wyczyszczeniu tablicy ARP i wysłaniu pakietu ICMP (polecenie ping), Kali najpierw wysłało zapytanie rozgłoszeniowe (Broadcast) z pytaniem o adres MAC skojarzony z IP serwera, a po otrzymaniu odpowiedzi unicast rozpoczęło właściwą transmisję IP.
sudo ip neigh flush all

3-way handshake
Transmisja TCP zawsze wymaga wcześniejszego nawiązania połączenia (SYN → SYN-ACK → ACK), nazywanego 3-way handshake. Z jednej strony wpływa to na czas przetwarzania pojedynczych żądań, z drugiej jednak zapewnia pewne i zsynchronizowane nawiązanie połączenia między klientem a serwerem.

Podsumowanie
Praktyczne rozłożenie ramki sieciowej w Wiresharku pozwala zobaczyć, jak teoria modelu OSI przekłada się na rzeczywisty ruch w sieci. Każda warstwa realizuje ściśle określone zadanie, doklejając własny nagłówek w procesie enkapsulacji i umożliwiając bezproblemową komunikację między różnymi systemami.