Transmission Controll Protocol (TCP) er en sikker kommunikasjonsprotokoll i transportslaget i OSI modellen. TCP brukes til å sende datapakker mellom to kjørende prosesser, på to forskjellige datamaskiner, på internett.
TCP er beskrevet i RFC 793 dokumentet.
TCP er en protokoll som utveksler data i en klient-tjener prosedyre, hvor serveren venter på en kobling til en spesifikk socket fra klienten som initierer koblingen. TCP garanterer å overføre alle pakkene i riktig rekkefølge uten duplikater. Det medførerer at det må settes bufferplass til å sende større datapakker til og fra applikasjonslaget.
For å etablere en forbindelse mellom to vertsdatamaskiner brukes det en prosedyre som heter «treveis håndtrykk».
Etablering av forbindelse:
Etter å ha mottatt pakken fra klienten er satter tjeneren SYN-RECEIVED modus. Hvis tjeneren vil koble seg til klienten svarer den tilbake med SYN-flagget for å etablere en forbindelse. ISN-flagget er satt til f.eks. 300, mens ACK-flagget er satt til klientens ISN verdi + 1 for å vise at pakken fra klienten er mottatt ok (dvs. ISN = 101).
Etter å ha mottatt SYN og ACK segmenter fra tjeneren, settes klienten til ESTABLISHED modus og sender ACK-flagget med verdi 301 tilbake til tjeneren.
Etter å ha mottatt ACK segmentet settes tjeneren til ESTABLISHED modus.
Klineten kan nå sende data til tjeneren.

Treveis håndtrykk
For å avslutte en forbindelse brukes det en «fireveis håndtrykk». Både klienten og tjeneren kan initiere «fireveis håndtrykk».
Avslutning av en forbindelse:
Initiatoren sender FIN (finish) flagget til motparten. Setter seg til FIN-WAIT-1 modus.
Etter at mottakeren mottar FIN-flagget, settes den i CLOSE-WAIT modus og sender ACK og FIN segmenter til initiatoren. Etter det er mottakeren satt til LAST-ACK modus.
Initiatoren etter å ha mottat ACK-flagget fra mottakeren setter seg til FIN-WAIT-2 modus, mens etter å ha fått FIN-flagget setter seg til TIME-WAIT modus og sender ACK-flagget til mottakeren. Initiatoren venter en viss stund før den avlsutter forbindelsen. I denne ventetiden er lokale porter utilgjengelige for nye forbindelser.
Etter å ha fått ACK-flagget avslutter mottakeren forbindelsen.

https://tools.ietf.org/html/rfc793 (Hentet: 27. februar 2017)
Hallsteinsen, Ø. , Klefstad, B. og Skundberg, O. (2015) Innføring i datakommunikasjon. 2. utg. Gyldendal Akademisk og Stiftelsen TISIP, s. 70-80.