Heim >Betrieb und Instandhaltung >Sicherheit >Beispielanalyse eines TCP-Drei-Wege-Handshakes zum Aufbau einer Verbindung und einer Vier-Wege-Welle zum Unterbrechen der Verbindung
Schritt für Schritt.
Lassen Sie uns zunächst kurz das TCP-Protokoll vorstellen.
TCP (Transmission Control Protocol) ist ein verbindungsorientiertes, zuverlässiges, Bytestrom-basiertes Transportschichtprotokoll. Es ist kompliziert, aber es handelt sich um eine grundlegende Fähigkeit, die sowohl Programmierer als auch Betriebs- und Wartungspersonal beherrschen müssen.
Objektorientiert – Die beiden Parteien müssen vor der Kommunikation eine Verbindung herstellen. Dies ist wie ein Telefonanruf im wirklichen Leben. Bevor eine Kommunikation stattfinden kann, muss die Telefonnummer gewählt werden.
Zuverlässig – Es gibt viele Regeln im TCP-Protokoll, um die Zuverlässigkeit von Kommunikationsverbindungen sicherzustellen, einschließlich der Trennung von Anwendungsdaten, des Neuübertragungsmechanismus, der Header- und Datenüberprüfung, der Sortierung empfangener Daten und deren anschließender Übergabe an die Anwendungsschicht, den Empfänger end verwirft doppelte Daten und kann eine Flusskontrolle durchführen.
TCP-Daten werden in einem IP-Datagramm mit dem folgenden Format gekapselt:
Enthält: Portnummer [16 Bit], Sequenznummer [32 Bit], Offset [4 Bit], Reserviert [6 Bit], Flag [6 Bit], Fenster Größe (Fenster) [16 Bit], Prüfsumme [16 Bit], Notfallzeiger [16 Bit], TCP-Optionen
Hier zu beachtende Dinge:
TCP-Pakete haben keine IP-Adressen, sie befinden sich auf der IP-Ebene, aber die Quellport und Zielport.
Eine TCP-Verbindung erfordert vier Tupel, um dieselbe Verbindung darzustellen (src_ip, src_port, dst_ip, dst_port). Um genau zu sein, handelt es sich um ein Fünf-Tupel, und eines ist das Protokoll. Da es sich hier aber nur um das TCP-Protokoll handelt, spreche ich hier nur von Quadrupeln.
Sequenznummer ist die Sequenznummer des Pakets. wird verwendet, um das Problem der Neuordnung von Netzwerkpaketen zu lösen.
Bestätigungsnummer ist ACK – wird verwendet, um den Empfang zu bestätigen, wird verwendet, um das Problem zu lösen, keine Pakete zu verlieren.
Fenster wird auch Advertised-Window genannt, was auch das berühmte Schiebefenster (Sliding Window) ist, zur Lösung der Flusskontrolle.
TCP Flag, das den Pakettyp angibt, wird hauptsächlich zur Steuerung der TCP-Zustandsmaschine verwendet.
URG: Der Notfallzeiger ist gültig.
ACK: Bestätigen Sie, dass die Sequenznummer gültig ist.
PSH: Der Empfänger sollte dieses Segment so schnell wie möglich an die Anwendungsschicht übergeben. RST: Stellen Sie die Verbindung wieder her. SYN: Synchronisierung Sequenznummer, die zum Initiieren einer Verbindung verwendet wird
FIN: Der Absender schließt die Sendeaufgabe ab (schließt aktiv)
Drei-Wege-Handshake zum Herstellen der Verbindung
2. Der Server bestätigt das Client-Nachrichtensegment und setzt die Bestätigungssequenznummer auf ACK=x+1. Gleichzeitig fordert es auch eine Verbindung zum Client an, sendet SYN=1 und sendet die anfängliche Sequenznummer unter der Annahme, dass seq=y ist.
3. Der Client bestätigt das Server-Nachrichtensegment, sendet die Bestätigungssequenznummer und stimmt dem Aufbau einer Verbindung mit dem Server ACK=y+1 zu.
Diese drei Nachrichtensegmente schließen den Verbindungsaufbau ab. Dieser Vorgang wird auch Drei-Wege-Handshake genannt. Viermaliges Winken, um die Verbindung zu trennen. 1. Host 1 (kann ein Client oder ein Server sein), legt die Sequenznummer und die Bestätigungsnummer fest und sendet die Nachricht an Host 2 Senden Sie ein FIN-Segment. Zu diesem Zeitpunkt wechselt Host 1 in den Status FIN_WAIT_1. Dies bedeutet, dass Host 2 das von Host 1 gesendete FIN-Segment empfängt ACK-Nachrichtensegment, die Bestätigungsnummer ist die Sequenznummer plus 1; Host 1 wechselt in den Status FIN_WAIT_2; Host 2 teilt Host 1 mit, dass ich keine Daten zum Senden habe und
3 senden kann Nachrichtensegment, das das Schließen der Verbindung anfordert, und Host 2 wechselt in den Status CLOSE_WAIT.
4 Host 1 empfängt das von Host 2 gesendete FIN-Nachrichtensegment, sendet ein ACK-Nachrichtensegment an Host 2 und wechselt dann in den Status TIME_WAIT ; Nachdem Host 2 das ACK-Segment von Host 1 erhalten hat, schließt er die Verbindung zu diesem Zeitpunkt. Host 1 erhält jedoch nach dem Warten auf 2MSL immer noch keine Antwort, was beweist, dass der Server normal geschlossen wurde Schließen Sie die Verbindung.
Zu diesem Zeitpunkt sind die vier Trennungen von TCP glücklich abgeschlossen.
Die Symbole zum Herstellen und Trennen von Verbindungen lauten wie folgt:
Lassen Sie uns erklären, warum es sich um einen Drei-Wege-Handschlag handelt? Um zu verhindern, dass das ungültige Linkanforderungssegment plötzlich an den Server übertragen wird und einen Fehler verursacht. Gib eine Kastanie.Das erste vom Client gesendete Verbindungsanforderungssegment ging nicht verloren, sondern blieb lange Zeit an einem bestimmten Netzwerkknoten, sodass es bis zu einer bestimmten Zeit nach dem Verbindungsabbau verzögert wurde, bevor es den Server erreichte. Es stellt sich heraus, dass es sich um einen Nachrichtenabschnitt handelt, der längst abgelaufen ist. Nachdem der Server dieses ungültige Verbindungsanforderungssegment empfangen hat, geht er jedoch fälschlicherweise davon aus, dass es sich um eine erneut vom Client gesendete neue Verbindungsanforderung handelt. Daher sendet es ein Bestätigungsnachrichtensegment an den Client und stimmt dem Verbindungsaufbau zu. Unter der Annahme, dass der „Drei-Wege-Handshake“ nicht verwendet wird, wird eine neue Verbindung hergestellt, solange der Server eine Bestätigung sendet. Da der Client keine Anfrage zum Verbindungsaufbau gestellt hat, achtet er nicht auf die Bestätigung des Servers und sendet keine Daten an den Server. Der Server geht jedoch davon aus, dass eine neue Transportverbindung hergestellt wurde und wartet darauf, dass der Client Daten sendet. Auf diese Weise werden viele Ressourcen des Servers verschwendet. Die „Drei-Wege-Handshake“-Methode kann das Auftreten des oben genannten Phänomens verhindern. In der aktuellen Situation sendet der Client beispielsweise keine Bestätigung an den Server. Da der Server die Bestätigung nicht empfangen kann, weiß er, dass der Client nicht um den Verbindungsaufbau gebeten hat. „
Das ist sehr klar und verhindert, dass der Server Ressourcen verschwendet, indem er ewig wartet.
Warum gibt es also vier Wellen?
Das TCP-Protokoll ist ein verbindungsorientiertes, zuverlässiges, Bytestream-basiertes Übertragungsschicht-Kommunikationsprotokoll. TCP ist es Ein Vollduplex-Modus bedeutet, dass Host 1, wenn er ein FIN-Segment sendet, Host 2 nur mitteilt, dass alle seine Daten gesendet wurden kann weiterhin Daten von Host 2 annehmen; wenn Host 2 das ACK-Nachrichtensegment zurückgibt, bedeutet dies, dass er bereits weiß, dass Host 1 keine Daten zum Senden hat, Host 2 jedoch weiterhin Daten an Host 1 senden kann; Segment bedeutet, dass Host 2 keine Daten zum Senden hat und Host 1 mitteilen wird, dass ich keine Daten zum Senden habe, und dann werden beide Parteien die TCP-Verbindung gerne unterbrechen. Wenn Sie die Prinzipien der vier Trennungen richtig verstehen möchten. Sie müssen die Statusänderungen während der vier Trennungen verstehen
Das obige ist der detaillierte Inhalt vonBeispielanalyse eines TCP-Drei-Wege-Handshakes zum Aufbau einer Verbindung und einer Vier-Wege-Welle zum Unterbrechen der Verbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!