Heim  >  Artikel  >  Was meinst du damit, dass du in drei Nachrichten deine Finger hältst?

Was meinst du damit, dass du in drei Nachrichten deine Finger hältst?

藏色散人
藏色散人Original
2020-06-29 09:22:135694Durchsuche

Der Drei-Nachrichten-Handshake bezieht sich auf die Verfolgung und Aushandlung der jeweils gesendeten Datenmenge, die Sicherstellung der Synchronisierung der gesendeten und empfangenen Datensegmente und die Bestätigung der Datenübertragung und des Datenempfangs basierend auf der empfangenen Datenmenge zurückgezogen und eine virtuelle Verbindung hergestellt.

Was meinst du damit, dass du in drei Nachrichten deine Finger hältst?

Der sogenannte „Drei-Wege-Handshake“: Um die Menge der jedes Mal gesendeten Daten zu verfolgen und auszuhandeln, um sicherzustellen, dass das Senden und Empfangen erfolgt der Datensegmente werden entsprechend den empfangenen Daten synchronisiert. Beim Senden und Empfangen der Daten wird der Kontakt abgebrochen und eine virtuelle Verbindung hergestellt.

Um eine zuverlässige Zustellung zu gewährleisten, nummeriert TCP die Datenpakete in einer bestimmten Reihenfolge, bevor neue Daten gesendet werden, und erfordert Bestätigungsnachrichten, nachdem diese Pakete an den Zielcomputer übermittelt wurden. TCP wird immer zum Senden großer Datenmengen verwendet. TCP wird auch verwendet, wenn eine Anwendung nach dem Empfang von Daten eine Bestätigung durchführen muss.

Um eine TCP-Verbindung aufzubauen, müssen beide kommunizierenden Parteien die folgenden Informationen von der anderen Partei kennen:

Drei-Wege-Handshake

1 . Die Startsequenznummer des Nachrichtenversands der anderen Partei.

2. Die Puffergröße der von der anderen Partei gesendeten Daten.

3. Die maximale Nachrichtensegmentlänge, die empfangen werden kann, MSS.

4. Unterstützte TCP-Optionen.

Im TCP-Protokoll verstehen die kommunizierenden Parteien die oben genannten Informationen über drei TCP-Nachrichtensegmente und stellen auf dieser Grundlage eine TCP-Verbindung her. Der Austauschprozess der drei TCP-Nachrichtensegmente zwischen den kommunizierenden Parteien ist was allgemein als Three-Way-Handshake-Prozess zum Aufbau einer TCP-Verbindung bekannt ist.

Wenn die Verbindung hergestellt ist, dann:

1. Beide kommunizierenden Parteien der TCP-Verbindung können die Sequenznummer des ersten Bytes kennen, das von der anderen Partei auf der Verbindung gesendet wird ( an die andere Partei gesendet) Bestätigungsnummer, die von A an B gesendete Bestätigungsnummer ist die Sequenznummer, die B senden wird, und dieselbe ist die von B gesendete Sequenznummer.

2 die MSS, die über die Verbindung gesendet werden kann, damit sie während der Handshake-Phase den Austausch zwischen den beiden Parteien wählen können. Der kleinere Wert der MSS-Option in der SYN-Nachricht und der SYN+ACK-Nachricht wird als tatsächlicher Wert verwendet;

3. Beide Parteien können die Empfangspuffergröße der anderen Partei kennen.

Beide Parteien können wissen, ob die andere Partei SACK, Fensterskalierung und andere Optionen verwenden kann.

Basierend auf diesen Informationen können beide Parteien eine TCP-Verbindung (x, y) aufbauen und die Übertragung von Nachrichtensegmenten basierend auf dieser Verbindung starten.

Zum Aufbau einer TCP-Verbindung wird ein Drei-Wege-Handshake verwendet. Wenn zwei Hosts gleichzeitig versuchen, eine Verbindung zwischen denselben Sockets herzustellen, wird nur eine Verbindung hergestellt (diese beiden Verbindungen werden als identisch angesehen). , d. h. dieselbe Verbindung), da alle Verbindungen durch ihre Endpunkte identifiziert werden. Wenn die erste Anfrage zum Aufbau einer durch (x, y) identifizierten Verbindung führt und die zweite Anfrage ebenfalls eine durch (X, y) identifizierte Verbindung herstellt, gibt es innerhalb der TCP-Entität nur eine TCP-Verbindungstabelle (x,y).

Prozess

Erstes Mal

Erster Handshake: Beim Verbindungsaufbau sendet der Client ein Syn-Paket (seq=j) an den Server, Geben Sie den Status SYN_SENT ein und warten Sie auf die Bestätigung des Servers. SYN: Sequenznummern synchronisieren.

Zweiter Handshake

Zweiter Handshake: Der Server empfängt das Syn-Paket und muss das SYN des Clients bestätigen (ack=j+1) und sendet außerdem ein SYN-Paket (seq=k). ist ein SYN+ACK-Paket. Zu diesem Zeitpunkt wechselt der Server in den SYN_RECV-Status.

Das dritte Mal

Der dritte Handshake: Der Client empfängt das SYN+ACK-Paket vom Server und sendet ein Bestätigungspaket ACK (ack=k+1) an den Server gesendet. Der Client und der Server gehen in den Zustand ESTABLISHED (TCP-Verbindung erfolgreich) und schließen den Drei-Wege-Handshake ab.

Nach Abschluss des Drei-Wege-Handshakes beginnen der Client und der Server mit der Datenübertragung. Während des oben genannten Prozesses gibt es einige wichtige Konzepte:

(1) Nicht verbundene Warteschlange

dreimal Im Handshake-Protokoll unterhält der Server eine nicht verbundene Warteschlange, die einen Eintrag für das SYN-Paket jedes Clients öffnet (seq=j). Dieser Eintrag zeigt an, dass der Server das SYN-Paket empfangen und eine Bestätigung an den Client gesendet hat. und wartet auf die Bestätigung des Kunden. Die durch diese Einträge identifizierte Verbindung befindet sich auf dem Server im Status Syn_RECV. Wenn der Server das Bestätigungspaket des Clients empfängt, wird der Eintrag gelöscht und der Server wechselt in den Status ESTABLISHED.

(2) Der Backlog-Parameter

gibt die maximale Anzahl von Verbindungen an, die vom Kernel für den entsprechenden Socket in die Warteschlange gestellt werden. SYN-ACK-Neuübertragungszeiten Nachdem der Server das SYN-ACK-Paket gesendet hat und das Kundenbestätigungspaket nicht empfängt, führt der Server die erste Neuübertragung durch. Nachdem er eine Zeit lang gewartet hat und das Kundenbestätigungspaket immer noch nicht empfängt. Es führt die zweite Neuübertragung durch. Wenn die vom System festgelegte maximale Anzahl an Neuübertragungen überschritten wird, löscht das System die Verbindungsinformationen aus der Halbverbindungswarteschlange. Beachten Sie, dass die Wartezeit für jede erneute Übertragung nicht unbedingt gleich ist.

(3) Halbverbindungs-Überlebenszeit

bezieht sich auf die längste Zeit, die der Eintrag der Halbverbindungswarteschlange überlebt, d. h. die längste Zeit ab dem Empfang des SYN-Pakets durch den Server Um zu bestätigen, dass die Nachricht ungültig ist, ist dieser Zeitwert die Summe der längsten Wartezeiten aller Neuübertragungsanforderungspakete. Manchmal nennen wir die Halbverbindungsüberlebenszeit auch Timeout-Zeit und SYN_RECV-Überlebenszeit.

Das obige ist der detaillierte Inhalt vonWas meinst du damit, dass du in drei Nachrichten deine Finger hältst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn