Transportskikt

Transportskiktet är det första skiktet där det uppstår peer-to-peer-kommunikation mellan två system som kommunicerar med varandra. Huvudsyftet med transportskiktet är att skapa en pålitlig förbindelse mellan två enheter och hantera alla detaljer som rör datatransporten, vilket avlastar de överliggande skikten.

Bild 1: Transportskiktet

Transportskiktet har följande mål:

  • Datasegmentering och rekonstruktion: Transportskiktet delar upp data i mindre segment vid avsändaren och återskapar dem i rätt ordning vid mottagaren.
  • Förberedelse av dataöverföring: Transportskiktet förbereder data för överföring över nätverket genom att tilldela nödvändig styrinformation och transportprotokoll.
  • Upprättande av punkt-till-punkt-förbindelse: Transportskiktet etablerar en dedikerad förbindelse mellan avsändar- och mottagarenheterna för att säkerställa direkt kommunikation.
  • Hantering av kommunikationsströmmar: Transportskiktet övervakar och upprätthåller aktiva kommunikationsströmmar för att säkerställa att varje enskild kommunikation behandlas korrekt.
  • Datasegmentering och rekonstruktion på destinationen: Transportskiktet ansvarar för att sätta samman de mottagna segmenten i rätt ordning och leverera dem till rätt applikation vid destinationen.

Protokollen i transportskiktet definierar tjänster för datasegmentering och associationer så att varje segment kan hanteras korrekt av rätt applikation vid mottagaren. För att dirigera dataströmmar till rätt program krävs unika portnummer som specificeras i segmentens header.

Applikationer genererar data som sedan överlämnas till de lägre skikten för leverans. Transportskiktet fungerar som en bro mellan applikationsskiktet och de lägre skikten som hanterar själva nätverkstransmissionen. Inom transportskiktet används olika protokoll beroende på kraven från applikationerna.

Kommunikationskontroller

Kommunikationskontroll är viktig när flera applikationer kommunicerar samtidigt och kräver att individuella dataströmmar identifieras och multiplexas över samma transmissionsmedia. Genom datasegmentering kan flera applikationer dela på transmissionsmediet.

Bild 2: Datasegmentering möjliggör multiplexering

Fel kan uppstå under överföringen och transportskiktet hanterar dessa genom att reglera dataflödet och korrigera felaktiga leveranser exempelvis återsända felaktiga leveranser. Genom att etablera en session mellan avsändare och mottagare över flera nätverk kan transportskiktet utföra kommunikationskontroller som identifierar och åtgärdar fel samt reglerar dataflödet.

Flödeskontroll innebär att snabba system inte överbelastar långsammare system, vilket kan leda till dataförlust. Genom flödeskontroll reglerar sändaren och mottagaren sina överföringsresurser, som bandbredd och buffertminne, för att balansera dataflödet.

Tillförlitliga tjänster

Tillförlitliga tjänster erbjuds vanligtvis av transportskiktet för att säkerställa att data når destinationen i rätt ordning och utan fel. Genom att följa tillförlitliga protokoll under dataöverföringen kan felaktiga leveranser detekteras och återsändas för att garantera felfria leveranser.

Bild 3: Tillförlitlig och otillförlitlig transportprotokoll

För att kunna erbjuda en tillförlitlig tjänst måste transportskiktet beakta situationer som kan uppstå i de olika nätverken mellan avsändaren och mottagaren. I vissa situationer är hastigheten viktigare än tillförlitligheten, till exempel vid ljud- eller videokommunikation. I sådana fall kan små fel i överföringen uppfattas som knaster eller förvrängning, medan ojämn överföringstid helt kan förstöra mottagandet av data.

Det finns även transportprotokoll och tjänster som är otillförlitliga och föredras om man behöver enkel och snabb transport utan onödig ”overhead” eller extra styrinformation. Applikationsutvecklare väljer lämpligt transportprotokoll baserat på applikationens krav.

Portadressering

Portadressering används för att identifiera olika applikationer som kommunicerar genom TCP och UDP. Portnummer byggs upp med 16 bitar (216 = 65536) och tilldelas av standardiseringsorganisationer som IETF och IANA.

De 65536 port-numren grupperas enligt följande:

  • System Ports: 0 – 1023. De första 1024 numren kallas ”well-known ports” och används av välkända kommunikationsprotokoll. Exempelvis:
    • echo TCP och UDP 7
    • FTP data TCP 20 och FTP kontroll TCP 21
    • SSH TCP 22
    • Telnet TCP 23
    • SMTP TCP 25
    • HTTP TCP 80
    • POP3 TCP 110
    • SNMP UDP 161
  • User Ports: Användarportnummer (Registered Ports): Dessa portnummer sträcker sig från 1024 till 49151. De används av klientapplikationer för att etablera anslutningar till servrar eller andra enheter i nätverket. Dessa portnummer är registrerade av Internet Assigned Numbers Authority (IANA) för att tilldela dem till specifika applikationer eller protokoll.
  • Dynamic/Private Ports: Privata portnummer sträcker sig från 49152 till 65535. De används också av klientapplikationer för att etablera temporära anslutningar till servrar eller andra enheter i nätverket. Skillnaden är att privata portnummer inte är officiellt registrerade och kan tilldelas dynamiskt av operativsystemet eller applikationerna själva. Dessa portnummer används för tillfälliga anslutningar och behöver inte följa någon specifik standard.

Sammanfattningsvis är användarportnummer och privata portnummer inte samma sak. Användarportnummer (Registered Ports) sträcker sig från 1024 till 49151 och är officiellt registrerade, medan privata portnummer (Dynamic/Private Ports) sträcker sig från 49152 till 65535 och tilldelas dynamiskt utan officiell registrering.

Observera att en IP-adress kombinerad med portnummer kallas ”socket”, till exempel: 125.35.88.95:80

Inom IT brukar man använda uttrycket att servrar ’lyssnar’ på datatrafik i nätverket, vilket innebär att flera portar är aktiva och öppna för kommunikation. Det är dock viktigt att vara medveten om säkerhetsaspekterna och noga kontrollera vilka portar som är öppna och aktiva.

Att ha onödigt öppna portar utgör en potentiell risk för nätverkssäkerheten. Obehöriga kan utnyttja dessa portar i sina försök att få obehörig åtkomst till systemet eller infektera det med skadlig kod. Därför rekommenderas det starkt att stänga av eller inaktivera protokoll och tjänster som inte används, som en del av god praxis inom nätverkssäkerhet.

Datasegmentering

Datasegmentering används när ett meddelande från applikationsskiktet är för stort för att passa in i en enda PDU (Protocol Data Unit). Om så är fallet delar transportskiktet upp meddelandet i flera segment innan de skickas vidare till nätverksskiktet.

Mottagande transportskiktet kan känna igen att ett segment inte utgör ett komplett meddelande, och att flera segment måste kombineras i rätt ordning för att återskapa meddelandet. Styrinformationen i segmentets header hjälper till att ordna dataströmmen i rätt ordning.

Bild 4: Datasegmentering

Frågan är nu hur stor storlek ett segment/datagram bör ha. Flera faktorer påverkar dataströmmarnas storlek. För det första finns det det underliggande nätverket genom vilket dataströmmarna transporteras till destinationen. Begränsningar i de mellanliggande nätverkshanterarna och eventuella fel under överföringen kan komplicera transporten av stora datamängder och leda till ökad leveranstid. Därför kan det vara fördelaktigt att segmentera data i lämpliga storlekar så att de kan multiplexas genom samma transmissionsmedia. Genom att anpassa segmentstorleken efter nätverksförhållandena kan man optimera dataöverföringen och undvika problem som kan uppstå vid överföring av stora datamängder.