Transmission Control Protocol

Den **Transmission Control Protocol** (kuerz: **TCP**) ass en zouverlässegen, kommunikatiounsorientéierten Transportprotokoll an de Computernetzwierker. En ass en Deel vun der TCP/IP-Protokoll-Famill.

Den TCP gouf vum Robert E. Kahn a vum Vinton G. Cerf entwéckelt. D'Fuerschungszäit, déi am Joer 1973 ugefaangen huet, huet sech iwwer e puer Joer erstréckt. Déi éischt Standardiséierung vum TCP war dofir eréischt am Joer 1981. RFC793.

TCP ass e virtuelle Kanal tëscht zwéi Rechner (méi genee: d'Endpunkten (Sockets) vun zwou Uwennungen op dëse Computeren). Op deem Kanal kënnen a béid Richtungen Daten iwwerdroe ginn. TCP baut an de meeschte Fäll op den IP-Protokoll op. Et fënnt een den TCP an der drëtter Schicht vum TCP/IP-Referenzmodell (véiert Schicht am OSI-Referenzmodell).

## Verbindungsop- an ofbau
En Endpunkt stellt en Tupel duer, deen aus enger IP-Adress an aus engem Port besteet.
Ports sinn 16-bit Zuelen a reeche vun 1 bis 65535. Port-Nummeren ënner
1024 si reservéiert (englesch: *well known ports* http://www.iana.org/assignments/port-numbers) a gi vun der
IANA verginn, z.&nbsp;B. ass de Port 25 fir de SMTP-Protokoll, dee fir d'Sende vun elektronescher Post verantwortlech ass, reservéiert. Allerdéngs ass d'Benotze vun de Ports trotzdeem net bannent (d.&nbsp;h. net obligatoresch). Sou kann all Administrateur vun z.&nbsp;B. engem FTP-Server (normalerweis Port 21) de Service och op engem anere Port lafe loossen.

All TCP-Verbindung gëtt eendeiteg duerch zwéin Endpunkten definéiert. Sou ass et z.&nbsp;B. méiglech datt e Webserver op engem Port méi wéi eng Verbindung zu engem anere Rechner kann op hunn.

E Server, deen en Déngscht wéi beispillsweis elektronesch Post ubitt, generéiert en Endpunkt mam Port a senger Adress (e kann och belibeg Adressen zouloossen). Dëst gëtt als *passive open* bezeechent.

Well e Client eng Verbindung opbaut, generéiert hien en eegenen Endpunkt aus senger Rechneradress an enger nach fräier Portnummer. Mat Hëllef vun engem him bekanntem Port an der Adress vum Server kann dann eng Verbindung opgebaut ginn.

Wärend der Datenübertragungsphase (*active open*) sinn d'Rollen vum Client a Server (aus **TCP**-Siicht) vollkomme symmetresch. Och ka jiddwere vun den zwéi Rechner e Verbindungsofbau aleeden. Wärend dem Ofbau kann d'Géigesäit nach Daten iwwerdroen, d'Verbindung kann also *hallef*-op sinn.

### Den Three-Way-Handshake

Beim Op- an Ofbau vun enger TCP-Verbindung kënnt de sougenannte Three-Way-Handshake zum Asaz. De Rechner, deen d'Verbindung initiéiere wëll, sent dem aneren e SYN-Pak mat enger Sequenznummer x. Et handelt sech also ëm e Pak, deem seng SYN-Bit am Pakkapp gesat ass (kuck. TCP-Header). D'initial Sequenznummer ass belibeg a vum jeeweilege Betribssystem festgeluecht.

De Server empfängt de Pak a sent an engem eegenem SYN-Pak am Géigenzuch seng initial Sequenznummer y, gläichzäiteg bestätegt en och datt en déi éischt SYN-Päck erhalen huet, andeems en d'Sequenznummer inkrementéiert an x+1 am ACK-Deel vum Header zeréckschéckt.

De Client bestätegt als lescht den Erhalt vum SYN/ACK-Pak duerch d'Sende vun engem eegenen ACK-Pak mat der Sequenznummer x+1 an dem ACK-Wäert y+1. D'Verbindung ass sou opgebaut.

De gereegelte Verbindungsofbau erfollegt änlech. Amplaz vun engem SYN-Bit kennt de FIN-Bit zum Asaz. Den Erhalt vum Pak gëtt dann alt erëm vum ACK bestätegt. Den Empfänger vum FIN-Pak sent schlussendlech och ee FIN-Pak, deen him dann och erëm bestätegt gëtt.

Obwuel eigentlech véier Weeër benotzt ginn, handelt et sech beim Verbindungsopbau awer ëm e Three-Way-Handshake, well d'ACK- a FIN-Operatione vum Server zum Client als ee Wee gewäert ginn. Zudeem ass eng verkierzt Method méiglech, bei deem FIN an ACK genee wéi beim Verbindungsopbau am selwechte Pak sinn.

## TCP-Header

Kuck TCP-Header

## Datenintegritéit an Zouverlässegkeet

Am Géigesaz zum verbannungslosem UDP, implementéiert **TCP** e bidirektionelen, byte-orientéierten, zouverlässegen Datestroum tëscht zwéin Endpunkten. Den IP-Protokoll deen am ISO/OSI-Referenzmodell drënner läit, ass pakorientéiert, woubäi d'Datepäck verluer kënne goen, a verkéierter Reiefolleg ukommen däerfen a souguer duebel kënnen empfaange ginn. TCP gouf entwéckelt, fir mat der Onsécherheet vun de Protokoller déi drënner leien, ëmzegoen. Et préift dowéinst d'Integritéit vun den Date mat Hëllef vun der Préifzomm am Pakkapp a stellt d'Reiefolleg duerch d'Sequenznummeren sécher. De Sender widderhëlt d'Sende vun de Päck, falls keng Bestätegung bannent enger bestëmmter Zäitspan (Timeout) antrefft. D'Date vun de Päck gi beim Empfänger an engem Puffer an déi richteg Reiefolleg zu engem Datestroum zesummegefügt an déi duebel Päck gi verworf.

Ze beuechten ass och, datt de Sender mëttels TCP leedeglech zouverlässeg erausfanne kann, ob den Empfang vun den Date vum Empfänger korrekt quittéiert ginn ass oder net.

Den Datentransfer ka selbstverständlech zu all Moment nom "Opbau vun enger Verbindung" gestéiert, verzögert oder ganz ënnerbrach ginn. D'Iwwerdoungssystem leeft dann an engem Timeout. Den duerchgefouerte "Verbindungsopbau" stellt also keng Garantie fir eng nofollgend sécher Iwwerdroung duer.
## Um Spaweck