Was ist TCP (Transmission Control Protocol)?
Verbindungsorientiertes Protokoll der Transportschicht. Es baut eine Verbindung mit einem Drei-Wege-Handschlag auf und liefert Daten mithilfe von Sequenznummern, Bestätigungen (ACKs) und Sendewiederholung lückenlos, ohne Duplikate und in der gesendeten Reihenfolge aus. Flusskontrolle und Überlastkontrolle passen die Sendemenge an. Es trägt Webzugriffe über HTTP/1.1 und HTTP/2, E-Mail, SSH und vieles mehr.
Japanische Bezeichnung: TCP
„TCP (Transmission Control Protocol)“ kommt in 21 Übungsfragen aus 3 Themen vor, z. B. Grundlagen der Computernetzwerke, Netzwerkdesign und Netzwerkbetrieb, Grundlagen der Webtechnologien.
Fachgebiet: Grundlagen der Computernetzwerke
Wie TCP die Zustellung sicherstellt
TCP versieht jedes gesendete Byte mit einer fortlaufenden Nummer, der Sequenznummer. Der Empfänger sendet eine Bestätigung (ACK) zurück, die sinngemäß besagt: Schicke als Nächstes die Daten ab dieser Nummer. Kommt innerhalb einer festgelegten Zeit kein ACK an, sendet der Sender die Daten erneut (Retransmission Timeout). Erhält er drei ACKs mit derselben Nummer (doppelte ACKs), wiederholt er die Daten, ohne auf den Timeout zu warten (Fast Retransmit). Der Empfänger bringt ungeordnet eingetroffene Daten wieder in die richtige Reihenfolge, verwirft Duplikate und erkennt beschädigte Daten mit einer Prüfsumme. Für die Anwendung sehen die Daten wie ein durchgehender Bytestrom ohne Nachrichtengrenzen aus.
Header und Verbindungsverwaltung
Ein TCP-Header ist ohne Optionen 20 Byte lang. Er enthält die Portnummer von Quelle und Ziel, die Sequenznummer, die Bestätigungsnummer, Flags wie SYN, ACK, FIN und RST, die Fenstergröße und eine Prüfsumme. Eine Verbindung wird durch vier Werte identifiziert: Quell- und Ziel-IP-Adresse sowie Quell- und Zielport. Sie beginnt mit einem Drei-Wege-Handschlag und wird geschlossen, indem jede Richtung ein FIN sendet. Geht ein Segment verloren, können spätere Daten nicht an die Anwendung übergeben werden, auch wenn sie bereits angekommen sind (Head-of-Line-Blocking); das ist ein Grund, weshalb HTTP/3 stattdessen QUIC über UDP verwendet.
Häufige Fragen
Was ist der Unterschied zwischen TCP und UDP?
TCP baut eine Verbindung auf und liefert Daten zuverlässig mit Bestätigungen, Sendewiederholung und Reihenfolgesicherung. UDP kennt keinen Verbindungsaufbau und keine Sendewiederholung und verschickt einfach Datagramme, daher ist der Header kleiner und die Verzögerung geringer. TCP wird eingesetzt, wo Vollständigkeit zählt, etwa im Web und bei Dateiübertragungen; UDP dort, wo geringe Verzögerung wichtiger ist als ein gelegentlicher Verlust, etwa bei Sprachanrufen, und für kurze Abfragen wie bei DNS.
Wann wiederholt TCP eine Übertragung?
Es gibt zwei Auslöser: Bis zum Ablauf des aus gemessenen RTTs berechneten Retransmission Timeout kommt kein ACK an, oder es treffen drei doppelte ACKs mit derselben Bestätigungsnummer hintereinander ein, was einen Fast Retransmit auslöst. Scheitern weitere Wiederholungen, wird der Timeout jedes Mal verdoppelt.
Warum ist der TCP-Durchsatz geringer als die Leitungsgeschwindigkeit?
Pro Umlaufzeit kann höchstens ein Fenster an Daten gesendet werden, daher sinkt der Durchsatz, je weiter die Gegenstelle entfernt oder je kleiner das Fenster ist. Er sinkt auch, wenn die Überlastkontrolle nach Paketverlusten das Fenster verkleinert oder die empfangende Anwendung die Daten langsam liest.