TCP -Verbindungsaufbau
Wenn wir im Web durchsuchen, eine E -Mail senden oder ein Online -Spiel spielen, denken wir oft nicht über die komplexe Netzwerkverbindung dahinter nach. Es sind jedoch diese scheinbar kleinen Schritte, die eine stabile Kommunikation zwischen uns und dem Server gewährleisten. Einer der wichtigsten Schritte ist das TCP-Verbindungsaufbau, und der Kern davon ist der Drei-Wege-Handschlag.
In diesem Artikel werden das Prinzip, den Prozess und die Bedeutung des Drei-Wege-Handschlags im Detail erörtert. Schritt für Schritt erklären wir, warum der Drei-Wege-Handschlag benötigt wird, wie er die Verbindungsstabilität und -zuverlässigkeit gewährleistet und wie wichtig er für die Datenübertragung ist. Mit einem tieferen Verständnis des Drei-Wege-Handshake erhalten wir ein besseres Verständnis der zugrunde liegenden Mechanismen der Netzwerkkommunikation und einer klareren Sicht auf die Zuverlässigkeit von TCP-Verbindungen.
TCP-Drei-Wege-Handshake-Prozess und Zustandsübergänge
TCP ist ein verbindungsorientiertes Transportprotokoll, das vor der Datenübertragung eine Verbindungsorientierung erfordert. Dieser Verbindungsaufbauprozess erfolgt durch einen Drei-Wege-Handschlag.
Schauen wir uns die TCP -Pakete genauer an, die in jeder Verbindung gesendet werden.
Anfangs sind sowohl der Client als auch der Server geschlossen. Erstens hört der Server aktiv auf einen Port und befindet sich im Hörzustand, was bedeutet, dass der Server gestartet werden muss. Als nächstes ist der Client bereit, auf die Webseite zuzugreifen. Es muss eine Verbindung mit dem Server herstellen. Das Format des ersten Verbindungspakets lautet wie folgt:
Wenn ein Client eine Verbindung initiiert, generiert er eine zufällige anfängliche Sequenznummer (client_isn) und platziert sie in das Feld "Sequenznummer" des TCP -Headers. Gleichzeitig legt der Client die SYN -Flag -Position auf 1 fest, um anzuzeigen, dass das ausgehende Paket ein SYN -Paket ist. Der Client gibt an, dass er eine Verbindung mit dem Server herstellen möchte, indem das erste SYN -Paket an den Server gesendet wird. Dieses Paket enthält keine Anwendungsschichtdaten (dh Daten gesendet). Zu diesem Zeitpunkt wird der Status des Clients als Syn-Sent gekennzeichnet.
Wenn ein Server ein SYN -Paket von einem Client erhält, initialisiert er zufällig seine eigene Seriennummer (Server_isn) und stellt diese Zahl dann in das Feld "Seriennummer" des TCP -Headers ein. Als nächstes gibt der Server Client_isn + 1 in das Feld "Bestätigungsnummer" ein und legt sowohl SYN- als auch ACK-Bits auf 1. Schließlich sendet der Server das Paket an den Client, der keine Anwendungsschichtdaten enthält (und keine Daten für den Server). Zu diesem Zeitpunkt befindet sich der Server in Syn-RCVD-Status.
Sobald der Client das Paket vom Server erhalten hat, muss er die folgenden Optimierungen durchführen, um auf das endgültige Antwortpaket zu antworten: Erstens legt der Client das ACK -Bit des TCP -Headers des Antwortpakets auf 1 fest. Zweitens gibt der Client in das Feld "Antwortnummer" in den Value Server_isn + 1 ein. Schließlich sendet der Client das Paket an den Server. Dieses Paket kann Daten vom Client zum Server übertragen. Nach Abschluss dieser Operationen wird der Kunde in den etablierten Staat eintreten.
Sobald der Server das Antwortpaket vom Client erhalten hat, wechselt er auch in den festgelegten Zustand.
Wie Sie aus dem obigen Vorgang sehen können, darf der dritte Handschlag bei der Durchführung eines Drei-Wege-Handschlags Daten tragen, die ersten beiden Handshakes sind jedoch nicht. Dies ist eine Frage, die in Interviews oft gestellt wird. Sobald der Drei-Wege-Handshake abgeschlossen ist, geben beide Parteien in den etablierten Zustand ein, was darauf hinweist, dass die Verbindung erfolgreich hergestellt wurde. Zu diesem Zeitpunkt kann der Client und der Server Daten aneinander senden.
Warum drei Handshakes? Nicht zweimal, viermal?
Die allgemeine Antwort lautet: "Weil der Drei-Wege-Handshake die Möglichkeit garantiert, zu empfangen und zu senden." Diese Antwort ist korrekt, aber es ist nur der Oberflächengrund, der den Hauptgrund nicht vorlegt. Im Folgenden werde ich die Gründe für den dreifachen Handschlag von drei Aspekten analysieren, um unser Verständnis dieses Problems zu vertiefen.
Der Drei-Wege-Handschlag kann die Initialisierung historisch wiederholter Verbindungen effektiv vermeiden (der Hauptgrund)
Der Drei-Wege-Handshake garantiert, dass beide Parteien eine zuverlässige anfängliche Sequenznummer erhalten haben.
Der Drei-Wege-Handschlag vermeidet es, Ressourcen zu verschwenden.
Grund 1: Vermeiden Sie historische Duplikatverbindungen
Kurz gesagt, der Hauptgrund für den Drei-Wege-Handshake besteht darin, Verwirrung zu vermeiden, die durch die Initialisierung der alten doppelten Verbindung verursacht wird. In einer komplexen Netzwerkumgebung wird die Übertragung von Datenpaketen nicht immer in Übereinstimmung mit der angegebenen Zeit an den Zielhost gesendet, und alte Datenpakete können aufgrund der Netzwerküberlastung und anderen Gründen zuerst zum Zielhost gelangen. Um dies zu vermeiden, verwendet TCP einen Drei-Wege-Handschlag, um die Verbindung herzustellen.
Wenn ein Client nacheinander mehrere Syn -Syn -Verbindungs -Einrichtungspakete sendet, kann in Situationen wie der Netzwerküberlastung folgendermaßen auftreten:
1- Die alten SYN-Pakete kommen vor den neuesten SYN-Paketen auf dem Server.
2- Der Server beantwortet dem Client ein Syn + ACK-Paket, nachdem er das alte Syn-Paket erhalten hat.
3- Wenn der Client das Syn + ACK-Paket empfängt, wird festgestellt, dass die Verbindung eine historische Verbindung (Sequenznummer abgelaufen oder Zeitlimit) entsprechend seinem eigenen Kontext ist, und sendet das RST-Paket dann an den Server, um die Verbindung abzubrechen.
Mit einer Zweihandschuhe-Verbindung gibt es keine Möglichkeit, festzustellen, ob die aktuelle Verbindung eine historische Verbindung ist. Mit dem Drei-Wege-Handshake kann der Client feststellen, ob die aktuelle Verbindung eine historische Verbindung ist, die auf dem Kontext basiert, wenn er bereit ist, das dritte Paket zu senden:
1- Wenn es sich um eine historische Verbindung (Sequenznummer oder Zeitlimit) handelt, ist das vom dritte Handshake gesendete Paket ein erstklassiges Paket, um die historische Verbindung abzubrechen.
2- Wenn es sich nicht um eine historische Verbindung handelt, ist das zum dritte Mal gesendete Paket ein ACK-Paket, und die beiden Kommunikationsparteien stellen die Verbindung erfolgreich her.
Daher ist der Hauptgrund, warum TCP den Drei-Wege-Handshake verwendet, dass die Verbindung initialisiert, um historische Verbindungen zu verhindern.
Grund 2: Synchronisieren Sie die anfänglichen Sequenznummern beider Parteien
Beide Seiten des TCP -Protokolls müssen eine Sequenznummer beibehalten, was ein Schlüsselfaktor ist, um eine zuverlässige Übertragung zu gewährleisten. Sequenznummern spielen eine wichtige Rolle in TCP -Verbindungen. Sie machen Folgendes:
Der Empfänger kann doppelte Daten beseitigen und die Genauigkeit der Daten sicherstellen.
Der Empfänger kann Pakete in der Reihenfolge der Sequenznummer empfangen, um die Integrität der Daten zu gewährleisten.
● Die Sequenznummer kann das Datenpaket identifizieren, das von der anderen Partei empfangen wurde, wodurch eine zuverlässige Datenübertragung ermöglicht wird.
Daher sendet der Client bei der Erstellung einer TCP -Verbindung Synchronisationspakete mit der anfänglichen Sequenznummer und verlangt von dem Server, mit einem ACK -Paket zu antworten, das eine erfolgreiche Empfang des Synpakets des Kunden angibt. Anschließend sendet der Server das SYN -Paket mit der anfänglichen Sequenznummer an den Client und wartet darauf, dass der Client ein für alle Mal antwortet, um sicherzustellen, dass die anfänglichen Sequenznummern zuverlässig synchronisiert werden.
Obwohl ein Vier-Wege-Handschlag auch möglich ist, um die anfänglichen Sequenznummern beider Parteien zuverlässig zu synchronisieren, können die zweiten und dritten Schritte zu einem einzigen Schritt kombiniert werden, was zu einem Drei-Wege-Handshake führt. Die beiden Handshakes können jedoch nur garantieren, dass die anfängliche Abfolge von einer Partei erfolgreich von der anderen Partei aufgenommen wird. Es gibt jedoch keine Garantie dafür, dass die anfängliche Sequenzzahl beider Parteien bestätigt werden kann. Daher ist der Drei-Wege-Handschlag die beste Wahl, um die Stabilität und Zuverlässigkeit von TCP-Verbindungen zu gewährleisten.
Grund 3: Vermeiden Sie es, Ressourcen zu verschwenden
Wenn es nur einen "Zwei-Handshake" gibt, kann der Client das vom Server gesendete ACK-Paket nicht empfangen, wenn die Client-SYN-Anfrage im Netzwerk blockiert ist, sodass die SYN abgelehnt wird. Da es jedoch keinen dritten Handschlag gibt, kann der Server nicht feststellen, ob der Client eine ACK -Bestätigung erhalten hat, um die Verbindung herzustellen. Daher kann der Server nach Empfang jeder Syn -Anforderung nur proaktiv eine Verbindung herstellen. Dies führt zu Folgendem:
Ressourcenverschwendung: Wenn die SYN -Anforderung des Clients blockiert wird, was zu einer wiederholten Übertragung mehrerer Syn -Pakete führt, stellt der Server nach Erhalt der Anforderung mehrere redundante ungültige Verbindungen her. Dies führt zu einer unnötigen Verschwendung von Serverressourcen.
Nachrichtenbindung: Aufgrund des Mangels eines dritten Handschlags kann der Server nicht wissen, ob der Client die ACK -Bestätigung korrekt erhalten hat, um die Verbindung herzustellen. Wenn Nachrichten im Netzwerk stecken bleiben, sendet der Client immer wieder immer wieder SYN -Anfragen, wodurch der Server ständig neue Verbindungen herstellt. Dies wird die Überlastung und Verzögerung der Netzwerke erhöhen und die Gesamtleistung der Netzwerk negativ beeinflussen.
Um die Stabilität und Zuverlässigkeit der Netzwerkverbindung zu gewährleisten, verwendet TCP den Drei-Wege-Handschlag, um die Verbindung herzustellen, um das Auftreten dieser Probleme zu vermeiden.
Zusammenfassung
DerNetzwerkpaketbrokerDie TCP-Verbindungseinrichtung erfolgt mit einem Drei-Wege-Handschlag. Während des Drei-Wege-Handschlags sendet der Client zunächst ein Paket mit dem Syn-Flag an den Server, was angibt, dass er eine Verbindung herstellen möchte. Nachdem der Server die Anforderung vom Client empfangen hat, antwortet der Server ein Paket mit SYN- und ACK -Flags an den Client, in dem die Verbindungsanforderung akzeptiert wird, und sendet seine eigene anfängliche Sequenznummer. Schließlich antwortet der Client mit einem ACK -Flag auf den Server, um anzuzeigen, dass die Verbindung erfolgreich hergestellt wurde. Somit befinden sich die beiden Parteien im etablierten Zustand und können Daten aneinander senden.
Im Allgemeinen soll das Drei-Wege-Handshake-Verfahren für die TCP-Verbindungsanlage die Verbindungsstabilität und -zuverlässigkeit sicherstellen, Verwirrung und Verschwendung von Ressourcen gegenüber historischen Verbindungen vermeiden und sicherstellen, dass beide Parteien Daten empfangen und senden können.
Postzeit: Januar-08-2025