Pakiet danych jest podstawową jednostką wykorzystywaną do przesyłania informacji w sieciach komputerowych opartych na komunikacji pakietowej. Gdy otwierasz stronę internetową, pobierasz plik albo wysyłasz wiadomość, dane nie przemieszczają się zwykle jako jeden ciągły blok. Są dzielone na mniejsze części, uzupełniane o informacje sterujące i przesyłane przez kolejne urządzenia sieciowe. Każdy pakiet może zawierać adresy nadawcy i odbiorcy, informacje o protokole oraz fragment właściwych danych. Dopiero po stronie odbiorcy poszczególne elementy transmisji są przetwarzane tak, aby aplikacja mogła odtworzyć oczekiwaną informację.
Co to jest pakiet danych?
Pakiet danych to wydzielona porcja informacji przygotowana do przesłania przez sieć. Nie zawiera wyłącznie właściwej treści, takiej jak fragment pliku czy odpowiedzi serwera. Do danych dołączane są również informacje potrzebne urządzeniom i protokołom sieciowym do prawidłowego przeprowadzenia transmisji.
Najbardziej charakterystycznym przykładem jest pakiet IP. Jego nagłówek zawiera między innymi adres IP źródłowy i docelowy. Dzięki temu urządzenia pośredniczące mogą ustalić, gdzie pakiet powinien zostać przekazany. W pakiecie znajdują się również pola opisujące jego długość, wykorzystywany protokół wyższej warstwy oraz parametry pomagające kontrolować jego drogę przez sieć.
Określenie "pakiet danych" bywa w codziennym języku używane szerzej i odnosi się praktycznie do każdej niewielkiej jednostki przesyłanej w sieci. W terminologii technicznej trzeba jednak odróżnić pakiet IP od segmentu TCP, datagramu UDP czy ramki Ethernet. Jednostki te powstają na różnych etapach przygotowania danych do transmisji.
Dlaczego dane dzieli się na pakiety?
Sieć pakietowa nie rezerwuje całego dostępnego połączenia dla jednej transmisji. Z tego samego łącza mogą niemal jednocześnie korzystać komputery, smartfony, telewizory, serwery i inne urządzenia, a infrastruktura przeplata pakiety należące do wielu niezależnych połączeń.
Wyobraźmy sobie, że użytkownik pobiera plik o wielkości 100 MB. Przesłanie go przez sieć jako pojedynczego bloku byłoby niepraktyczne. Duża jednostka zajmowałaby zasoby na dłużej, byłaby trudniejsza do obsługi przez różne technologie sieciowe, a wystąpienie błędu mogłoby wymagać ponownego przesyłania bardzo dużej ilości informacji.
Podział na mniejsze jednostki sprawia, że sieć może elastycznie obsługiwać wielu użytkowników. Pakiety można kierować przez kolejne urządzenia, kolejkować, odrzucać w przypadku przeciążenia, a w protokołach zapewniających niezawodność brakujące dane mogą zostać ponownie przesłane.
Z czego składa się pakiet danych?
Najprościej można powiedzieć, że pakiet składa się z nagłówka oraz danych użytkowych. W praktyce zawartość i liczba pól zależą od protokołu.
| Element pakietu | Funkcja |
|---|---|
| Adres źródłowy | Informuje, z jakiego adresu IP pochodzi pakiet |
| Adres docelowy | Określa adres IP urządzenia, do którego pakiet ma trafić |
| Informacje sterujące | Opisują sposób obsługi pakietu, jego długość, czas życia i wykorzystywany protokół |
| Dane użytkowe | Przenoszą właściwą zawartość pochodzącą z wyższych warstw komunikacji |
W przypadku IPv4 podstawowy nagłówek ma 20 bajtów, choć może być większy, jeżeli wykorzystywane są opcje dodatkowe. Znajdują się w nim między innymi pola określające wersję protokołu, długość pakietu, adresy IP nadawcy i odbiorcy, TTL oraz identyfikator protokołu transportowego.
Dane użytkowe pakietu IP mogą natomiast zawierać na przykład segment TCP albo datagram UDP. W ten sposób informacje jednego protokołu są przenoszone wewnątrz jednostki tworzonej przez protokół znajdujący się niżej w stosie sieciowym.
Jak powstaje pakiet? Enkapsulacja danych
Przed wysłaniem informacji przez sieć dane przechodzą przez kolejne warstwy komunikacji. Proces dodawania informacji sterujących charakterystycznych dla poszczególnych protokołów nazywa się enkapsulacją.
Przykładowo przeglądarka przygotowuje dane aplikacji. Warstwa transportowa może dołączyć nagłówek TCP, tworząc segment. Warstwa sieciowa umieszcza segment w pakiecie IP, a następnie w sieci Ethernet pakiet IP zostaje umieszczony w ramce.
W uproszczeniu proces wygląda więc następująco:
Dane aplikacji → segment TCP → pakiet IP → ramka Ethernet → medium transmisyjne
Po stronie odbiorcy odbywa się proces odwrotny. Kolejne nagłówki są analizowane i usuwane, a zawartość trafia coraz wyżej, aż do aplikacji, dla której została przeznaczona. Dzięki takiemu podziałowi każda warstwa może realizować własne zadania bez konieczności znajomości wszystkich szczegółów działania pozostałych elementów sieci.
Jak pakiet przechodzi przez sieć?
Droga pakietu zależy przede wszystkim od tego, gdzie znajduje się jego odbiorca. Jeżeli komputer komunikuje się z innym urządzeniem w tej samej sieci lokalnej, transmisja może odbywać się bez przechodzenia przez router odpowiedzialny za dostęp do internetu. Inaczej wygląda sytuacja, gdy dane mają trafić do serwera znajdującego się w innej sieci.
Komputer ustala wtedy, że adres docelowy nie znajduje się w jego własnej podsieci i przekazuje dane do bramy domyślnej. W sieci domowej funkcję tę pełni zazwyczaj router. Pakiet jest następnie przekazywany do infrastruktury operatora internetowego i może przechodzić przez kolejne routery należące do różnych sieci.
Trzeba przy tym rozróżnić logiczną drogę pakietu od fizycznego sposobu transmisji. Pakiet IP może na kolejnych odcinkach przemieszczać się przez Ethernet, światłowód, sieć radiową lub inną technologię. Fizyczne środowisko przesyłania sygnału opisuje szerzej artykuł o medium transmisyjnym w sieciach.
Równie istotna jest organizacja połączeń między urządzeniami. Sposoby ich rozmieszczenia i wzajemnego połączenia omawia topologia sieci komputerowej.
Routing pakietów - skąd router wie, gdzie wysłać dane?
Router nie musi znać pełnej, wcześniej ustalonej drogi każdego pakietu od nadawcy aż do odbiorcy. Jego zadaniem jest przede wszystkim zdecydowanie, dokąd przekazać pakiet w następnym kroku.
Urządzenie odczytuje adres IP odbiorcy i porównuje go z wpisami znajdującymi się w swojej tablicy routingu. Na tej podstawie wybiera właściwy interfejs lub kolejny router. Następne urządzenie wykonuje podobną operację i proces powtarza się do momentu dostarczenia danych do sieci docelowej.
Cały mechanizm wyboru tras określany jest jako routing. W niewielkich sieciach część tras może być skonfigurowana ręcznie, natomiast w rozbudowanej infrastrukturze wykorzystywane są protokoły pozwalające routerom wymieniać informacje o dostępności poszczególnych sieci. Szerzej zasady routingu i wyboru trasy pakietów opisano w serwisie Era Informatyki.
Nie oznacza to również, że wszystkie pakiety należące do jednej transmisji zawsze muszą pokonać identyczną drogę. Trasy w internecie mogą się zmieniać w wyniku awarii, zmian konfiguracji, polityki operatorów lub aktualizacji informacji routingu.
TTL - dlaczego pakiet nie krąży po sieci bez końca?
Jednym z ważnych pól nagłówka IPv4 jest TTL - Time To Live. Nazwa może sugerować czas mierzony w sekundach, ale podczas normalnego routingu wartość jest przede wszystkim zmniejszana przy przejściu przez kolejny router.
Jeżeli TTL osiągnie zero, router odrzuca pakiet. Mechanizm chroni sieć przed sytuacją, w której błędna konfiguracja tras spowodowałaby krążenie pakietu w pętli przez nieograniczony czas.
W IPv6 podobną funkcję pełni pole Hop Limit. Z punktu widzenia użytkownika zasada pozostaje podobna - pakiet może przejść jedynie przez ograniczoną liczbę kolejnych urządzeń routujących.
Jak duży może być pakiet danych?
Rozmiar pakietu nie jest przypadkowy. Jednym z najważniejszych parametrów jest MTU - Maximum Transmission Unit, czyli maksymalny rozmiar jednostki warstwy sieciowej, którą można przesłać przez dane łącze bez konieczności dodatkowego podziału.
W klasycznym Ethernecie powszechnie spotykana wartość MTU wynosi 1500 bajtów. Oznacza to, że w standardowej ramce może być przenoszony pakiet IP o maksymalnej długości 1500 bajtów. Nie wszystkie te bajty są jednak danymi aplikacji.
Przy typowym połączeniu IPv4 i TCP bez dodatkowych opcji 20 bajtów zajmuje nagłówek IPv4, a kolejne 20 bajtów podstawowy nagłówek TCP. Dla danych TCP pozostaje więc zwykle do 1460 bajtów. Wartość tę określa się jako MSS - Maximum Segment Size.
| Element | Typowy rozmiar |
|---|---|
| MTU Ethernet | 1500 bajtów |
| Podstawowy nagłówek IPv4 | 20 bajtów |
| Podstawowy nagłówek TCP | 20 bajtów |
| Dane TCP przy takim układzie | do 1460 bajtów |
Jeżeli pakiet jest zbyt duży dla któregoś odcinka trasy, problem musi zostać odpowiednio obsłużony. W IPv4 możliwa jest fragmentacja pakietu, choć we współczesnych sieciach dąży się do unikania jej przez prawidłowe ustalenie maksymalnego rozmiaru pakietu dla całej trasy. W IPv6 routery pośrednie nie wykonują fragmentacji - odpowiedzialność za odpowiednie przygotowanie transmisji spoczywa na urządzeniu wysyłającym.
Co się dzieje, gdy pakiet zostanie zgubiony?
Sam protokół IP działa w modelu best effort. Sieć podejmuje próbę dostarczenia pakietu, ale nie gwarantuje, że każdy pakiet dotrze do odbiorcy, zachowa kolejność ani nie zostanie zduplikowany.
Pakiet może zostać utracony między innymi wskutek przeciążenia routera, problemów z łączem, błędnej konfiguracji albo wyczerpania wartości TTL. Sposób reakcji na taką sytuację zależy od protokołów działających wyżej.
TCP zapewnia mechanizmy pozwalające kontrolować prawidłowość dostarczania danych. Odbiorca potwierdza otrzymanie informacji, a brak odpowiedniego potwierdzenia może prowadzić do retransmisji. TCP odpowiada również za uporządkowanie danych, które mogły dotrzeć w innej kolejności.
UDP nie zapewnia analogicznego mechanizmu retransmisji na poziomie samego protokołu. Dzięki mniejszemu narzutowi może być wykorzystywany tam, gdzie istotna jest szybkość i niskie opóźnienie, a ewentualną kontrolę utraty danych realizuje aplikacja albo można zaakceptować brak części informacji.
Pakiet, segment, datagram i ramka - czym się różnią?
W codziennych rozmowach wszystkie jednostki przesyłane przez sieć często nazywa się pakietami. Przy dokładniejszym opisie warto jednak stosować nazwy właściwe dla określonej warstwy i protokołu.
| Nazwa | Znaczenie | Przykład |
|---|---|---|
| Segment | Jednostka danych protokołu TCP | Segment TCP |
| Datagram | Określenie jednostki używane między innymi przez UDP | Datagram UDP |
| Pakiet | Jednostka warstwy sieciowej | Pakiet IPv4 lub IPv6 |
| Ramka | Jednostka warstwy łącza danych | Ramka Ethernet |
Warto zapamiętać przede wszystkim zależność między tymi pojęciami. Segment TCP może zostać umieszczony w pakiecie IP, a pakiet IP - w ramce Ethernet. Po przejściu przez router pakiet IP jest następnie umieszczany w nowej ramce właściwej dla kolejnego odcinka transmisji.
Dlatego adresy warstwy łącza, na przykład adresy MAC w Ethernecie, mogą zmieniać się na kolejnych fragmentach drogi, podczas gdy adres IP odbiorcy pakietu zasadniczo określa jego końcowy cel. Wyjątkiem są mechanizmy ingerujące w adresację, takie jak NAT.
Pakiety danych na przykładzie otwierania strony WWW
Działanie pakietów najlepiej prześledzić na zwykłym przykładzie. Użytkownik wpisuje w przeglądarce adres strony internetowej. Jeżeli komputer nie zna jeszcze odpowiadającego mu adresu IP, konieczne jest wykonanie zapytania DNS.
Po ustaleniu adresu serwera rozpoczyna się komunikacja sieciowa. W zależności od używanego protokołu i wersji HTTP mogą zostać wykorzystane TCP lub rozwiązania oparte na UDP, takie jak QUIC stosowany przez HTTP/3. Niezależnie od szczegółów komunikacja internetowa prowadzi do przesyłania kolejnych pakietów IP.
Pakiety opuszczają komputer użytkownika, trafiają do lokalnego routera, sieci operatora i kolejnych elementów infrastruktury. Routery przekazują je w kierunku sieci, w której znajduje się serwer.
Serwer odpowiada własnymi pakietami. Sama strona może wymagać pobrania wielu zasobów - dokumentu HTML, arkuszy CSS, skryptów JavaScript, fontów, zdjęć czy danych z API. Każdy większy zasób jest przesyłany w wielu jednostkach, dlatego wyświetlenie pojedynczej strony WWW może oznaczać wymianę bardzo dużej liczby pakietów.
Użytkownik widzi tylko gotową stronę, ale w tle system operacyjny, stos protokołów sieciowych, routery i serwery wykonują ogromną liczbę operacji związanych z adresowaniem, przesyłaniem, kontrolą i składaniem danych.
Jak zobaczyć pakiety przesyłane przez komputer?
Pakiety nie są jedynie abstrakcyjnym pojęciem z podręcznika sieci komputerowych. Można obserwować je podczas rzeczywistej transmisji za pomocą analizatora ruchu sieciowego, na przykład Wireshark.
Program przechwytuje ramki widoczne na wybranym interfejsie sieciowym i pozwala analizować zawarte w nich protokoły. Można zobaczyć adresy IP, numery portów, rodzaj protokołu, długość pakietu, wartości TTL oraz wiele innych informacji.
Analiza ruchu pokazuje również, że nawet wykonanie pozornie prostej czynności, takiej jak otwarcie witryny internetowej, może wywołać dużą liczbę transmisji związanych z DNS, nawiązywaniem połączeń, szyfrowaniem oraz pobieraniem kolejnych zasobów.
Pakiet danych jest więc jednym z kluczowych elementów działania współczesnych sieci. To właśnie podział informacji na niewielkie jednostki pozwala elastycznie wykorzystywać wspólną infrastrukturę, kierować dane pomiędzy różnymi sieciami i jednocześnie obsługiwać ogromną liczbę niezależnych transmisji.

Komentarze