Jak wspominałem we wcześniejszym artykule o podstawach sieci komputerowych, sieć może składać się z dwóch komputerów… albo z milionów urządzeń połączonych w jedną ogromną sieć, którą znamy jako Internet. Wspomniałem również, że wystarczy je połączyć kablem lub bezprzewodowo.
Problem w tym, że samo połączenie to jeszcze nie komunikacja. To trochę jak postawienie dwóch osób obok siebie i oczekiwanie, że nagle zaczną rozmawiać po japońsku – bez nauki języka.
W tym artykule rozszerzymy temat o protokoły sieciowe oraz modele warstwowe: OSI i TCP/IP. Tekst jest dłuższy, więc zrób herbatę, popraw krzesło i lecimy. 😉
Czym jest protokół sieciowy?

Zacznijmy od słowa klucz: protokół sieciowy.
Żeby dobrze to zrozumieć, użyję prostej analogii. Kiedy ludzie wymieniają się informacjami, stosują ustalone zasady: wysyłając list, wpisujesz adres, doklejasz znaczek i wiesz, gdzie wrzucić kopertę. Dla Ciebie to naturalne.
Komputery też działają według ustalonych reguł. Skąd urządzenie wie:
- w jakiej jest sieci,
- czy drugi komputer jest w tej samej sieci lokalnej,
- kiedy musi wysłać dane przez router,
- czy wiadomość została odebrana,
- co zrobić, gdy dane dotrą uszkodzone albo w złej kolejności?
Odpowiedzią na te wszystkie pytania są właśnie protokoły.
Protokoły to zestawy reguł, które regulują sposób komunikowania się urządzeń. Bez nich Internet byłby jak grupa na komunikatorze, gdzie każdy pisze innym alfabetem i jeszcze co chwilę zmienia zasady. Wszystkie komputery i urządzenia używają uzgodnionych protokołów do komunikacji między sobą.
Protokoły są wszędzie (serio, wszędzie)
W sieci dane nie lecą „jednym wielkim plikiem”, tylko są dzielone na mniejsze porcje, czyli pakiety danych. A żeby te pakiety trafiły tam, gdzie trzeba, działa cała „orkiestra” protokołów.
Najczęściej spotkasz m.in.:
- Ethernet – standard połączeń przewodowych,
- WLAN / Wi-Fi – standard połączeń bezprzewodowych,
- IP – adresowanie i decyzja „gdzie to wysłać”,
- DHCP – automatyczne przydzielanie adresów IP,
- DNS – tłumaczy nazwy domen na adresy IP,
- TCP – dopilnowuje, żeby dane dotarły poprawnie i w kolejności,
- UDP – wysyła szybko, ale bez potwierdzania dostarczenia (idealne do gier i wideo).
Protokoły są projektowane tak, żeby ze sobą współpracowały. A żeby to wszystko miało sens i dało się to opisać, używa się modeli warstwowych.
Najpopularniejsze to: model OSI i model TCP/IP.
Model OSI

Model OSI to sposób opisu tego, jak dane „schodzą” z aplikacji w dół aż do kabla (lub Wi-Fi), a potem „wchodzą” z powrotem po stronie odbiorcy. Składa się z 7 warstw, a każda odpowiada za inny etap komunikacji.
To świetne narzędzie do nauki i diagnozowania problemów (np. „czy problem jest w kablu, adresacji IP, czy może w aplikacji?”). W praktyce częściej spotkasz jednak model TCP/IP, ale OSI nadal warto znać.
Warstwa aplikacji
Warstwa ta prezentuje aplikację oraz interfejs, z którym użytkownik ma do czynienia. Przykładowo w momencie, w którym odpalamy pocztę elektroniczną i pobieramy emaile z serwera korzystamy właśnie z warstwy aplikacji i protokołu POP/IMAP.
- DNS – tłumaczy nazwy domenowe na adresy IP
- DHCP – dynamicznie przypisuje adresy IP
- FTP / SFTP – przesyła pliki
- SSH – pozwala na zdalny dostęp
- SMTP – służy do wysyłania poczty.
Warstwa prezentacji
Warstwa ta służy do prezentowania danych w warstwie aplikacji na znany jej format na przykład .jpg. Pozwala również w odwrotny sposób wysłać dane do warstw niższych przekształcając i szyfrując dane wysyłane z warstwy aplikacji na wspólny dla sieci format przykładowo na strumienie bitów.
Warstwa sesji
Odpowiada za nawiązywanie, utrzymywanie i kończenie sesji podczas wymiany danych pomiędzy aplikacjami działającymi na komputerach. Otwarta sesja utrzymywana jest wystarczająco długo, aby zapewnić pomyślną i nieprzerwaną wymianę danych. Warstwa sesji tworzy punkty kontrolne. W ten sposób warstwa może wznowić transmisję sesji z określonych punktów kontrolnych, w momencie awarii komunikacji.
Warstwa transportowa
Ta warstwa odpowiedzialna jest za transport danych pomiędzy urządzeniami.
- dzieli dane na segmenty,
- nadaje im kolejność (sekwencjonowanie),
- składa je po stronie odbiorcy,
- dodaje do wysyłanej wiadomości porty (źródłowy i docelowy).
Podczas transmisji wybierany jest określony protokół. Warstwa transportowa obejmuje dwa protokoły TCP i UDP. Informacje na temat tego, który protokół zostanie wykorzystany przekazuje warstwa wyższa, w tym przypadku warstwa aplikacji.
Protokół TCP
Zapewnia, że wszystkie dane dotrą do miejsca docelowego. TCP zawiera mechanizm potwierdzeń i retransmisji. Jeśli podczas przesyłania wystąpi jakiś błąd dane zostaną wysłane ponownie.
Protokół TCP zapewnia również usługę sekwencjonowania. Ta funkcja jednoznacznie oznacza każdy przesyłany segment danych. Urządzenie odbiorcze wykorzystuje informacje o sekwencji do prawidłowego złożenia informacji. Jest to przydatne, jeśli segmenty danych zostaną utracone, opóźnione lub odebrane poza kolejnością.
Aplikacje korzystające z tego protokołu to przeglądarki internetowe, programy pocztowe i programy do przesyłania plików, czyli miejsca, w których dane muszą dotrzeć w niezmienionej postaci.
Protokół UDP
W odróżnieniu od TCP nie posiada usługi sprawdzania błędów i retransmisji danych, może się więc zdarzyć, że niektóre dane nie dotrą do miejsca docelowego lub dotrą, ale w zmienionej kolejności.
Korzyścią z tego płynącą jest szybsza transmisja danych, w związku z tym protokół UDP jest stosowany w miejscach gdzie liczy się szybkość, między innymi w grach online i wideokonferencjach.
Utrata kilku danych na skutek utraty pakietów nie ma znaczenia. To, co ma znaczenie, to nie marnowanie czasu na oczekiwanie na przybycie utraconych pakietów lub ponowne ich wysyłanie. Większość użytkowników jest bardziej zainteresowana dźwiękiem lub video z minimalnym opóźnieniem od niezawodności komunikacji.
Warstwa sieciowa
Warstwa sieciowa jest odpowiedzialna za komunikacje pomiędzy różnymi sieciami. Obejmuje to konfigurowanie tras dla pakietów danych oraz adresowanie i odbieranie pakietów IP z innych sieci. Najważniejszymi protokołami w tej warstwie są IP i ICMP.
Korzystanie z warstwy sieci nie jest obowiązkowe, jeśli komputery znajdują się w tej samej sieci lokalnej. W tej warstwie routery odgrywają bardzo istotną rolę, ponieważ jednoznacznie identyfikują każde urządzenie w sieci. Proces ten nazywa się routingiem. Warstwa sieciowa umieszcza dwa adresy w wysłanym pakiecie: adres IP źródłowy i adres IP docelowy.
Warstwa łącza danych
Ta warstwa odpowiada za komunikację wewnątrz sieci lokalnej. Warstwa łącza danych jest odpowiedzialna za odbieranie bitów danych z warstwy fizycznej i formatowanie tych bitów w grupy, zwane ramkami. Podobnie odpowiada również za odbieranie danych z warstwy sieciowej i umieszczaniu ich w ramki, jeśli wiadomość kierowana jest w drugą stronę. Warstwa ta dodaje adresy MAC źródłowe i docelowe do strumienia danych.
Warstwa fizyczna
Warstwa fizyczna jak sama nazwa wskazuje odpowiada za fizyczną stronę sieci. Obejmuje ona kable, karty sieciowe i fale radiowe, czyli wszystkie urządzenia, które transmitują bity. Służy tylko do wysyłania logicznych zer i jedynek (bitów). Odbiera ramki danych z warstwy łącza danych i przesyła szeregowo, bit po bicie, całą ich strukturę oraz zawartość przez medium transmisyjne takie jak kabel miedziany lub światłowód.
Model TCP/IP

Model TCP/IP robi to samo co OSI, ale prościej: ma 4 warstwy.
Warstwa aplikacji, prezentacji i sesji została tu połączona w jedną warstwę o nazwie aplikacji. Podobnie warstwa łącza danych i fizyczna została połączona w warstwę dostępu do sieci. TCP/IP jest określany często jako model protokołów, ponieważ opisuje funkcje i zadania jakie wykonuje konkretna warstwa.
Warstwy modelu TCP/IP
- Warstwa aplikacji
- Warstwa transportowa
- Warstwa internetowa
- Warstwa dostępu do sieci
Enkapsulacja i dekapsulacja danych
Dane przesyłane przez sieć są stale dzielone i pakowane z nowymi informacjami. Znajomość modelu TCP/IP jest bardzo przydatna w zrozumieniu tego procesu.
Teoretycznie wiadomość może zostać wysłana jako jeden duży strumień danych, ale byłoby to podejście mocno nieefektywne. Wysyłanie tak dużej wiadomości zajęłoby całe łącze. Spowodowałoby to opóźnienia transmisji u innych osób chcących korzystać z tego samego łącza. Drugą wadą wysyłania dużych wiadomości jest możliwość utraty danych w przypadku awarii łącza a co za tym idzie zajdzie konieczność ponownego wysłania całej wiadomości.
Rozwiązaniem tego jest podział strumienia danych na mniejsze fragmenty, które są łatwiejsze w przesyłaniu przez sieć. Podejście to jest zwane segmentacją wiadomości. Zwiększa szybkość i wydajność.
W parze z segmentacją idzie również multiplikacja danych, czyli przeplatanie różnych porcji danych w medium transmisyjnym. Dzięki temu użytkownik nie musi czekać aż drugi użytkownik prześle wszystkie swoje segmenty wiadomości tylko naprzemiennie z nim je przesyła.
Enkapsulacja
Wróćmy jednak do samego procesu wysyłania wiadomości, w szczególności do tego, jak jest pakowana. Wyobraź sobie, że dane są wkładane w kolejne koperty. Każda warstwa dodaje coś od siebie (nagłówki, adresy, porty), żeby dane dało się poprawnie dostarczyć.
Dane, często zwane też PDU są enkapsulowane po stronie nadawcy, począwszy od warstwy aplikacji do warstwy fizycznej. Każda warstwa pobiera enkapsulowane dane z poprzedniej warstwy i dodaje trochę więcej informacji w celu ich ponownej enkapsulacji. Funkcjonalności te mogą obejmować prawidłowe sekwencjonowanie danych, wykrywanie i kontrolę błędów, kontrolę przepływu, informacje o trasach itp.
Na każdym etapie procesu PDU ma inną nazwę odzwierciedlającą jego nowe funkcje.
- Warstwa aplikacji – Dane
- Warstwa transportu – Segment
- Warstwa internetowa – Pakiet IP
- Warstwa dostępu do sieci – Ramka Ethernet
- Warstwa fizyczna – Bity
Dekapsulacja
Klient otrzymując taką finalnie spakowaną “kopertę” z danymi rozpakowuje ją. Proces ten nazywany jest dekapsulacją i działa w odwrotną stronę, czyli od warstwy fizycznej do warstwy aplikacji.
Podsumowanie
Temat modeli sieci jest bardzo rozległy. To, co zostało opisane w tym artykule to zaledwie wstęp mający dać Ci ogólny obraz. W kolejnych artykułach będziemy bardziej szczegółowo poruszać tematy związane z transmisją danych w sieci. Poznamy krok po kroku tajniki wędrówki danych, jak i również najpopularniejsze protokoły, które mają wpływ na skuteczność transmisji. Zaczniemy od urządzeń i okablowania składającego się na warstwę fizyczną, skończymy zaś na warstwie bezpośrednio związanej z użytkownikiem, czyli warstwie aplikacji.