CSLIP
![Avatar](assets/img/avatar/39.jpg)
Author
Albert FloresCSLIP (Compressed SLIP) je linkový protokol vycházející z protokolu SLIP s možností komprese TCP+IP záhlaví. Protokol slouží k přenosu dat na sériové lince. Protokol CSLIP komprimuje 40 bajtů záhlaví protokolů TCP a IP (přesněji 20 bajtů z TCP-záhlaví a 20 bajtů z IP-záhlaví), na velikost 3 až 16 bajtů. Ke komprimaci dochází u TCP a IP záhlaví, nikoliv u dat.
Význam slova komprese záhlaví neznamená kompresi, jak si ji představujme (např. pomocí programu ZIP). +more Autor CSLIP (Van Jacobson) si uvědomil, že mnoho údajů v IP a TCP záhlaví během TCP spojení zůstává stejná nebo se mění nepatrně, takže je dostačující přenášet změněné položky IP a TCP záhlaví nebo jen přírůstky těchto položek. Ke změně položek dochází: * identifikace IP-datagramu * pořadové číslo odesílaného bajtu * pořadové číslo přijatého bajtu * délka okna * kontrolní součet TCP záhlaví * ukazatel naléhavých dat Změna ostatních položek je výjimečná. Položky celková délka IP-datagramu a kontrolní součet IP-záhlaví jsou nepotřebné.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Verze IP | Verze IP | Verze IP | Verze IP | Délka záhlaví | Délka záhlaví | Délka záhlaví | Délka záhlaví | Typ služby | Typ služby | Typ služby | Typ služby | Typ služby | Typ služby | Typ služby | Typ služby | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu | Celková délka IP-datagramu |
Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Identifikace IP-datagramu | Příznaky(flags) | Příznaky(flags) | Příznaky(flags) | Příznaky(flags) | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku | Posunutí fragmentu od počátku |
Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Doba života datagramu(TTL) | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Protokol vyšší vrstvy | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví | Kontrolní součet z IP-záhlaví |
IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele | IP-adresa odesílatele |
IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce | IP-adresa příjemce |
Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Zdrojový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port | Cílový port |
Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu | Pořadové číslo odesílaného bajtu |
Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu | Pořadové číslo přijatého bajtu |
Délka záhlaví | Délka záhlaví | Délka záhlaví | Délka záhlaví | Rezerva | Rezerva | Rezerva | Rezerva | Rezerva | Rezerva | URG | ACK | PSH | RST | SYN | FIN | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna | Délka okna |
Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Kontrolní součet | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat | Ukazatel naléhavých dat |
Ke komprimování záhlaví dochází u TCP protokolu a v záhlaví se změní pouze výše uvedené položky. V opačném případě (např. +more pokud se jedná o ICMP paket, UDP datagram či fragment IP-datagramu, nebo je-li nastaven některý z příznaků RST,SYN,FIN ,nedojde ke kompresi a přenese se nekomprimovaný rámec.
Komprese-dekomprese
Posílá-li odesílatel TCP/IP paket, pak je paket na straně odesílatele předán kompresoru. Kompresor paket zkomprimuje nebo jej pustí bez změny. +more Na straně příjemce dekompresor sestaví paket do původní podoby. Kompresor komprimuje postupně jednotlivé datové toky (spojení). Všechny důležité informace ze záhlaví TCP a IP nutné pro kompresi a dekompresi si udržuje kompresor ve slotu.
Při odesílání paketu projde odesílatelův paket kompresorem. Kompresor analyzuje, zda je paket komprimovaný či ne. +more Pokud je paket nekomprimovaný nebo byl odeslán paket ICMP, UDP datagram, fragment IP-datagramu nebo má paket nastaven některý z příznaků RST,SYN,FIN, je paket poslán bez komprese. V opačném případě je spuštěn proces komprimace záhlaví. Kompresor prohledá své sloty, zdali nemá uložené informace z TCP/IP záhlaví konkrétního paketu.
Mohou nastat dvě situace
* Žádný slot kompresoru neobsahuje informace TCP+IP záhlaví, tudíž se jedná o první komprimovatelný paket nového spojení (první paket nového TCP spojení má nastaven příznak SYN). Dojde k vložení záhlaví TCP a IP tohoto paketu do prvního volného slotu. +more Není-li žádný slot volný, použije se nejdéle nepoužívaný slot. Kompresor tento paket nekomprimuje a následovně dojde v poli Protokol vyšší vrstvy(Protocol) ke změně hodnoty na číslo použitého slotu.
* Kompresor našel ve slotu číslo Č záhlaví IP a TCP, které náleží předchozímu spojení. Kompresor provede okamžitou kompresi paketu.
Komprimované záhlaví
Komprimované záhlaví obsahuje v prvním bajtu tzv.masku. Pomocí jednotlivých bitů masky lze zjistit, které položky v záhlaví originálního paketu se změnily.
- | Č | I | P | S | A | W | U |
---|---|---|---|---|---|---|---|
číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č | číslo slotu(číslo spojení)-Č |
kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP | kontrolní součet TCP |
ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U | ukazatel naléhavých dat-U |
přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W | přírůstek velikosti okna-W |
přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A | přírůstek potvrzených dat-A |
přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S | přírůstek odeslaných dat-S |
přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I | přírůstek identifikace IP-datagramu-I |
data | data | data | data | data | data | data | data |
Jednotlivé bity masky
* Č - značí číslo slotu. Číslo slotu není povinné. +more Pokud číslo slotu není uvedeno, pak se předpokládá že číslo slotu je shodné s číslem slotu předchozího komprimovaného paketu. Číslo slotu je reprezentováno hodnotou jeden bajt, protože číslo slotu se přenáší mezi kompresorem a dekompresorem v poli Protokolu vyšší vrstvy, které je dlouhé právě jeden bajt.
Proto je možné komprimovat zároveň max. 255 připojení.
* U - ukazatel naléhavých dat. Oznamuje, že je v paketu vyplněno pole obsahující ukazatel naléhavých dat.
* W - přírůstek velikosti okna. U komprimovaného záhlaví nedochází k přenosu celkové velikosti okna ale jen přírůstku. +more Pokud by přírůstek přesahoval velikost 64K nebo byl záporný, nedošlo by ke komprimaci paketu.
* A - přírůstek potvrzených dat.
* S - přírůstek odeslaných dat.
* I - přírůstek identifikace IP-datagramu.
* P - příznak PUSH.
TCP spojení je duplexní, ale komprimace záhlaví se provádí pro každý směr zcela samostatně.
Protokol CSLIP je popsán v RFC-1144. Celý mechanismus a problematika komprese IP záhlaví je již možné přenést i na jiné protokoly (např. +more UDP, IPv6) a specifikace se nachází pod RFC-2507 až 2509.
Reference
Alena Kabelová,Libor Dostálek: Velký průvodce protokoly TCP/IP a systémem DNS, CP Books, 2005;