• Blog
  • Was ist TCP und wie funktioniert TCP?

Was ist TCP und wie funktioniert TCP?

Okt 19, 2023

Was ist das TCP-Protokoll?

TCP wird für die Kommunikation zwischen Geräten im Netzwerk verwendet. Es steht für Transmission Control Protocol. Es wird verwendet, um eine Verbindung zwischen dem Client und dem Server herzustellen. Es funktioniert, indem die Daten in kleine Pakete aufgeteilt werden, die über Netzwerkaktivitäten übertragen werden können.

Die Verbindungskontrolle von TCP umfasst drei Handshakes und vier Wellen.

Das Segment ist eine Navigationsrouting-Funktion für das gesamte TCP/IP-Protokoll. Das Paketsegment bezieht sich auf die IP-Datenpakete in der Netzwerkübertragung des TCP/IP-Protokolls, die die Routennavigation verwenden, jeden Netzwerksegmentpfad abfragen, IP-Adresse, Austauschprotokoll usw.

  • SYN: Synchronisiere Sequenznummern
  • ACK: Bestätigungsfeld signifikant
  • Seq: Sequenznummer
  • Bestätigung: Bestätigungsnummer

Drei-Wege-Handshake-Prozess

Händedruck

Eine der wesentlichen Eigenschaften von TCP ist die verbindungsorientierte Kommunikation. Daher müssen beide Parteien vor dem Senden von Daten einen Handshake durchführen, um sicherzustellen, dass die gesamte Datenübertragung fehlerfrei ist, bevor die Verbindung erfolgreich hergestellt werden kann.

Der erste Handschlag

Der Client sendet Segment 1 an den Server, wobei das SYN-Flag darauf hinweist, dass es sich um ein Segment zur Anforderung einer Verbindung handelt. Darüber hinaus ist das Feld für die Sequenznummer (in der Abbildung als seq abgekürzt) auf die Anfangssequenznummer x (Initial Sequence Number, ISN) eingestellt, und beide Parteien in der TCP-Verbindung können die Anfangssequenznummer zufällig auswählen.

Nachdem Segment 1 gesendet wurde, tritt der Client in den SYN-SENT-Zustand ein und wartet auf Bestätigung vom Server.

Der zweite Handschlag

Nach Erhalt der Verbindungsanfrage vom Client sendet der Server Segment 2 als Antwort an den Client.

Das ACK-Flag ist auf 1 gesetzt, was darauf hinweist, dass es auf den Client antwortet, und sein Bestätigungsnummernfeld (Acknowledgment Number, abgekürzt als kleines ack) wird wirksam.

Der Wert dieses Feldes ist x + 1, was die Sequenznummer des vom Client empfangenen Segments plus eins ist, was die Sequenznummer der Daten darstellt, die der Server beim nächsten Mal vom Client empfangen möchte.

Zusätzlich ist die SYN-Flagge des Segments 2 ebenfalls auf 1 gesetzt, was bedeutet, dass es sich auch um ein Segment handelt, das zur Initiierung einer Verbindung verwendet wird, und die Sequenznummer seq ist auf die Anfangssequenznummer y des Servers gesetzt.

Nachdem Segment 2 gesendet wurde, wechselt der Server in den SYN-RECEIVED Zustand.

Der dritte Handschlag

Nach Erhalt von Segment 2 sendet der Client Segment 3 an den Server, und sein ACK-Flag ist 1, was bedeutet, dass es dem Server antwortet und bestätigt, dass das Sequenznummernfeld ack y + 1 ist und das Sequenznummernfeld seq x + 1 ist. Nachdem dieses Segment gesendet wurde, befinden sich beide Parteien im STATUS HERGESTELLT, was bedeutet, dass die Verbindung hergestellt wurde.

the third handshake

Beurteilen Sie den Verbindungsstatus anhand des Anzeigestatus des Clients und Servers.

  • Der Client und der Server befinden sich im geschlossenen Zustand, was auf keine Verbindung hinweist.
  • Der Client sendet eine Anfrage, der Client öffnet den Sendevorgang (SYN-sent) und der Server öffnet den Empfangsvorgang (Listen);
  • Wenn der Server die Anfrage des Clients erhält, wechselt der Server in den Antwort (SYN-empfangen) Zustand.
  • Wenn der Client die Antwort vom Server erhält, wechselt der Client in den stabilen Verbindungszustand (Estab-lished) und sendet gleichzeitig das zweite Datenpaket.
  • Wenn der Server die zweiten Daten vom Client empfängt, wechselt der Server in einen stabilen Verbindungszustand (Estab-lished).
  • Nachdem die beiden Parteien eine stabile Verbindung hergestellt haben, ist es Zeit, mit der regelmäßigen Datenkommunikation zu beginnen.

Wie funktionieren die drei Handshakes?

Der dreifache Handshake ermöglicht es beiden Parteien, die Sendefähigkeiten und Empfangsfähigkeiten sowohl ihrer selbst als auch der anderen Partei als Prozess zu bestätigen.

Der erste Handschlag: Der Client sendet das Anforderungssegment, und es kann nichts bestätigt werden, während der Server sicherstellen kann, dass seine Empfangsfähigkeit und die Übertragungsfähigkeit der anderen Partei standardmäßig sind.

Der zweite Handschlag: Der Client kann bestätigen, dass seine Sende- und Empfangsfähigkeiten standardmäßig sind und die Sende- und Empfangsfähigkeiten der anderen Partei ebenfalls standardmäßig sind.

Der dritte Handschlag: Der Server kann bestätigen, dass seine Sende- und Empfangsfähigkeiten standardmäßig sind und die Sende- und Empfangsfähigkeiten der anderen Partei ebenfalls standardmäßig sind.

Der dreifache Handshake ermöglicht es beiden Parteien, zu bestätigen, dass die Sende- und Empfangsfähigkeiten sowohl von ihnen selbst als auch von der anderen Partei den Standards entsprechen, damit sie kommunizieren können.

Wie funktionieren die vier Wellen?

Das Herstellen einer Verbindung erfordert drei Handshakes, und das Beenden einer Verbindung erfordert vier Wellen.

Der detaillierte Prozess des viermaligen Winkens

1. Der Client sendet ein Verbindungsabschlusssegment, in dem er darum bittet, die Verbindung zu schließen und keine Daten mehr zu senden. Anschließend wird das Sequenznummernfeld seq = x gesetzt (gleich der Sequenznummer des letzten Bytes aller zuvor gesendeten Daten plus eins). Danach wechselt der Client in den FIN-WAIT-1-Zustand und wartet auf eine Bestätigungsnachricht vom Server.

2. Der Server empfängt das FIN-Segment, sendet eine Bestätigungsnachricht zurück, ACK = 1, ack = x + 1, und setzt seine Sequenznummer seq = y. Anschließend wechselt der Server in den CLOSE-WAIT-Zustand.

3. Der Client tritt unmittelbar nach Erhalt des ACK-Segments vom Server in den FIN-WARTEN-2-Zustand ein und kann weiterhin Daten seq=z vom Server empfangen, bis das FIN-Segment empfangen wird.

4. Dann sendet der Server alle Daten, er sendet ein FIN-Segment an den Client und der Server wechselt in den LAST-ACK-Zustand und wartet auf ein Bestätigungssegment vom Client.

5. Nachdem der Client das FIN-Segment vom Server erhalten hat, sendet er eine ACK-Nachricht an den Server und wechselt dann in den TIME-WAIT-Zustand.

6. Der Server wechselt unmittelbar nach Erhalt der ACK-Nachricht vom Client in den GESCHLOSSENEN Zustand und beendet zu diesem Zeitpunkt die Verbindung. Im Allgemeinen wechselt der Server früher in den GESCHLOSSENEN Zustand als der Client, da keine Wartezeit besteht.

four waves

Kurz gesagt, ob es sich um einen 3-Wege-Handshake oder eine 4-Wege-Welle handelt, das TCP-Protokoll muss von beiden Parteien eine Bestätigung der Informationen erhalten, um die Verbindung herzustellen oder zu trennen.

Warum schließt TCP die Verbindung viermal anstatt dreimal?

Nach Erhalt des FIN-Paketsegments vom Client kann der Server noch einige Daten zum Übertragen haben. Daher kann der Server die Verbindung nicht sofort schließen. Stattdessen antwortet er mit einem ACK-Paketsegment und kann weiterhin Daten senden.

Der Client antwortet nicht, bis der Server ein FIN-Paketsegment an den Client sendet, das anzeigt, dass alle Daten gesendet wurden. Der Server fordert das Schließen der Verbindung an. Daher sind insgesamt vier Wellen erforderlich.

Welche Sicherheitsprobleme treten während der TCP-Verbindung auf?

Im dreistufigen Handshake-Prozess wird die TCP-Verbindung nach dem Senden von SYN-ACK durch den Server als halboffene Verbindung bezeichnet, bevor der ACK vom Client empfangen wird. Zu diesem Zeitpunkt befindet sich der Server im Zustand SYN_RCVD. Wenn ein ACK empfangen wird, kann der Server in den Zustand ESTABLISHED wechseln.

SYN-Angriff bedeutet, dass der angreifende Client in kurzer Zeit eine große Anzahl nicht existierender IP-Adressen fälscht, kontinuierlich SYN-Pakete an den Server sendet und der Server mit einem Bestätigungspaket antwortet und auf die Bestätigung des Clients wartet.

Da die Quelladresse nicht existiert, muss der Server kontinuierlich erneut übertragen, bis er abläuft. Als Folge davon werden diese gefälschten SYN-Pakete die nicht verbundene Warteschlange lange Zeit belegen und reguläre SYN-Anfragen werden verworfen.

In schweren Fällen kann dies zu Netzwerküberlastung oder sogar Systemabstürzen führen. Ein SYN-Angriff ist ein typischer DoS/DDoS-Angriff. Klicken Sie hier, um mehr über DoS/DDoS -Angriffe zu erfahren.