Program i Applikationsskiktet genererar data som behöver skickas mellan source- och destinationsenheten. Transportskiktet ansvarar för den logiska kommunikationen mellan applikationer som körs på olika hostar. Detta kan innebära tjänster som att upprätta en tillfällig session mellan två hostar och att säkerställa en tillförlitlig överföring av information till en applikation.
Som vi ser i bilden nedan fungerar Transportskiktet som en länk mellan Applikationsskiktet och de nedre lagren som hanterar själva dataöverföringen.

Transportskiktet har ingen kännedom om exempelvis vilken typ av host som är mottagare, vilken typ av medium som används, vilken väg datan tar, om det finns överbelastning på en viss länk eller hur stort nätverket är.
Transportskiktet omfattar två huvud-protokoll:
- Transmission Control Protocol (TCP)
- User Datagram Protocol (UDP)
Transportskiktets ansvarsområden
- Spårning av individuella konversationer
- Segmentering och återmontering av data
- Tillägg av header-information
- Identifiering av applikationer
- Multiplexering av konversationer
Spårning av individuella konversationer
På Transportskiktet kallas varje dataström mellan en source-applikation och en destination-applikation för en konversation, och dessa spåras var för sig. Det är Transportskiktets uppgift att hantera flera samtidiga konversationer och se till att de inte blandas ihop.
Som visas i bilden kan en host ofta ha flera applikationer som kommunicerar över nätverket samtidigt. Eftersom nätverk vanligtvis har en gräns för hur mycket data som kan skickas i ett enskilt paket, måste data delas upp i mindre delar.

Segmentering och återmontering av data
Transportskiktet ansvarar för att dela upp data genererad i Applikationsskiktet i lagom stora block. Beroende på vilket protokoll som används kallas dessa block för segment (vid TCP) eller datagram (vid UDP). I bilden nedan ser vi hur olika konversationer delas upp i separata block.

Denna segmentering gör datan lättare att hantera och transportera över nätverket.
Tillägg av header-information
Varje datablock får en header från transportprotokollet. Denna header innehåller binär information organiserad i fält, och det är dessa fält som gör det möjligt för protokollen att utföra sina olika funktioner vid datakommunikation.
Mottagaren använder informationen i headern för att sätta ihop blocken till en komplett dataström som kan levereras till rätt applikation. På så sätt säkerställer Transportskiktet att alla applikationer på en enhet får rätt data, även när flera körs samtidigt.

Identifiering av applikationer
Transportskiktet måste kunna särskilja och hantera flera parallella kommunikationer med olika behov. För att se till att data hamnar hos rätt applikation används en portnummeridentifierare. Som visas i bilden nedan tilldelas varje program eller process som behöver nätverksåtkomst ett portnummer som är unikt för just den värden.

Multiplexering av konversationer
Att skicka vissa typer av data (till exempel en videoström) som en enda stor dataström skulle kunna ta upp all tillgänglig bandbredd. Det skulle också försvåra felkorrigering och återöverföring av skadade delar.
Som vi ser i bilden använder Transportskiktet segmentering och multiplexering för att flera olika konversationer ska kunna samsas och skickas parallellt på samma nätverk. Dessutom kan Transportskiktet utföra felkontroll på varje segment, för att kontrollera om datan har förändrats under överföringen.

Transportskiktets protokoll
IP hanterar bara struktur, adressering och routning av paket – inte hur själva leveransen sker. Det är Transportskiktets protokoll som anger hur meddelanden ska överföras mellan kommunicerande enheter och som hanterar kraven på tillförlitlighet i konversationen.
Transportskiktet består främst av protokollen TCP och UDP. för att stödja olika applikationer som har olika behov av tillförlitlighet.

Transmission Control Protocol (TCP)
IP-protokollet ansvarar enbart för struktur, adressering och dirigering (routing) av paket – alltså att de skickas från en avsändare till en mottagare. Däremot garanterar IP varken att paketen verkligen kommer fram, i rätt ordning eller att en anslutning mellan avsändare och mottagare upprättas.
Här fyller TCP (Transmission Control Protocol) en viktig funktion. TCP är Transportskiktets pålitliga och funktionsrika protokoll. Det säkerställer att all data levereras korrekt, i rätt ordning och utan förluster. För att uppnå detta använder TCP särskilda kontroll-fält och mekanismer som bekräftelser, flödeskontroll och omsändning vid fel. Detta kräver extra bearbetning både hos avsändaren och mottagaren.
Förbindelseorienterat protokoll
TCP är ett förbindelseorienterat protokoll, vilket innebär att en anslutning alltid måste etableras mellan avsändare och mottagare innan själva dataöverföringen kan börja. Under överföringen ser TCP till att hålla reda på samtalets ”tillstånd” och garanterar en ordnad och tillförlitlig kommunikation.
TCP delar alltid upp data i mindre enheter som kallas segment. Om något segment förloras eller skadas skickas det om. Dessutom används kvittenser (acknowledgments) för att bekräfta att segmenten verkligen kommit fram.
Flödeskontroll och optimering
För att undvika att överbelasta mottagaren använder TCP flödeskontroll och fönsterstorleks förhandling. Detta innebär att sändningshastigheten hela tiden anpassas till vad mottagaren kan hantera.
TCP erbjuder tillförlitlighet och flödeskontroll genom att:
- Numrera och spåra datasegment från en specifik applikation till en specifik mottagare
- Bekräfta mottagen data – kvittens
- Skicka om segment som inte bekräftats inom en viss tid
- Sortera segment som anländer i fel ordning
- Anpassa sändningshastigheten till mottagarens kapacitet
Därför används TCP ofta i applikationer där tillförlitlighet och ordning är avgörande, till exempel vid webbtjänster (HTTP/HTTPS), filöverföring (FTP) och e-post (SMTP/IMAP/POP3).
User Datagram Protocol (UDP)
UDP är ett enklare transportlagerprotokoll än TCP. Till skillnad från TCP erbjuder UDP varken tillförlitlighet eller flödeskontroll, vilket gör att protokollet kan använda färre fält i sitt header. Detta innebär att UDP kan bearbeta data snabbare än TCP, men utan samma garantier för leverans.
UDP tillhandahåller endast de mest grundläggande funktionerna för att leverera datagram mellan rätt applikationer. Detta sker med mycket liten overhead och minimal datakontroll.
Obs: UDP delar alltid upp data i datagram, ibland även kallade segment.
Förbindelselöst protokoll
UDP är ett förbindelselöst protokoll. Det betyder att ingen anslutning behöver etableras mellan avsändare och mottagare innan data skickas. Eftersom UDP inte heller spårar vilken information som har skickats eller mottagits, kallas det också för ett tillståndslöst protokoll (stateless).
Best-effort-leverans
UDP kallas ofta ett best-effort delivery protocol. Det finns nämligen inga kvittenser (acknowledgments) på att datasegment faktiskt har nått fram. Om något försvinner på vägen, får avsändaren aldrig veta det.
Ett bra sätt att förstå UDP är att jämföra det med att skicka ett vanligt, orekommenderat brev med posten. Avsändaren vet inte om mottagaren verkligen tar emot brevet, och posten tar inget ansvar för att spåra försändelsen eller meddela om den inte når fram. TCP däremot är mer som att skicka ett rekommenderat brev eller paket, där mottagaren måste kvittera för att bekräfta att leveransen lyckats.
Här nedan visas illustrationer av hur TCP och UDP hanterar informationsutbyte mellan avsändare och mottagare.
- TCP använder kvittenser och etablerar en förbindelse för att säkerställa att all data kommer fram i rätt ordning.
- UDP däremot skickar datagram direkt, utan kvittens eller förbindelse, vilket gör överföringen snabbare men mindre tillförlitlig.
Klienten skickar först tre segment till FTP-servern.
Servern tar emot dessa segment och skickar tillbaka en kvittens som bekräftelse.

Därefter skickar klienten ytterligare tre segment. Om servern tar emot dem korrekt skickas även dessa kvitteringar tillbaka. På så sätt fortsätter kommunikationen steg för steg.

Men om klienten inte får någon kvittens inom en viss tid, antar den att segmenten inte har nått fram. Då skickar klienten om de segment som inte blivit bekräftade.

Klienten skickar ett antal UDP-datagram till servern.
Servern skickar ingen kvittens tillbaka, oavsett om datagrammen tas emot eller inte.

UDP eller TCP?
Vissa applikationer kan tolerera viss dataförlust under överföring, men inte förseningar. För sådana applikationer är UDP det bättre valet eftersom det innebär mindre styrinformation (overhead). Ett exempel är Voice over IP (VoIP). Om TCP skulle användas här, med kvittenser och omsändningar, skulle samtalet bli hackigt och oanvändbart på grund av fördröjningar.

UDP används också i applikationer av typen fråga–svar där mängden data är liten och en omsändning går snabbt. Ett exempel är Domain Name System (DNS). En klient skickar en förfrågan till en DNS-server om IPv4- eller IPv6-adresser för ett domännamn. Om klienten inte får svar inom en viss tid, skickar den helt enkelt förfrågan igen.
I en live videoström kan en eller två förlorade segment orsaka en kort störning i bild eller ljud. Användaren kanske knappt märker det. Om mottagaren däremot hade väntat in omsändningar för varje saknad del skulle resultatet bli långa fördröjningar och därmed en betydligt sämre upplevelse. Här är det alltså bättre att spela upp så bra media som möjligt med det material som faktiskt mottagits, även om det blir små brister.
För andra applikationer är det däremot avgörande att all data levereras i rätt ordning och i korrekt skick. Här används TCP. Exempel på sådana applikationer är databaser, webbläsare och e-postklienter. Om delar av informationen saknas kan kommunikationen bli korrupt, ofullständig eller oläslig. Ett tydligt exempel är när man använder internetbank: all information måste överföras felfritt.
Applikationsutvecklare måste därför välja transportprotokoll utifrån applikationens behov.

Video kan skickas med både TCP och UDP.
Applikationer som streamar lagrat ljud och video använder oftast TCP. Med hjälp av TCP kan man då hantera buffring, mätning av bandbredd och trafikstyrning för att förbättra användarupplevelsen.
Realtids video och röst använder i regel UDP, men kan även använda TCP, eller en kombination. Ett videokonferens program kan exempelvis använda UDP som standard, men om brandväggar blockerar UDP kan trafiken istället skickas över TCP.
För lagrade medier, som en film på begäran (on-demand), används i praktiken TCP. Om nätverket plötsligt inte klarar den nödvändiga bandbredden pausas filmen, och användaren får se meddelandet ”buffering…”. Under pausen arbetar TCP med att återställa strömmen. När tillräckligt med data har laddats och en stabil bandbredd finns tillgänglig fortsätter uppspelningen.