Inkapsling (Datornätverk)

Inkapsling är en process inom datorkommunikation. I normalfallet infogas data från lager N i en protokollstack, i datapaket (Protocol Data Units), på lager N-1, eventuellt efter att ha delats upp i mindre datasegment eller paketfragment. Det nya paketet förses pakethuvud och eventuell en svans bestående av styrdata såsom adressinformation och felupptäckande kod. På mottagarsidan packar motsvarande lager upp paketet genom att ta bort kontrolldata och eventuellt sätta samman paketfragment eller datasegment till större paket, filer eller meddelanden. Varje lager kan på detta vis sköta en väldefinierad och strikt avgränsad uppgift. 

Man kan likna processen vid hur ett brev förses med detaljerat brevhuvud, läggs i ett kuvert med adressetikett, som läggs i och tas ut ur olika säckar, lådor och konteinrar med sina adressetiketter. Ansvariga på en viss nivå behöver inte bry sig om innehållet, utan enbart om adressetiketten på den nivån.

Tunnling
Undantag från ovanstående är tunnling, som är en form av inkapsling som bryter mot kommunikationsstackens ordningningsföljd. Data från ett visst lager inkapslas i paket på samma eller högre nivå.

Cross-layer-optimering
Inkapsling och skiktade protokoll är inte optimalt ur alla synvinklar (lastens vikt blir större, och samma information upprepas på adressetiketterna), men ger flexibilitet. På samma sätt är skiktade protoll inom datakommunikation inte alltid optimala, utan kan fördröja kommunikationen och lägga till extra overhead, men ger flexibilitet så att ett lager kan förändras utan att hela systemet behöver anpassas.

Inom forskning studeras ibland cross-layer-optimering. Detta innebär att man frångår protokollstackens strikta uppdelning för att effektivisera resursutnyttjandet, och utnyttja information från andra lager. Detta kan exempelvis utnyttjas i vissa routingprotokoll och paketschemaläggningsalgoritmer för att åstadkomma differentierad Quality of Service eller anpassa till tillfälliga störningar på en radiokanal.

Exempel
Eftersom den vanligaste protokollstacken för nätverk idag är TCP/IP-modellen, så exemplifieras processen här med HTTP-meddelanden som inkapslas i TCP-segment, som inkapslas i IP-datagram, som inkapslas i Ethernetramar.

Applikationsdata 

I TCP/IP-modellen förses ofta data som skall skickas med ett huvud med metainformation på applikationsnivån. Detta huvud varierar beroende på angivet protokoll. Så här kan ett utdrag se ut från en HTTP-överföring, när servern har svarat:
HTTP/1.x 200 OK
Date: Wed, 02 Jan 2008 18:28:49 GMT
Server: Apache
X-Powered-By: PHP/5.1.2
Content-Language: sv
Last-Modified: Wed, 02 Jan 2008 17:48:42 GMT
Content-Encoding: gzip
Content-Length: 16517
Content-Type: text/html; charset=utf-8
Connection: keep-alive

Efter detta huvud följer de faktiska data som är överföringens syfte att förmedla.

TCP-segment eller UDP-datagram 

Protokollet TCP eller UDP delar vid behov upp applikationsdatan i mindre datagram, kallade segment på denna nivå. Applikationsnivåns eventuella huvud är som vilken data som helst i segmentet och behöver inte dupliceras i varje enstaka datagram.

IP-paket 

Segmenten förses med ett IP-huvud och blir då IP-paket. Segmenten kan vid behov också delas upp i mindre delar för att rymmas i dessa. IP-huvudet innehåller bland annat adress för mottagaren och avsändaren. Normalt är IP-paketen intakta hela vägen från sändare till mottagare.

Ethernet-ram 

IP-paket som skickas på lokala nätverk som använder Ethernet eller Token Ring, men för det mesta också de som skickas på WAN, kapslas in i s.k. ramar. Vilket innebär att de förses med huvud och fot, också kallad svans. Vid behov kan IP-paketen behöva delas upp för att rymmas inuti Ethernet-ramen.

Ethernetramen används bara för ett enda hopp mellan nätverksnoder. Ett IP-paket kan alltså komma att kapslas in i (och tas ut ur) åtskilliga ramar.

Fysiska signaler 

På den fysiska nivån omvandlas ramarna till elektriska, optiska eller radiovågssignaler och överförs bit för bit eller symbol för symbol.

Se även

 OSI-modellen
 Protocol Data Unit (PDU)
 Paketanalysator

Nätverksprotokoll