Transportlaget

**Transportlaget** er det fjerde av de sju lagene i OSI-modellen. Det utfører tjenester for sesjonslaget og benytter seg av tjenestene på nettverkslaget.

Transportlaget tar de veldig grunnleggende tjenestene tilgjengelig på nettverkslaget og forvandler dem til noe som med verdighet kan kalles kommunikasjon. Dette gjøres ved å tilby virtuelle kommunikasjonskanaler for overføring av data mellom to systemer. Feil som har oppstått mellom de to endepunktene rettes opp og det utføres flytkontroll. Transportlaget sørger for at data blir fullstendig overført, altså at det ikke bare er bruddstykker som kommer frem.

Det er veldig mange grunnleggende tjenester som kan tilbys på dette laget. Ingen av dem er obligatoriske, ettersom ikke alle applikasjoner ønsker dem alle. Noen kan være unødvendige eller rett og slett være til hinder.

* *Forbindelsesorientering.* Det er vanligvis enklere å forholde seg til en forbindelsesorientert løsning enn en forbindelsesløs. Der nettverkslaget kun tilbyr forbindelsesløse tjenester, blir en forbindelsesorientert tjeneste basert på disse ofte implementert på transportlaget.
* *Samme rekkefølge ved levering.* Nettverkslaget garanterer vanligvis ikke at datapakkene vil ankomme i samme rekkefølge som de ble sendt, men ettersom dette ofte er ønskelig sørger transportlaget for dette. Den enkleste måten å gjøre dette på er ved å nummerere hver enkelt pakke slik at mottakeren kan sortere dem i riktig rekkefølge.
* *Feilfrie data.* Det underliggende nettverket kan være fullt av støy som gjør at de mottatte data ikke alltid er det samme som de data som ble sendt. Transportlaget kan fikse dette, vanligvis med en ved å tilby en sjekksum på dataene som oppdager om det har skjedd en glipp. Å få til helt feilfrie data er umulig i praksis, men det er mulig å redusere antall uoppdagede feil betraktelig. Laget kan også sende pakker på nytt hvis de har forsvunnet underveis.
* *Flytkontroll.* Mengden minne i en datamaskin er begrenset, så uten flytkontroll kan en kraftigere datamaskin oversvømme en annen maskin med så mye informasjon at den ikke kan skuffe unna alt. Dette er ikke noe stort problem nå til dags, ettersom minne er billig og båndbredde relativt dyrt, men før var det mye viktigere. Flytkontroll gir mottakere muligheten til å be senderen bremse ned litt. Noen ganger er dette allerede ordnet av selve nettverket, men hvis det ikke er det kan transportlaget ta seg av det.
* *Byteorienterering.* For å slippe å ta seg av ting pakke-for-pakke kan transportlaget tilby muligheten til å se på kommunikasjonen som en strøm av bytes. Dette er vanligvis bedre å jobbe med.
* *Porter.* Porter er en grunnleggende måte å adressere flere entiteter på samme sted. Den første linjen i en postadresse kan for eksempel ses på som en form for port ettersom den skiller mellom de forskjellige beboerne i det samme huset. Hvert dataprogram vil lytte etter informasjon på sine egne porter, og det er derfor man kan kjøre flere nettverksrelaterte applikasjoner samtidig.

På Internett er det flere forskjellige transporttjenester, men de to mest vanlige er TCP og UDP. TCP (Transmission Control Protocol) er den mest kompliserte. Den tilbyr forbindelses- og byteorienterte strømmer som er nesten feilfrie, og har flytkontroll, et utvalg porter å velge mellom og garanti for at pakkene leveres i samme rekkefølge. UDP (User Datagram Protocol) er mye enklere, er forbindelsesløs, og tilbyr begrenset feilreduksjon og et utvalg porter.

Noen ting, slik som forbindelsesorientering, kan implementeres på enten transport- eller nettverkslaget. Tanken er at nettverkslaget implementerer det som er enklest. På noen underliggende nettverk er enklere å implementere forbindelsesløs kommunikasjon, mens det på andre er enklere å implementere forbindelsesorientert kommunikasjon. Transportlaget benytter seg så av det som er tilgjengelig til å implementere det som faktisk er ønskelig.

## Eksempler
* AEP
* AppleTalk Transaction Protocol (ATP)
* NBP
* NetBEUI
* NTP
* RTMP
* SMB
* SPX
* TCP
* UDP
* SCTP
* RTP