Inhaltsverzeichnis

Das Transmission Control Protocol (TCP) ist ein verbindungsorientiertes Protokoll in Layer 4 (Transportschicht) des OSI Modell. TCP basiert auf IP. Verbindungsorientiert bedeutet das auf gesendete Pakete immer Antwort Pakete zurück kommen die den Empfang bestätigen.

UDP ist das verbindungslose Pendant.

SYN Cookies wurden gegen SYN-Flooding Attacken entwickelt.

Anwendungen übergeben ihren Datenstrom an den TCP/IP-Stack und nehmen ihn von dort auch wieder entgegen. Mit der für die Übertragung nötige TCP-Paketstruktur sowie die Parameter der ausgehandelten Verbindung haben die Anwendungen nichts zu tun.

3 Way Handshake

Der TCP-Verbindungsaufbau erfolgt in einem sogenannten „Three-Way Handshake“. Der Client sendet eine SYN-Anforderung (Synchronize) an den Server. Der Server antwortet mit einem SYN-ACK (Synchronize-Acknowledgment). Schließlich sendet der Client eine ACK-Antwort (Acknowledgment) an den Server. Dadurch wird eine zuverlässige Verbindung zwischen Client und Server hergestellt.

Segmentierung

Die Daten, die über TCP übertragen werden sollen, werden in kleinere Einheiten namens Segmente aufgeteilt. Jedes Segment enthält eine Sequenznummer, die die Reihenfolge der Segmente festlegt.

Zuverlässige Übertragung

TCP gewährleistet die zuverlässige Übertragung der Segmente durch verschiedene Mechanismen:

Flusskontrolle

TCP verfügt über Mechanismen zur Flusskontrolle, um sicherzustellen, dass der Sender nicht zu viele Daten auf einmal an den Empfänger sendet. Der Empfänger gibt über sogenannte Fensteranzeigen (Window) an, wie viele Daten er empfangen kann. Der Sender passt dann die Datenübertragung entsprechend an.

Zuverlässige Zustellung

TCP stellt sicher, dass alle Datenpakete in der richtigen Reihenfolge und ohne Fehler beim Empfänger ankommen. Dazu werden Prüfsummen verwendet, um die Integrität der Daten zu überprüfen.

TCP Fast Open

Aktuell wird an TCP Fast Open, einer TCP Erweiterung gearbeitet die nicht mehr auf SYN - ACK - SYNACK basiert sondern sozusagen alles in einem Schritt erledigt was die Reaktionszeit von Webservices signifikant verbessern wird. Siehe https://www.youtube.com/watch?v=cdb7M37o9sU