Model OSI i TCP/IP – warstwy sieci i protokoły krok po kroku

by Patryk

Komputer ma połączenie z siecią, ale strona nadal się nie otwiera. Przyczyną może być adresacja, niedziałający DNS albo sam serwer. Model OSI i TCP/IP pomagają uporządkować te możliwości i zrozumieć, za co odpowiadają poszczególne elementy komunikacji.

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 lub podłączyć do jakiegoś urządzenia. Teraz zobaczysz, jak te elementy współpracują: od przygotowania danych przez aplikację, przez ich przesłanie, aż po odebranie po drugiej stronie.

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ą. Jeden protokół nie obsługuje całej komunikacji. Przy otwieraniu strony inne zadanie ma DNS, który pomaga ustalić adres serwera, a inne IP, który zapewnia adresowanie pakietów. Jeszcze inne reguły określają, jak przeglądarka wysyła żądanie do serwera WWW.

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.

Po co dzielić komunikację na warstwy?

Przesłanie danych wymaga wykonania kilku różnych zadań. Trzeba przygotować wiadomość, zaadresować ją, dostarczyć przez kolejne połączenia i przekazać właściwej aplikacji.

Model warstwowy porządkuje te zadania. Każda warstwa ma określoną odpowiedzialność i korzysta z usług warstwy znajdującej się niżej.

Taki podział pomaga również w diagnozowaniu problemów. Jeżeli interfejs nie wykrywa połączenia kablowego, zaczynasz od kabla i portów. Jeżeli połączenie działa, ale komputer nie rozwiązuje nazw, sprawdzasz konfigurację i działanie DNS.

Najczęściej spotkasz dwa modele: OSI oraz 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.

Warstwy numerujemy od fizycznej, która ma numer 1, do aplikacji, która ma numer 7. Przy wysyłaniu danych wygodnie jest prześledzić je w odwrotnej kolejności: od aplikacji w stronę medium transmisyjnego.

Warstwa 7: aplikacji

Warstwa ta prezentuje aplikację oraz interfejs, z którym użytkownik ma do czynienia. Nie chodzi tutaj o wygląd okna przeglądarki czy przyciski w programie pocztowym.

Przykładowo gdy aplikacja pocztowa pobiera wiadomości z serwera, może korzystać z IMAP lub POP3. Przy wysyłaniu poczty używany jest SMTP. Do tej warstwy przypisujemy również między innymi:

  • HTTP – komunikację z serwerami WWW;
  • DNS – zapytania o nazwy i związane z nimi rekordy;
  • DHCP – automatyczne przekazywanie konfiguracji sieciowej;
  • SSH – bezpieczny zdalny dostęp;
  • FTP i SFTP – przesyłanie plików.

Warstwa 6: prezentacji

Warstwa prezentacji odpowiada za sposób reprezentowania danych, tak aby obie strony mogły je poprawnie zinterpretować na przykład format .jpg. Obejmuje przekształcanie formatów; w opisie jej zadań uwzględnia się też kompresję i szyfrowanie.

Przykładem problemu z tego obszaru jest różne kodowanie tekstu. Jeśli nadawca zapisze znaki w jednym kodowaniu, a odbiorca odczyta je według innego, zamiast polskich liter możesz zobaczyć nieprawidłowe znaki.

Warstwa 5: 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 4: transportowa

Ta warstwa odpowiedzialna jest za transport danych pomiędzy urządzeniami końcowymi.

  • 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 3: 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. W sieciach TCP/IP podstawową rolę pełni tutaj IP. Z kolei ICMP służy między innymi do przekazywania informacji o błędach i komunikatów diagnostycznych.

Korzystanie z warstwy sieci nie jest obowiązkowe, jeśli komputery znajdują się w tej samej sieci lokalnej, wówczas wykorzystywany jest głównie adres MAC. 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 2: łą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 1: fizyczna

Odpowiada za przesyłanie bitów za pomocą sygnałów elektrycznych, optycznych lub radiowych. 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ż multipleksacja 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. Nie oznacza ona jednak, że dwaj użytkownicy zawsze wysyłają dane na zmianę, po jednym segmencie. Kolejność obsługi zależy między innymi od kolejek i obciążenia urządzeń.

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. Prześledźmy uproszczony przykład wysyłania danych aplikacji przez TCP, IPv4 i Ethernet:

  1. Aplikacja przekazuje dane do TCP.
  2. TCP tworzy segment, dodając między innymi porty oraz informacje o sekwencji danych.
  3. IPv4 umieszcza segment w pakiecie, dodając między innymi adresy IP nadawcy i odbiorcy.
  4. Ethernet umieszcza pakiet w ramce, dodając między innymi adresy MAC oraz pole kontroli błędów.
  5. Interfejs przesyła bity jako sygnały przez medium transmisyjne.

Nazwy jednostek danych zależą więc od warstwy i protokołu:

Warstwa OSIJednostka danych w omawianym przykładzie
Aplikacji i warstwy wyższe niż transportDane aplikacji
TransportowaSegment TCP; przy użyciu UDP: datagram UDP
SieciowaPakiet IP, nazywany też datagramem IP
Łącza danychRamka Ethernet
FizycznaBity reprezentowane przez sygnały

Do kogo adresowana jest ramka, gdy serwer znajduje się poza LAN?

To ważne rozróżnienie z poprzedniej lekcji: adres IP i adres MAC pełnią różne funkcje.

Załóżmy, że komputer wysyła pakiet do serwera poza swoją podsiecią, korzystając z bramy domyślnej. Docelowy adres IP wskazuje serwer, ale docelowy adres MAC w ramce Ethernet wskazuje lokalny interfejs bramy.

Komputer nie szuka adresu MAC odległego serwera. Musi dostarczyć ramkę do następnego urządzenia na lokalnym odcinku drogi. Router odbiera ramkę, odczytuje pakiet IP i ustala dalszą drogę. W IPv4 ustaleniu odpowiedniego adresu MAC służy ARP. Więcej informacji na temat tego protokołu jak i komunikacji wewnątrz jednej i różnych sieciach możesz poczytać w kolejnym artykule.

Dekapsulacja – co robi odbiorca?

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.

Interfejs odtwarza bity z odebranego sygnału. Mechanizmy warstwy łącza danych sprawdzają ramkę i przekazują jej zawartość do odpowiedniego protokołu, na przykład IPv4. Następnie system obsługuje pakiet IP i przekazuje zawarty w nim segment do TCP.

TCP porządkuje odebrane dane i udostępnia je właściwej aplikacji. Dopiero aplikacja interpretuje ich znaczenie: mogą to być fragmenty strony, pliku albo wiadomości.

Jak wykorzystać warstwy podczas diagnozowania problemów?

Modele pomagają zawężać obszar poszukiwań. Zamiast od razu zmieniać konfigurację, dopasuj sprawdzane elementy do objawu.

ObjawOd czego zacząć sprawdzanie?
Interfejs nie wykrywa połączenia kablowegoKabel, port, stan interfejsu i urządzenie po drugiej stronie.
Komputer nie komunikuje się z hostem w tej samej podsieciAdres i maska, połączenie lokalne, podział na VLAN-y oraz reguły zapory.
Zasoby lokalne działają, ale zdalne są niedostępneBrama domyślna, routing, dostęp operatora i filtrowanie ruchu.
Zapytania o nazwy kończą się błędemKonfiguracja DNS i dostępność serwera DNS.
Serwer jest osiągalny, ale konkretna usługa nie działaStan usługi, port nasłuchiwania, zapora i komunikaty aplikacji.

Krótkie zadanie na koniec

Komputer wysyła dane przez TCP do serwera znajdującego się poza lokalną podsiecią. Pierwszy odcinek prowadzi przez Ethernet do bramy domyślnej. Zapisz, w nagłówku której warstwy znajdziesz:
– port docelowy usługi;
– adres IP serwera;
– adres MAC bramy.

Poprawna odpowiedź: port znajduje się w nagłówku TCP, adres serwera w nagłówku IP, a adres MAC bramy w nagłówku ramki Ethernet. Każdy z nich pomaga dostarczyć dane na innym poziomie komunikacji.


Następny krok: Znasz już zadania poszczególnych warstw. Teraz przyjrzymy się warstwie fizycznej: przewodom, światłowodom i sposobom przesyłania sygnału. Dzięki temu łatwiej zrozumiesz, od czego zależy działanie samego łącza i co sprawdzić, gdy urządzenia nie mogą nawiązać połączenia.

Przejdź do następnej lekcji: Warstwa fizyczna – media transmisyjne i okablowanie →

← Poprzednia lekcja: Podstawy sieci komputerowych · Wróć do spisu kursu

Może Cię również zainteresować

Dodaj komentarz