Schlësselgeheimnisser vun den TCP-Verbindungen iwwer den Network Packet Broker: D'Noutwennegkeet vun engem Triple Handshake entmystifizéiert

TCP-Verbindungsopstellung
Wann mir am Internet surfen, eng E-Mail schécken oder en Online-Spill spillen, denke mir dacks net un déi komplex Netzwierkverbindung, déi hannendrun stécht. Allerdéngs sinn et dës scheinbar kleng Schrëtt, déi eng stabil Kommunikatioun tëscht eis an dem Server garantéieren. Ee vun de wichtegste Schrëtt ass d'Konfiguratioun vun der TCP-Verbindung, an de Kär dovun ass den Dräi-Weeër-Handshake.

Dësen Artikel wäert de Prinzip, de Prozess an d'Wichtegkeet vum Dräi-Wee-Handshake am Detail behandelen. Schrëtt fir Schrëtt erkläre mir firwat den Dräi-Wee-Handshake gebraucht gëtt, wéi e Verbindungsstabilitéit a Zouverlässegkeet garantéiert a wéi wichteg e fir d'Dateniwwerdroung ass. Mat engem méi déiwe Verständnis vum Dräi-Wee-Handshake kréie mir e besser Verständnis vun den zugronnleeënde Mechanismen vun der Netzwierkkommunikatioun an eng méi kloer Vue op d'Zouverlässegkeet vun TCP-Verbindungen.

TCP Dräi-Wee-Handshake-Prozess an Zoustandsiwwergäng
TCP ass e Verbindungsorientéiert Transportprotokoll, deen eng Verbindungsopstellung virun der Dateniwwerdroung erfuerdert. Dëse Prozess vun der Verbindungsopstellung gëtt duerch en Dräi-Weeër-Handshake gemaach.

 TCP Dräi-Weeër-Handshake

Loosst eis e méi geneeë Bléck op d'TCP-Päcketen werfen, déi an all Verbindung geschéckt ginn.

Ufanks sinn souwuel de Client wéi och de Server GESCHLOSS. Als éischt lauschtert de Server aktiv op e Port a ass am LAUSCHTER-Zoustand, dat heescht, datt de Server gestart muss ginn. Duerno ass de Client prett fir op d'Websäit zouzegräifen. Hie muss eng Verbindung mam Server opbauen. De Format vum éischte Verbindungspaket ass wéi follegt:

 SYN-Paket

Wann e Client eng Verbindung initiéiert, generéiert en eng zoufälleg initial Sequenznummer (client_isn) a setzt se am Feld "Sequence number" vum TCP-Header. Gläichzäiteg setzt de Client d'SYN-Flagpositioun op 1 fir unzeginn, datt de sendende Pakett e SYN-Pakett ass. De Client weist un, datt e eng Verbindung mam Server opbaue wëll, andeems en den éischte SYN-Pakett un de Server schéckt. Dëse Pakett enthält keng Applikatiounsschichtdaten (d.h. geschéckt Daten). Zu dësem Zäitpunkt gëtt de Status vum Client als SYN-SENT markéiert.

SYN+ACK Paket

Wann e Server e SYN-Paket vun engem Client kritt, initialiséiert en zoufälleg seng eege Seriennummer (server_isn) an setzt dës Nummer dann an d'Feld "Serial number" vum TCP-Header. Duerno gëtt de Server client_isn + 1 am Feld "Acknowledgement number" an a setzt souwuel SYN- wéi och ACK-Bits op 1. Schlussendlech schéckt de Server de Pak un de Client, deen keng Applikatiounsschichtdaten enthält (a keng Daten, déi de Server schécke kann). Zu dësem Zäitpunkt ass de Server am SYN-RCVD-Zoustand.

ACK-Paket

Soubal de Client de Pak vum Server kritt, muss en déi folgend Optimiséierungen duerchféieren, fir op de finale Äntwertpak ze reagéieren: Als éischt setzt de Client den ACK-Bit vum TCP-Header vum Äntwertpak op 1; Zweetens gëtt de Client de Wäert server_isn + 1 am Feld "Äntwertnummer bestätegen" an; Schlussendlech schéckt de Client de Pak un de Server. Dëse Pak kann Daten vum Client op de Server transportéieren. Nom Ofschloss vun dësen Operatiounen geet de Client an den Zoustand ESTABLISHED.

Soubal de Server de Äntwertpaket vum Client kritt, wiesselt en och an den ESTABLISHED-Zoustand.

Wéi Dir aus dem uewe genannten Prozess gesitt, däerf beim Duerchféiere vun engem Dräi-Weeër-Handshake den drëtten Handshake Daten droen, awer déi éischt zwee Handshakes net. Dës Fro gëtt dacks an Interviewe gestallt. Soubal den Dräi-Weeër-Handshake ofgeschloss ass, ginn déi zwou Parteien an den Zoustand ESTABLISHED, wat beweist, datt d'Verbindung erfollegräich etabléiert gouf, wourop de Client an de Server ufänke kënnen, Daten uneneen ze schécken.

Firwat dräi Händeschüttel? Net zweemol, véiermol?
Déi heefeg Äntwert ass: "Well den Dräi-Weeër-Handshake d'Fäegkeet garantéiert ze empfänken an ze schécken." Dës Äntwert ass richteg, awer et ass nëmmen den ieweschte Grond, et gëtt net den Haaptgrond genannt. Am Folgenden analyséieren ech d'Grënn fir den Dräi-Weeër-Handshake aus dräi Aspekter, fir eist Verständnis vun dësem Thema ze verdéiwen.

Den Dräi-Weeër-Handshake kann d'Initialiséierung vun historesch widderhollte Verbindungen effektiv vermeiden (den Haaptgrond)
Den Dräi-Weeër-Handshake garantéiert, datt béid Parteien eng zouverlässeg initial Sequenznummer kritt hunn.
Den Dräi-Weeër-Handshake vermeit Ressourcenverschwendung.

Grond 1: Vermeit historesch Duplikat-Joins
Kuerz gesot, den Haaptgrond fir den Dräi-Weeër-Handshake ass d'Vermeidung vu Verwirrung, déi duerch d'Initialiséierung vun enger aler duebeler Verbindung entsteet. An engem komplexen Netzwierkëmfeld gëtt d'Iwwerdroung vun Datenpakete net ëmmer am Aklang mat der spezifizéierter Zäit un den Destinatiounshost geschéckt, an al Datenpakete kënnen als éischt beim Destinatiounshost ukommen, wéinst Netzwierkstauung an anere Grënn. Fir dëst ze vermeiden, benotzt TCP en Dräi-Weeër-Handshake fir d'Verbindung opzebauen.

Dräi-Weeër-Handshake vermeit historesch Duplikatverbindungen

Wann e Client verschidde SYN-Verbindungsopbau-Päcketen hannereneen schéckt, a Situatiounen wéi Netzwierkstauung, kann dat Folgendes optrieden:

1- Déi al SYN-Päckete kommen um Server un, ier déi lescht SYN-Päckete ukommen.
2- De Server äntwert dem Client e SYN + ACK-Paket nodeems en den ale SYN-Paket kritt huet.
3- Wann de Client de SYN + ACK-Paket kritt, bestëmmt en, datt et sech ëm eng historesch Verbindung handelt (Sequenznummer ofgelaf oder Timeout) jee no sengem eegene Kontext, an schéckt dann den RST-Paket un de Server fir d'Verbindung ofzebriechen.

Mat enger Two-Handshake-Verbindung gëtt et keng Méiglechkeet ze bestëmmen, ob déi aktuell Verbindung eng historesch Verbindung ass. Den Dräi-Weeër-Handshake erlaabt dem Client ze bestëmmen, ob déi aktuell Verbindung eng historesch Verbindung ass, baséiert op dem Kontext, wann e prett ass, den drëtte Paket ze schécken:

1- Wann et eng historesch Verbindung ass (Sequenznummer ofgelaf oder Timeout), ass de Pakett, deen vum drëtten Handshake geschéckt gëtt, en RST-Pakett fir déi historesch Verbindung ofzebriechen.
2- Wann et keng historesch Verbindung ass, ass de Pak, deen zum drëtte Mol geschéckt gëtt, en ACK-Paket, an déi zwou kommunizéierend Parteien hunn d'Verbindung erfollegräich opgebaut.

Dofir ass den Haaptgrond, firwat TCP den Dräi-Wee-Handshake benotzt, datt en d'Verbindung initialiséiert fir historesch Verbindungen ze verhënneren.

Grond 2: Fir déi initial Sequenznummeren vun deenen zwou Parteien ze synchroniséieren
Béid Säite vum TCP-Protokoll mussen eng Sequenznummer behalen, wat e Schlësselfaktor ass fir eng zouverlässeg Iwwerdroung ze garantéieren. Sequenznummeren spillen eng wichteg Roll an TCP-Verbindungen. Si maachen folgend:

Den Empfänger kann duebel Daten eliminéieren an d'Genauegkeet vun den Daten garantéieren.

Den Empfänger kann Päckchen an der Reiefolleg vun der Sequenznummer empfänken, fir d'Integritéit vun den Donnéeën ze garantéieren.

● D'Sequenznummer kann den Datenpaket identifizéieren, deen vun der anerer Partei empfaange gouf, wat eng zouverlässeg Dateniwwerdroung erméiglecht.

Dofir schéckt de Client, nodeems eng TCP-Verbindung opgebaut gouf, SYN-Päckete mat der initialer Sequenznummer a verlaangt vum Server, datt en ACK-Päcket äntwert, dat den erfollegräichen Empfang vum SYN-Päcket vum Client ugeet. Dann schéckt de Server de SYN-Päcket mat der initialer Sequenznummer un de Client a waart op d'Äntwert vum Client, eemol fir ëmmer, fir sécherzestellen, datt déi initial Sequenznummeren zouverlässeg synchroniséiert sinn.

Synchroniséiert déi initial Seriennummeren vun deenen zwou Parteien

Obwuel e Véier-Weeër-Handshake och méiglech ass, fir déi initial Sequenznummeren vun deenen zwou Parteien zouverlässeg ze synchroniséieren, kënnen den zweeten an drëtte Schrëtt zu engem eenzege Schrëtt kombinéiert ginn, wat zu engem Dräi-Weeër-Handshake féiert. Déi zwee Handshakes kënnen awer nëmme garantéieren, datt déi initial Sequenznummer vun enger Partei erfollegräich vun der anerer Partei empfaange gëtt, awer et gëtt keng Garantie, datt déi initial Sequenznummer vun deenen zwou Parteien bestätegt ka ginn. Dofir ass den Dräi-Weeër-Handshake déi bescht Wiel, fir d'Stabilitéit an d'Zouverlässegkeet vun TCP-Verbindungen ze garantéieren.

Grond 3: Vermeit Ressourcen ze verschwenden
Wann et nëmmen en "Two-Handshake" gëtt, kann de Client, wann d'SYN-Ufro vum Client am Netzwierk blockéiert ass, den ACK-Paket net vum Server kréien, dofir gëtt de SYN nei geschéckt. Well et awer keen drëtten Handshake gëtt, kann de Server net feststellen, ob de Client eng ACK-Bestätegung fir d'Verbindung opzebauen kritt huet. Dofir kann de Server nëmmen proaktiv eng Verbindung opbauen, nodeems hien all SYN-Ufro kritt huet. Dëst féiert zu folgenden:

Ressourcenverschwendung: Wann d'SYN-Ufro vum Client blockéiert gëtt, wat zu enger widderhollter Iwwerdroung vu verschiddene SYN-Päcketen féiert, wäert de Server no Empfang vun der Ufro verschidde redundant ongëlteg Verbindungen opbauen. Dëst féiert zu enger onnéideger Verschwendung vu Serverressourcen.

Messagespäicherung: Well et kee drëtte Handshake gëtt, kann de Server net wëssen, ob de Client d'ACK-Bestätegung fir d'Verbindung richteg kritt huet. Dofir, wann Messagen am Netzwierk hänke bleiwen, schéckt de Client ëmmer erëm SYN-Ufroen, wouduerch de Server stänneg nei Verbindungen opbaut. Dëst erhéicht d'Stauung an d'Verzögerung vum Netzwierk an beaflosst d'Gesamtleistung vum Netzwierk negativ.

Ressourcen verschwenden vermeiden

Dofir, fir d'Stabilitéit an d'Zouverlässegkeet vun der Netzwierkverbindung ze garantéieren, benotzt TCP den Dräi-Wee-Handshake fir d'Verbindung opzebauen an d'Optriede vun dëse Problemer ze vermeiden.

Resumé
DenNetzwierkpaketbrokerD'Opbau vun enger TCP-Verbindung gëtt mat engem Dräi-Wee-Handshake gemaach. Wärend dem Dräi-Wee-Handshake schéckt de Client als éischt e Pakett mam SYN-Flag un de Server, fir unzedeiten, datt e wëll eng Verbindung opbauen. Nodeems de Server d'Ufro vum Client kritt huet, äntwert hien e Pakett mat SYN- an ACK-Flaggen un de Client, fir unzedeiten, datt d'Verbindungsufro akzeptéiert gouf, a schéckt seng eege initial Sequenznummer. Schlussendlech äntwert de Client mat engem ACK-Flagg un de Server fir unzedeiten, datt d'Verbindung erfollegräich opgebaut gouf. Sou sinn déi zwou Parteien am Zoustand ESTABLISHED a kënnen ufänken, Daten uneneen ze schécken.

Am Allgemengen ass den Dräi-Wee-Handshake-Prozess fir d'Opstelle vun enger TCP-Verbindung entwéckelt fir d'Stabilitéit an d'Zouverlässegkeet vun der Verbindung ze garantéieren, Duercherneen a Ressourcenverschwendung iwwer historesch Verbindungen ze vermeiden, an dofir ze suergen, datt béid Parteien fäeg sinn Daten ze kréien a schécken.


Zäitpunkt vun der Verëffentlechung: 08.01.2025