7. Transportskikt

Transportskiktet är det första skikt där det förekommer peer-to-peer kommunikation mellan två kommunicerande system. Transportskiktets viktigaste uppgift är att åstadkomma en förbindelse från ett slutenhet till ett annat. Denna förbindelse ska fungera så att överliggande skikten befrias från alla detaljer som rör datatransporten.

Bild 1: Transportskiktet

Transportskiktets syfte är därmed:

  • Att datasegmentera och att datarekonstruera.
  • Att förbereda dataöverföringen över nätverket.
  • Att upprätta en till en förbindelse.
  • Att följa upp varje enskild kommunikation genom att behålla aktiva alla kommunikationsströmmar.
  • Att tillhandahålla datasegmentering och styr hur segmenten sätts ihop på destinationen.

Transportskiktets protokoll beskriver tjänster för datainkapsling och dess associationer så att varje segment hanteras med rätt applikation vid destinationen. För att skicka dataströmmar till rätt program måste programmet identifieras med hjälp av ett unikt portnummer som specificeras i varje segments header.

Applikationer genererar data och de lägre skikten levererar data till rätt enhet. Just därför kan man säga att transportskiktet är länken mellan applikationsskiktet och lägre skikten som är ansvariga för nätverkstransmissionen. Applikationer har olika krav och därför olika protokoll i transportskiktet.

Kommunikationskontroller

Oftast kommunicerar flera applikationer med varandra samtidigt vilket kräver att enskilda dataströmmar identifieras så att de kan multiplexeras genom samma transmissionsmedia. Datasegmentering möjliggör multiplexering så att flera applikationer kan komma åt transmissionsmediet.

Bild 2: Datasegmentering – multiplexering

Fel kan uppstå och de ska identifieras och korrigeras exempelvis genom att reglera dataflöde (inte för mycket, inte för litet) eller genom att återsända felaktiga leveranser.

Dessa mekanismer möjliggörs när Transportskiktet först etablerar en session mellan kommunicerande applikationer innan data överförs. När avsändare och mottagare sammanbinds genom flera nätverk kan kommunikationskontroller utövas som kan identifiera, åtgärda fel och reglera dataflödet under samma pågående session.

Reglering av dataflödet (flödeskontroll) innebär att ett snabbt system inte överfyller ett långsammare, annars förekommer dataförlust. Denna flödeskontroll reglerar sändarens och mottagarens överföringsresurser som till exempel bandbredden och buffertminnet.

Tillförlitliga tjänster

Normalt erbjuder transportskiktet tillförlitliga tjänster till det överliggande skiktet eftersom det normala är att användarna vill föra data över nätverket på ett säkert och korrekt sätt samt i rätt ordning. Tillförlitlighet innebär att data kommer fram till destinationen i ordning och utan deformationer. I princip följer varje dataström tillförlitliga protokoll under dataöverföringen så att felfria leveranser kan garanteras och därmed kvitteras, annars återsänds felaktiga leveranser.

Bild 3: Tillförlitligt eller otillförlitligt transport

För att transportskiktet ska kunna erbjuda en tillförlitlig tjänst måste transportskiktet kunna ta hänsyn till de situationer som kan uppstå i de bindande nätverken mellan avsändaren och destinationen. I vissa situationer betyder hastigheten mer än tillförlitligheten, exempelvis för audio eller video. I dessa situationer kommer eventuella fel endast att uppträda som lite knaster på linjen eller som en liten förvrängning av bilden, medan varierande överföringstider helt ödelägger uppfattningen av mottagna data.

Otillförlitliga transportprotokoll/tjänst föredras om man vill ha en enkel och snabb transport utan “overhead”, utan styrinformation förutom det nödvändiga. Applikationsutvecklare väljer lämplig transportprotokoll enligt applikationens krav.

Portadressering

TCP och UDP baserade tjänster identifierar de olika kommunicerande applikationerna med hjälp av deras portnummer. Portnummer genereras med 16 bitar (216 = 65536) och administreras av standardiseringsorganisationer som Internet Engineering Task Force (IETF) och Internet Assigned Numbers Authority (IANA)

De 65536 portnummrerna grupperas i:

  • System Ports: 0 – 1023. De 1 024 lägsta numren kallas för ”wellknown ports” och används av välkända kommunikationsprotokoll. Till exempel:
    • echo TCP och UDP 7
    • FTP data TCP 20 och FTP kontroll TCP 21
    • Telnet TCP 23
    • SMTP TCP 25
    • HTTP TCP 80
    • POP3 TCP 110
    • SNMP UDP 161
  • User Ports: 1024 – 49151 (Registered Ports). De används fritt av klientapplikationer, oftast dynamiskt. Det vill säga att applikationer tilldelas ett portnummer helt godtyckligt.
  • Dynamic/Private Ports: 49152 – 65535

Port-tilldelning

TCP lägger även till så kallade portnummer. Men hjälp av dessa kan flera applikationer, som körs i en och samma dator, identifieras. Destinations portnumret talar om vilken applikation (eller program eller process) som ska ta emot datapaketet. Samma server kan därför både vara webbserver (och svara på port 80) och post-server (port 25).

Portnummer tilldelas på olika sätt beroende på meddelandets typ (request/replay).

  • Systemportnummer tilldelas av IETF
  • Användarportnummer och Privata portnummer tilldelas av IANA.
  • Normalt använder servrar systemportnummer (0 – 1023).
  • Klienter däremot använder slumpartade portnummer över 1 023.
  • IP adress kombinerat med portnummer kallas “socket” till exempel 192.168.1.20:80

Normalt är flera port alltid aktiva och lyssnar på datatrafiken. Av säkerhetsskäl bör det kontrolleras vilka portar som “lyssnar” på datatrafiken i onödan och äventyrar nätverkssäkerheten. Det rekommenderas att stoppa alla protokoll och tjänster som inte behövs eftersom de är en ingång till obehöriga.

Datasegmentering

Ett meddelande från användaren i övre skikt är ofta för stort för att rymmas i en PDU. Om så är fallet delar transportskiktet upp meddelandet i flera segment innan det levereras vidare till nätverksskiktet.

Det mottagande transportskiktet ska kunna se på ett segment att den inte utgör ett helt meddelande utan att flera segment ska kombineras ihop i rätt ordning till ett meddelande. Styrinformation i headern hjälper till så att dataströmmar sätts ihop i rätt ordning.

Bild 5: Datasegmentering

Frågan är nu hur stort ett segment/datagram ska vara. Det finns flera parametrar som kan ha betydelse för dataströmmars storlek. Först finns det underliggande nätverk genom vilket dataströmmar förs över till destinationen. Begränsningar i de mellanliggande nätverkshanterare och eventuella fel under överföringen skulle komplicera transporten av stora datamängder och öka leveranstiden rejält. Just därför kan data segmenteras i lämpliga storlekar så att de kan multiplexeras genom en och samma transmissionsmedia.