## TCP-protocol

Het TCP-protocol (Tansmission Control Protocol) biedt, op bases van het IP-protocol, betrouwbare verbindingen aan, in de vorm van bytestromen in beide richtingen.
Dit protocol vormt de basis voor veel van de toepassingen op het internet, bijvoorbeeld e-mail en het web.
Hoe kun je op basis van een best-effort pakketcommunicatie betrouwbare bytestroom-verbindingen realiseren?
Deze vraag is een voorbeeld van een probleem dat veel vaker in de informatica voorkomt: hoe kun je op basis van onbetrouwbare onderdelen, een betrouwbaar systeem maken?
Bij het realiseren van een betrouwbare bytestroom-verbinding hebben we te maken met verschillende deelproblemen, die door verschillende onderdelen van het protocol opgelost worden.

Deelprobleem | Onderdeel van het protocol
Betrouwbaar transport van pakketten | Checksum, ontvangstbevestiging, time-out, hertransmissie
Van bytestroom naar pakketten v.v. | Genummerde segmenten
Efficiënt gebruik van het transportkanaal | Sliding window protocol
Opzetten van een verbinding | 3-way handshake

We zullen deze verschillende deelproblemen en de manier waarop deze in TCP opgelost worden kort bespreken.
Voor een uitgebreidere bespreking verwijzen we naar het achtergrondmateriaal.
De computers in de eindpunten die het TCP-protocol uitvoeren, moeten de toestand hiervan bijhouden.
Naast de complexiteit die dit met zich meebrengt, moeten ook de nodige middelen hiervoor gereserveerd worden, bijvoorbeeld voor bufferruimte.
Als een TCP-verbinding niet volgens de regels afgesloten wordt, moet voorkomen worden dat deze middelen gereserveerd blijven, want dat vereist weer de nodige extra administratie en activiteiten.