# Transportlaag

De transportlaag is de vierde laag uit het OSI-model, dat zorgt voor het transport van data voor de applicaties. De meest gebruikte protocollen uit deze laag zijn het Transmission Control Protocol (TCP) en het User Datagram Protocol (UDP), data-eenheden uit deze laag worden meestal segmenten (of datagrammen in het geval van UDP) genoemd.

## Verbindinggeoriënteerd

Bepaalde transportlaagprotocollen, waaronder het TCP, bieden de hogere lagen een 'verbinding'. Door het leveren van betrouwbaarheid, congestion control, volgordecontrole en foutcontrole als dienst aan de hogere lagen uit het OSI-model, lijkt het voor de applicaties en de gebruiker alsof er een vaste verbinding is tussen de systemen. Dit lijkt zo, ook al levert de netwerklaag alleen een verbindingsloze dienst, waarbij alle data in losse delen (packets) wordt verstuurd en ontvangen (packetswitching) en is er geen lijn exclusief gereserveerd voor deze verbinding. De verbinding die de transportlaag levert wordt alleen geregistreerd op de twee eindsystemen.

## Betrouwbaarheid

Het protocol uit de onderliggende netwerklaag, bijvoorbeeld het Internet Protocol (IP), levert een zogenoemde best-effort delivery-dienst. Hierdoor is het nooit zeker of een bepaald pakket zal aankomen op de bestemming, omdat het netwerklaagprotocol alleen zijn uiterste best zal doen. Bepaalde protocollen uit de transportlaag (bijvoorbeeld TCP) kunnen deze zekerheid wel leveren. Met behulp van de SYN- (SYNchronise) en ACK-segmenten (ACKnowledge) houden zij bij of er data verzonden kan worden en of de data aangekomen is. Aan een ACK-segment wordt meestal ook het volgnummer toegevoegd, zodat er sneller besloten kan worden of er bepaalde segmenten opnieuw moeten worden verstuurd (bij verloren of beschadigde segmenten). Wanneer de verbinding wordt verbroken wordt dit door middel van een FIN-segment duidelijk gemaakt.

## Congestion control

Om te voorkomen dat netwerken of systemen te zwaar belast blijven, in het geval van grote hoeveelheden data, bieden sommige transportlaagprotocollen de mogelijkheid tot congestion control. Hierbij wordt in de header van een segment aan de verzender doorgegeven dat de ontvanger op dat moment te zwaar belast is en dat er even gewacht moet worden met het versturen van data. Daardoor wordt voorkomen dat verzenders een overbelast netwerk overbelast blijven houden door het opnieuw sturen van segmenten, wanneer deze als gevolg van de problemen niet of niet op tijd aankomen.

## Volgordecontrole

Een andere dienst die door een protocol uit de transportlaag kan worden geleverd is het bijhouden van de volgorde van alle segmenten. Hierbij wordt door het protocol een volgnummer aan de header toegevoegd, waardoor het in gevallen dat de pakketten van het netwerklaagprotocol in de verkeerde volgorde aankomen (bijvoorbeeld wanneer de pakketten via andere knooppunten over een netwerk zijn gestuurd), toch nog mogelijk is om de data te herstellen en opnieuw in goede volgorde te plaatsen. Dit is een dienst die wel door TCP wordt geleverd, maar niet door UDP.
Door het controleren van de datavolgorde en door alle data in een buffer te plaatsen is het mogelijk om applicaties een bytestream te leveren.

## Foutcontrole

Ook foutcontrole van verbindingen wordt door de transportlaag geleverd. Het protocol berekent voor alle uitgaande data een checksum en voegt deze toe aan de header van het uitgaande segment. Voor alle binnenkomende data wordt de berekende checksum vergeleken met de ontvangen checksum, zodat er kan worden gecontroleerd of alles intact is aangekomen.

## Poorten

Diensten die protocollen uit de transportlaag kunnen bieden zijn de TCP- en UDP-poorten. Wanneer aan iedere applicatie een uniek poortnummer (door middel van een socket) wordt gegeven wordt het mogelijk om meerdere applicaties tegelijk te laten communiceren met andere systemen. Het transportlaagprotocol zal dan voor alle segmenten die binnenkomen zorgen dat ze naar de bij het poortnummer behorende socket worden gestuurd, dit wordt demultiplexing genoemd. Alle data die verzonden wordt over de sockets van een systeem, worden door ditzelfde protocol 'verpakt' en aangevuld met headerinformatie, ook wel multiplexing genoemd.

## Protocollen

Er zijn een groot aantal datacommunicatieprotocollen die zich binnen de beschrijving van de transportlaag bevinden. Voorbeelden hiervan zijn:

### Internet

* TCP (Transmission Control Protocol)
* UDP (User Datagram Protocol)

### IBM/Microsoft

* NetBEUI (NetBIOS Extended User Interface)

### Apple

* AURP (Apple Talk Update-based Routing Protocol)
* RTMP (Routing Table Maintenance Protocol)
* AEP (AppleTalk Echo Protocol)
* ATP (AppleTalk Transaction Protocol)
* NBP (Name Binding Protocol)

### DEC

* NSP (Network Services Protocol)

### OSI

* TP0, TP1, TP2, TP3, TP4 (transport Protocol)
* Computernetwerken, Een 'top-down'-benadering, James F. Krose en Keith W. Ross, Addison-Wesley/Pearson Education Benelux, 2003, ISBN 90-430-0806-0