Key Mysteries of Network Packet Broker TCP Connections: Demystifisearre de needsaak foar Triple Handshake

TCP Ferbining Setup
As wy op it web blêdzje, in e-post stjoere, of in online spultsje spielje, tinke wy faaks net oer de komplekse netwurkferbining der efter. It binne lykwols dizze skynber lytse stappen dy't soargje foar stabile kommunikaasje tusken ús en de tsjinner. Ien fan 'e wichtichste stappen is de opset fan' e TCP-ferbining, en de kearn hjirfan is de trije-wei-handshake.

Dit artikel sil beprate it prinsipe, proses en belang fan de trije-manier handshake yn detail. Stap foar stap sille wy útlizze wêrom't de trije-wei handshake nedich is, hoe't it soarget foar ferbiningstabiliteit en betrouberens, en hoe wichtich it is foar gegevensoerdracht. Mei in djipper begryp fan de trije-manier handshake, wy sille krije in better begryp fan de ûnderlizzende meganismen fan netwurk kommunikaasje en in dúdliker sicht op de betrouberens fan TCP ferbinings.

TCP Three-way Handshake Process and State Transitions
TCP is in ferbining-rjochte ferfier protokol, dat fereasket ferbining fêstiging foar gegevens oerdracht. Dit proses fan ferbining oprjochting wurdt dien troch in trije-manier handshake.

 TCP trije-way handshake

Litte wy in tichterby sjen nei de TCP-pakketten dy't yn elke ferbining ferstjoerd wurde.

Yn earste ynstânsje binne sawol de client as de tsjinner SLUTEN. Earst harket de tsjinner aktyf op in poarte en is yn 'e LISTEN-status, wat betsjut dat de tsjinner opstart wurde moat. Dêrnei is de kliïnt klear om tagong te krijen ta de webside.It moat in ferbining meitsje mei de tsjinner. It formaat fan it earste ferbiningspakket is as folget:

 SYN Pakket

As in kliïnt in ferbining inisjearret, genereart it in willekeurich initial folchoardernûmer (client_isn) en pleatst it yn it fjild "Sequence number" fan 'e TCP-koptekst. Tagelyk set de kliïnt de SYN-flaggeposysje op 1 om oan te jaan dat it útgeande pakket in SYN-pakket is. De kliïnt jout oan dat hy in ferbining mei de tsjinner opstelle wol troch it earste SYN-pakket nei de tsjinner te stjoeren. Dit pakket befettet gjin applikaasjelaachgegevens (dat is gegevens ferstjoerd). Op dit punt wurdt de status fan 'e kliïnt markearre as SYN-SENT.

SYN+ACK-pakket

As in tsjinner in SYN-pakket fan in kliïnt ûntfangt, initialisearret it willekeurich syn eigen serialnûmer (server_isn) en set dat nûmer dan yn it fjild "Serial number" fan 'e TCP-header. Dêrnei fiert de tsjinner client_isn + 1 yn it fjild "Acknowledgement number" yn en set sawol SYN- as ACK-bits op 1. Uteinlik stjoert de tsjinner it pakket nei de kliïnt, dy't gjin applikaasje-laachgegevens befettet (en gjin gegevens foar de tsjinner). stjoere). Op dit stuit is de tsjinner yn SYN-RCVD steat.

ACK pakket

Sadree't de kliïnt it pakket fan 'e tsjinner ûntfangt, moat it de folgjende optimisaasjes útfiere om te reagearjen op it definitive antwurdpakket: Earst set de kliïnt de ACK-bit fan 'e TCP-koptekst fan it antwurdpakket op 1; Twads, de kliïnt fiert de wearde server_isn + 1 yn it fjild "Befêstigje antwurd nûmer"; Uteinlik stjoert de kliïnt it pakket nei de tsjinner. Dit pakket kin gegevens fan 'e kliïnt nei de tsjinner drage. Nei it foltôgjen fan dizze operaasjes sil de kliïnt de ESTABLISHED steat ynfiere.

Sadree't de tsjinner it antwurdpakket fan 'e kliïnt ûntfangt, skeakelt it ek nei de ESTABLISHED steat.

Sa't jo sjen kinne út it boppesteande proses, by it útfieren fan in trije-manier handshake, de tredde handshake is tastien om te dragen gegevens, mar de earste twa handshakes binne net. Dit is in fraach dy't faak steld wurdt yn ynterviews. Sadree't de trije-manier handshake is foltôge, beide partijen ynfiere de ESTABLISHED steat, wat oanjout dat de ferbining is mei súkses fêststeld, op hokker punt de kliïnt en tsjinner kinne begjinne te ferstjoeren fan gegevens nei elkoar.

Wêrom trije handshakes? Net twa kear, fjouwer kear?
It mienskiplike antwurd is: "Om't de trije-manier handshake garandearret de mooglikheid om te ûntfangen en te ferstjoeren." Dit antwurd is korrekt, mar it is allinnich it oerflak reden, net sette de wichtichste reden. Yn 'e folgjende sil ik de redenen analysearje foar de triple handshake út trije aspekten om ús begryp fan dit probleem te ferdjipjen.

De trije-manier handshake kin effektyf mije de inisjalisaasje fan histoarysk werhelle ferbinings (de wichtichste reden)
De trije-manier handshake garandearret dat beide partijen hawwe krigen in betrouber initial folchoarder nûmer.
De trije-manier handshake foarkomt fergriemen fan middels.

Reden 1: Avoid histoaryske dûbele joins
Yn in notedop, de wichtichste reden foar de trije-manier handshake is om betizing te foarkommen feroarsake troch de âlde dûbele ferbining inisjalisaasje. Yn in komplekse netwurkomjouwing wurdt de oerdracht fan gegevenspakketten net altyd stjoerd nei de bestimmingshost yn oerienstimming mei de opjûne tiid, en âlde gegevenspakketten kinne earst by de bestimmingshost komme fanwege netwurkcongestie en oare redenen. Om dit foar te kommen, brûkt TCP in trije-manier handshake om de ferbining te meitsjen.

trije-manier handshake foarkomt histoaryske dûbele ferbinings

As in kliïnt meardere pakketten foar SYN-ferbining-oprjochting efterinoar ferstjoert, kinne yn situaasjes lykas netwurkcongestie it folgjende foarkomme:

1- De âlde SYN-pakketten komme by de server foar de lêste SYN-pakketten.
2- De tsjinner sil in SYN + ACK-pakket antwurdzje nei de kliïnt nei ûntfangst fan it âlde SYN-pakket.
3- As de kliïnt it SYN + ACK-pakket ûntfangt, bepaalt it dat de ferbining in histoaryske ferbining is (sekwinsjenûmer ferrûn of time-out) neffens syn eigen kontekst, en stjoert dan it RST-pakket nei de tsjinner om de ferbining ôf te brekken.

Mei in twa-handshake-ferbining is d'r gjin manier om te bepalen as de hjoeddeistige ferbining in histoaryske ferbining is. De trije-wei handshake lit de kliïnt bepale oft de hjoeddeistige ferbining in histoaryske ferbining is basearre op 'e kontekst as it klear is om it tredde pakket te stjoeren:

1- As it in histoaryske ferbining is (sekwinsjenûmer ferrûn of time-out), is it pakket ferstjoerd troch de tredde handshake in RST-pakket om de histoaryske ferbining ôf te brekken.
2- As it gjin histoaryske ferbining is, is it pakket dat foar de tredde kear stjoerd is in ACK-pakket, en de twa kommunisearjende partijen meitsje de ferbining mei súkses.

Dêrom is de wichtichste reden dat TCP de trije-wei-handshake brûkt is dat it de ferbining inisjalisearret om histoaryske ferbiningen te foarkommen.

Reden 2: Syngronisearje de earste folchoarder nûmers fan beide partijen
Beide kanten fan it TCP-protokol moatte in folchoardernûmer behâlde, wat in kaaifaktor is om betroubere oerdracht te garandearjen. Sequencenûmers spylje in wichtige rol yn TCP-ferbiningen. Se dogge it folgjende:

De ûntfanger kin dûbele gegevens eliminearje en de krektens fan 'e gegevens soargje.

De ûntfanger kin pakketten ûntfange yn 'e folchoarder fan it folchoardernûmer om de yntegriteit fan' e gegevens te garandearjen.

● It folchoardernûmer kin it gegevenspakket identifisearje dat troch de oare partij ûntfongen is, wêrtroch betroubere gegevensferfier mooglik is.

Dêrom, by it oprjochtsjen fan in TCP-ferbining, stjoert de kliïnt SYN-pakketten mei it earste folchoardernûmer en fereasket de tsjinner om te antwurdzjen mei in ACK-pakket dat oanjout op suksesfolle ûntfangst fan it SYN-pakket fan 'e kliïnt. Dan stjoert de tsjinner it SYN-pakket mei it earste folchoardernûmer nei de kliïnt en wachtet op 'e klant om te antwurdzjen, ienris en foar altyd, om te soargjen dat de earste folchoardernûmers betrouber binne syngronisearre.

Syngronisearje de earste serial numbers fan beide partijen

Hoewol't in fjouwer-way handshake ek mooglik is om betrouber syngronisearje de earste folchoarder nûmers fan beide partijen, de twadde en tredde stappen kinne wurde kombinearre yn ien stap, resultearret yn in trije-way handshake. De twa handshakes kinne lykwols allinich garandearje dat it earste folchoardernûmer fan ien partij mei súkses ûntfongen is troch de oare partij, mar d'r is gjin garânsje dat it earste folchoardernûmer fan beide partijen befêstige wurde kin. Dêrom is de trije-wei-handshake de bêste kar om te nimmen om de stabiliteit en betrouberens fan TCP-ferbiningen te garandearjen.

Reden 3: Mije fergriemen fan boarnen
As d'r mar in "twa-handshake" is, as it kliïnt SYN-fersyk yn it netwurk blokkearre is, kin de kliïnt it ACK-pakket net ûntfange dat troch de tsjinner ferstjoerd wurdt, sadat de SYN opnij ferstjoerd wurdt. Om't der lykwols gjin tredde handshake is, kin de tsjinner net bepale oft de kliïnt in ACK-erkenning krige om de ferbining te meitsjen. Dêrom kin de tsjinner allinich proaktyf in ferbining meitsje nei it ûntfangen fan elk SYN-fersyk. Dit liedt ta it folgjende:

Fergriemen fan boarnen: As it SYN-fersyk fan de kliïnt is blokkearre, wat resulteart yn werhelle oerdracht fan meardere SYN-pakketten, sil de tsjinner meardere oerstallige ûnjildige ferbiningen fêstigje nei ûntfangst fan it fersyk. Dit liedt ta in ûnnedige fergriemerij fan serverboarnen.

Berjochtbehâld: Troch it ûntbrekken fan in tredde handshake hat de tsjinner gjin manier om te witten oft de kliïnt de ACK-erkenning korrekt ûntfongen hat om de ferbining te meitsjen. As gefolch, as berjochten yn it netwurk sitte, sil de kliïnt SYN-oanfragen hieltyd wer ferstjoere, wêrtroch't de tsjinner hieltyd nije ferbiningen fêstiget. Dit sil tanimme netwurkcongestie en fertraging en negatyf beynfloedzje de totale netwurk prestaasjes.

Foarkom fergriemen fan boarnen

Dêrom, om de stabiliteit en betrouberens fan 'e netwurkferbining te garandearjen, brûkt TCP de trije-wei-handshake om de ferbining te meitsjen om it foarkommen fan dizze problemen te foarkommen.

Gearfetting
DeNetwurk Packet BrokerTCP ferbining fêstiging wurdt dien mei in trije-manier handshake. Tidens de trije-wei-handshake stjoert de kliïnt earst in pakket mei de SYN-flagge nei de server, wat oanjout dat hy in ferbining meitsje wol. Nei ûntfangst fan it fersyk fan 'e kliïnt, antwurdet de tsjinner in pakket mei SYN- en ACK-flaggen oan' e kliïnt, wat oanjout dat it ferbiningsfersyk wurdt akseptearre, en stjoert syn eigen earste folchoardernûmer. Uteinlik antwurdet de kliïnt mei in ACK-flagge nei de tsjinner om oan te jaan dat de ferbining mei súkses fêststeld is. Sadwaande binne de twa partijen yn 'e ESTABLISHED steat en kinne begjinne mei it ferstjoeren fan gegevens nei elkoar.

Yn it algemien, de trije-manier handshake proses foar TCP ferbining fêstiging is ûntwurpen om te garandearjen ferbining stabiliteit en betrouberens, foar te kommen betizing en fergriemen fan middels oer histoaryske ferbinings, en soargje derfoar dat beide partijen binne by steat om te ûntfangen en stjoere gegevens.


Post tiid: Jan-08-2025