Kompresja Protokol贸w Sieciowych

Kompresja nag艂贸wk贸w w protoko艂ach takich jak IPv6, TCP i komunikacji VoIP.

Anatomia Cyfrowego Pakietu: Dlaczego Nag艂贸wki Maj膮 Znaczenie

Aby zrozumie膰, dlaczego kompresja protoko艂贸w sieciowych jest tak wa偶na, musimy najpierw wyobrazi膰 sobie, jak dane podr贸偶uj膮 przez internet. Informacje nie p艂yn膮 jednym, ci膮g艂ym strumieniem. Zamiast tego s膮 dzielone na miliony ma艂ych, odr臋bnych fragment贸w zwanych . Ka偶dy pakiet jest jak cyfrowa koperta. Wewn膮trz koperty znajduje si臋 niewielka cz臋艣膰 Twoich w艂a艣ciwych danych, jest to 艂adunek (payload). Ale tak jak w prawdziwej kopercie, najwa偶niejsza dla dostarczenia jest informacja zapisana na zewn膮trz: nag艂贸wek.

Nag艂贸wek pakietu zawiera wszystkie niezb臋dne informacje kontrolne i adresowe, potrzebne do dostarczenia pakietu od nadawcy do odbiorcy oraz zapewnienia, 偶e dane mo偶na poprawnie z艂o偶y膰 z powrotem. W typowym po艂膮czeniu internetowym wykorzystuj膮cym stos protoko艂贸w TCP/IP, pojedynczy pakiet przenosi stos nag艂贸wk贸w z r贸偶nych warstw protoko艂贸w, w tym:

  • Nag艂贸wek IP (Internet Protocol): To g艂贸wna etykieta adresowa. Zawiera adresy IP 藕r贸d艂owy i docelowy, na przyk艂ad 192.168.1.10192.168.1.10, kt贸re dzia艂aj膮 jak adresy uliczne dla komputer贸w wysy艂aj膮cego i odbieraj膮cego. Standardowy nag艂贸wek IPv4 ma 20 bajt贸w.
  • Nag艂贸wek TCP (Transmission Control Protocol) lub Nag艂贸wek UDP (User Datagram Protocol): Ten nag艂贸wek zarz膮dza po艂膮czeniem mi臋dzy konkretnymi aplikacjami. Zawiera numery port贸w 藕r贸d艂owego i docelowego (jak numer mieszkania przy danym adresie ulicznym), numery sekwencyjne do 艣ledzenia kolejno艣ci pakiet贸w i sumy kontrolne do wykrywania b艂臋d贸w. Standardowy nag艂贸wek TCP ma 20 bajt贸w, a nag艂贸wek UDP 8 bajt贸w.
  • Nag艂贸wki Warstwy Aplikacji (czasami): Niekt贸re protoko艂y, takie jak RTP (Real-time Transport Protocol) u偶ywany do strumieniowania g艂osu i wideo, dodaj膮 sw贸j w艂asny nag艂贸wek na wierzchu TCP/UDP, zawieraj膮cy znaczniki czasu i inne informacje synchronizacyjne. Nag艂贸wek RTP ma zazwyczaj 12 bajt贸w.

Problem Narzutu Protokolarnego

艁膮czny rozmiar tych nag艂贸wk贸w jest znany jako . W wielu sytuacjach ten narzut jest znikomy. Je艣li pobierasz du偶y obraz o rozmiarze 5 MB, dodatkowe 40 bajt贸w nag艂贸wk贸w na ka偶dym pakiecie jest nieistotne. Jednak istnieje wiele nowoczesnych zastosowa艅, w kt贸rych 艂adunek jest z natury bardzo ma艂y, i to w艂a艣nie tam narzut staje si臋 powa偶nym problemem.

Klasycznym przyk艂adem jest Voice over IP (VoIP), technologia stoj膮ca za rozmowami telefonicznymi przez internet. Aby zapewni膰 p艂ynn膮 rozmow臋 w czasie rzeczywistym, d藕wi臋k jest dzielony na bardzo ma艂e fragmenty. Typowy pakiet VoIP mo偶e zawiera膰 tylko 20 lub 30 bajt贸w danych audio w swoim 艂adunku. Obliczmy teraz rozmiar nag艂贸wka dla tego pakietu:

Nag艂owek聽IPv4聽(20聽bajtow)+Nag艂owek聽UDP聽(8聽bajtow)+Nag艂owek聽RTP聽(12聽bajtow)=40bajtownag艂owkow\text{Nag艂贸wek IPv4 (20 bajt贸w)} + \text{Nag艂贸wek UDP (8 bajt贸w)} + \text{Nag艂贸wek RTP (12 bajt贸w)} = \textbf{40 bajt贸w nag艂贸wk贸w}

Ten wynik jest zdumiewaj膮cy. Aby wys艂a膰 zaledwie 20 bajt贸w rzeczywistej informacji audio, sie膰 musi przes艂a膰 pakiet o rozmiarze 60 bajt贸w, z czego 40 bajt贸w (czyli 67 procent) to czysty narzut. Ponad dwie trzecie przepustowo艣ci jest marnowane tylko na informacje adresowe i kontrolne. Ta nieefektywno艣膰 jest szczeg贸lnie szkodliwa na 艂膮czach o niskiej przepustowo艣ci lub drogich, takich jak dane mobilne czy po艂膮czenia satelitarne. Ogranicza to liczb臋 jednoczesnych rozm贸w, zwi臋ksza op贸藕nienia i zu偶ywa bateri臋 w urz膮dzeniach mobilnych. To jest dok艂adnie problem, kt贸ry kompresja protoko艂贸w sieciowych, a w szczeg贸lno艣ci kompresja nag艂贸wk贸w, zosta艂a stworzona, aby rozwi膮za膰.

Zasada Kompresji Nag艂贸wk贸w: Wykorzystanie Redundancji Mi臋dzy Pakietami

Kompresja nag艂贸wk贸w dzia艂a dzi臋ki wykorzystaniu prostej, ale pot臋偶nej obserwacji: w ramach jednego strumienia komunikacyjnego (jak rozmowa telefoniczna, strumie艅 wideo czy nawet pobieranie jednego pliku), wi臋kszo艣膰 informacji w nag艂贸wkach pakiet贸w jest wysoce powtarzalna.

Przeanalizujmy nag艂贸wki w rozmowie VoIP od U偶ytkownika A do U偶ytkownika B:

  • Pola Statyczne: Niekt贸re pola s膮 ca艂kowicie statyczne przez ca艂y czas trwania rozmowy. Adres IP 藕r贸d艂owy (IP U偶ytkownika A), adres IP docelowy (IP U偶ytkownika B), port UDP 藕r贸d艂owy i port UDP docelowy b臋d膮 identyczne w ka偶dym pojedynczym pakiecie. Niezwykle marnotrawne jest wysy艂anie tych samych 40 bajt贸w informacji w k贸艂ko.
  • Pola Zmieniaj膮ce si臋 w Przewidywalny Spos贸b: Inne pola nie s膮 statyczne, ale zmieniaj膮 si臋 w bardzo przewidywalny spos贸b. Na przyk艂ad numer sekwencyjny RTP ro艣nie dok艂adnie o jeden z ka偶dym kolejnym pakietem. Znacznik czasu RTP r贸wnie偶 wzrasta o sta艂膮, przewidywaln膮 warto艣膰, odpowiadaj膮c膮 rozmiarowi 艂adunku audio.

Schematy kompresji nag艂贸wk贸w wykorzystuj膮 t臋 przewidywalno艣膰. Kompresor (u nadawcy) i dekompresor (u odbiorcy) ustanawiaj膮 wsp贸lny stan, znany jako . Proces generalnie dzia艂a w nast臋puj膮cy spos贸b:

  1. Pierwszych kilka pakiet贸w strumienia jest wysy艂anych z pe艂nymi, nieskompresowanymi nag艂贸wkami. Pozwala to odbiorcy na zbudowanie swojej lokalnej kopii kontekstu, przechowuj膮c wszystkie informacje statyczne, takie jak adresy IP i numery port贸w.
  2. Gdy obie strony s膮 zsynchronizowane i dziel膮 ten sam kontekst, kompresor przestaje wysy艂a膰 pe艂ne nag艂贸wki. Dla kolejnych pakiet贸w wysy艂a tylko niewielki skompresowany nag艂贸wek. Ten skompresowany nag艂贸wek nie zawiera pe艂nych adres贸w IP, ale raczej ma艂y identyfikator kontekstu, aby zidentyfikowa膰, kt贸ry zapisany kontekst nale偶y u偶y膰, wraz z minimalnymi informacjami opisuj膮cymi zmiany (np. jeden bit oznaczaj膮cy "numer sekwencyjny wzr贸s艂 o jeden").
  3. Dekompresor na ko艅cu odbieraj膮cym otrzymuje ten ma艂y 1-3 bajtowy skompresowany nag艂贸wek. U偶ywa identyfikatora kontekstu, aby odzyska膰 zapisany pe艂ny nag艂贸wek, a nast臋pnie stosuje ma艂膮 aktualizacj臋 (np. inkrementuje zapisany numer sekwencyjny), aby idealnie zrekonstruowa膰 oryginalny, pe艂ny nag艂贸wek przed przekazaniem pakietu do aplikacji.

Wysy艂aj膮c tylko zmiany zamiast ca艂ego nag艂贸wka za ka偶dym razem, kompresja nag艂贸wk贸w mo偶e zmniejszy膰 40-bajtowy narzut typowego pakietu VoIP do zaledwie 1 do 3 bajt贸w, co stanowi zysk wydajno艣ci ponad 90 procent.

ROHC (Solidna Kompresja Nag艂贸wk贸w): Z艂oty Standard

Najcz臋艣ciej u偶ywanym i najpot臋偶niejszym standardem kompresji nag艂贸wk贸w jest dzi艣 ROHC. S艂owo "Solidna" (Robust) w nazwie jest kluczowe; zosta艂 on specjalnie zaprojektowany, aby dzia艂a膰 niezawodnie nawet na trudnych, podatnych na b艂臋dy 艂膮czach, takich jak sieci bezprzewodowe i satelitarne, gdzie pakiety s膮 cz臋sto gubione lub dochodz膮 w innej kolejno艣ci.

ROHC to zaawansowany protok贸艂 stanowy, kt贸ry definiuje r贸偶ne profile dla r贸偶nych typ贸w ruchu (np. ROHC-RTP dla VoIP, ROHC-TCP dla ruchu internetowego). Dzia艂a on w kilku stanach, aby zr贸wnowa偶y膰 wydajno艣膰 i solidno艣膰:

  • Stan Inicjalizacji i Od艣wie偶ania (IR): Kompresor zaczyna w tym stanie, wysy艂aj膮c pe艂ne nag艂贸wki, aby ustanowi膰 lub od艣wie偶y膰 kontekst dekompresora.
  • Stan Pierwszego Rz臋du (FO): Po ustanowieniu kontekstu kompresor przechodzi do tego stanu. Wysy艂a skompresowane nag艂贸wki, kt贸re zawieraj膮 aktualizacje dla p贸l zmieniaj膮cych si臋 w nieprzewidywalny spos贸b lub wymagaj膮cych ponownej synchronizacji.
  • Stan Drugiego Rz臋du (SO): Jest to najbardziej zoptymalizowany stan. Gdy kompresor jest pewien, 偶e dekompresor jest w pe艂ni zsynchronizowany, wysy艂a najmniejsze mo偶liwe nag艂贸wki, cz臋sto zawieraj膮ce tylko skompresowany numer sekwencyjny.

Protok贸艂 mo偶e dynamicznie przechodzi膰 mi臋dzy tymi stanami. Je艣li pakiet zostanie utracony, a dekompresor straci synchronizacj臋, mo偶e zasygnalizowa膰 kompresorowi (je艣li dost臋pny jest kana艂 zwrotny) powr贸t do ni偶szego stanu i wys艂anie bardziej szczeg贸艂owego pakietu aktualizacyjnego w celu ponownego ustanowienia kontekstu. Ta solidno艣膰 sprawia, 偶e ROHC jest tak skuteczny w nowoczesnej komunikacji mobilnej.

Zastosowanie Praktyczne 1: IPv6 i Internet Rzeczy (IoT)

Jednym z najwa偶niejszych nowoczesnych zastosowa艅 kompresji nag艂贸wk贸w jest umo偶liwienie dzia艂ania Internetu Rzeczy (IoT). Nast臋pca IPv4, , zosta艂 zaprojektowany, aby rozwi膮za膰 problem wyczerpywania si臋 adres贸w, ale wi膮za艂 si臋 z kompromisem: wi臋kszymi nag艂贸wkami. Standardowy nag艂贸wek IPv6 ma sta艂y rozmiar 40 bajt贸w, czyli jest dwa razy wi臋kszy od standardowego nag艂贸wka IPv4.

Dla ma艂ych, niskoenergetycznych urz膮dze艅 IoT, takich jak czujniki czy inteligentne gad偶ety domowe, ten 40-bajtowy nag艂贸wek jest ogromnym obci膮偶eniem, zw艂aszcza gdy 艂adunek mo偶e mie膰 tylko kilka bajt贸w (np. odczyt temperatury). Aby rozwi膮za膰 ten problem, stworzono wyspecjalizowany standard o nazwie 6LoWPAN (IPv6 over Low-Power Wireless Personal Area Networks). 6LoWPAN to zestaw standard贸w, kt贸re wykorzystuj膮 agresywn膮 kompresj臋 nag艂贸wk贸w i inne techniki, aby uczyni膰 IPv6 praktycznym dla tych ograniczonych sieci. Kompresuje nag艂贸wki poprzez:

  • Opuszczanie Wsp贸lnych P贸l: Wiele p贸l w nag艂贸wkach IPv6 i UDP mo偶na pomin膮膰 i wywnioskowa膰 z kontekstu warstwy 艂膮cza danych.
  • Wsp贸艂dzielone Prefiksy: Wszystkie urz膮dzenia w jednej sieci 6LoWPAN dziel膮 ten sam prefiks sieciowy IPv6. Ten prefiks nie musi by膰 wysy艂any w ka偶dym pakiecie; jest cz臋艣ci膮 kontekstu.
  • Wyprowadzanie Adresu: 64-bitowy identyfikator interfejsu adresu IPv6 cz臋sto mo偶na wyprowadzi膰 bezpo艣rednio z 48-bitowego lub 64-bitowego adresu MAC urz膮dzenia, co eliminuje potrzeb臋 jego przesy艂ania.

Dzi臋ki tym technikom 48 bajt贸w nag艂贸wka IPv6 i UDP mo偶na skompresowa膰 do zaledwie 2-4 bajt贸w, co umo偶liwia wydajn膮 komunikacj臋 IP nawet dla najmniejszych urz膮dze艅.

    Kompresja Protokol贸w Sieciowych | Teleinf Edu