Das TCP (Transmission Control Protocol) ist Teil der Protokollfamilie TCP/IP. Das TCP ist ein verbindungsorientiertes Protokoll, welches das Ziel hat, Datenverluste zu verhindern. Dateien und Datenströme werden aufgeteilt und die Datenpakete der zugehörigen Anwendung zugeordnet. Es wird auch der 4. Schicht des Osi-Schichtenmodell zugeordnet, die Transport-Schicht.
Schicht | Dienste / Protokolle / Anwendungen | ||||
Anwendung |
|
||||
Transport | TCP | ||||
Internet | IP (IPv4, IPv6) | ||||
Netzzugang | Ethernet... |
Für Anwendungen sind TCP-Pakete transparent. Das bedeutet, dass die Anwendungen ihren Datenstrom an den TCP/IP-Stack weitergeben und ihn ebenfalls von dort nehmen. Mit der TCP-Paketstruktur oder Parametern der Verbindung haben die Anwendungen rein gar nichts zu tun, dies geschieht einzig und alleine vom TCP selber.
Eine der Aufgaben des TCP ist es, den Datenstrom in Pakete und Segmente einzuteilen und diesen wiederum beim Empfänger zusammenzusetzten. Dafür werden alle Segmente mit einem Header versehen. In diesem stehen alle wichtigen Informationen, die der Empfänger benötigt. Im Anschluss werden die Segmente an das IP (Internet Protocol) übergeben.
Das diese verschiedene Routen gehen können, kann es zu zeitlichen Verzögerungen kommen. Das hat zur Folge, dass Pakete in einer anderen Reihenfolge beim Empfänger ankommen, als wie sie losgeschickt wurden. Deshalb setzt das TCP die Segmente wieder in der richtigen Reihenfolge zusammen und übergibt sie dann erst der Anwendung. Dafür wird in jedem TCP-Paket eine Sequenznummer vergeben.
Da das TCP ein verbindungsorientiertes Protokoll ist, ist es für den Verbindungsauf- und Verbindungsabbau verantwortlich. Der Sender und der Empfänger stehen jederzeit im Kontakt.
Durch den ständigen Austausch von Kontrollmeldungen zwischen Sender und Empfänger stehen die beiden ununterbrochen in Kontakt. Der Empfänger bestätigt dem Sender jedes empfangene Paket. Wenn dies mal nicht passieren sollte, also der Sender keine Empfangsbestätigung bekommen sollte, sendet dieser es einfach nochmal erneut los. Teilweise kann es bei Übertragungsproblemen zu Verlusten oder doppelter Datenpakete kommen, damit diese wieder zusammengeführt werden können, benutzt das TCP eine Sequenznummer, wo jedes TCP-Paket eine eindeutige Nummer hat. Dies ermöglicht es die TCP-Pakete wieder in der richtigen Reihenfolge zusammen zu setzten.
Das TCP hat keine feste zeitliche Zuordnung und ebenfalls über keine Kenntnis den Übertragungsweg geschweige denn über das Übertragungssystem, oder die Bandbreite. Deshalb lastet es diese Übertragungsstrecken dynamisch schnell oder langsam aus und reagiert auf unerwartete Verzögerungen oder Engpässe.
Die Ports von TCP und UDP sind eine Abstraktion von Software, um diese beiden Protokolle zu unterscheiden. Sie adressieren Ports, um der Anwendung dahinter eine Aufgabe zu erteilen.
Quell-Port | Ziel-Port | ||||||||
Sequenznummer | |||||||||
Acknowledgment-Nummer | |||||||||
|
|||||||||
Optionen/Füllbits | |||||||||
Daten |
Jedem TCP-Paket wird auch ein TCP-Header vorrangestellt, der die folgenden wichtigen Daten enthält:
Ein TCP-Paket setzt sich also aus dem Header-Bereich und den Daten-Bereich zusammen. Im Header findet der Sender oder Empfänger alle wichtigen Daten, die für eine gesicherte TCP-Verbindungen nötig sind. Der TCP-Header ist in mehrere 32-Bit-Blöcke aufgeteilt und hat mindestens 5 solcher Header. Ein TCP-Header hat also mindestens eine Größe von 20 Byte