Kaai mystearjes fan netwurkpakket makelder TCP-ferbiningen: de needsaaklike de needsaak foar triple hândruk

TCP Connection Setup
As wy it web blêdzje, stjoer dan in e-post, of in online spultsje spielje, tinke wy faaks net oer de komplekse netwurkferbining efter it. It is lykwols dizze skynbere lytse stappen dy't stabile kommunikaasje soargje tusken ús en de server. Ien fan 'e wichtichste stappen is de opset fan TCP-ferbining, en de kearn hjirfan is de trije-wei hândruk.

Dit artikel sil it prinsipe besprekke, proses en belang fan 'e trije-wei handshake yn detail. Stap foar stap, wy sille útlizze wêrom't de trije-wei handdruk is nedich, hoe't it ferbiningsstabiliteit en betrouberens soarget, en hoe wichtich it is foar gegevensferfier. Mei in djipper begryp fan 'e trije-wei handdruk krije wy in better begryp fan' e ûnderlizzende meganismen fan netwurkkommunikaasje en in dúdliker werjefte fan 'e betrouberens fan TCP-ferbiningen.

TCP Trije-wei handdrukproses en steat oergongen
TCP is in ferbining-rjochte ferfierprotokol, dy't ferbiningsterynstelling freget foardat gegevensmission fereasket. Dit ferbiningsopnimmingsproses wurdt dien troch in trije-wei hândruk.

 TCP trije-wei hândruk

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

Yn it earstoan wurde beide de kliïnt as de server sletten. Earst harket de server aktyf op in haven en is yn 'e harkette steat, wat betsjut dat de server moat wurde begon. Folgjende is de kliïnt ree om te begjinnen om tagong te krijen ta de webside.it moat in ferbining meitsje mei de server. It opmaak fan it earste ferbiningspakket is as folgjend:

 SYS SYN PACET

As in kliïnt in ferbining inisjearret, genereart it in willekeurige initial sekwensnûmer (kliïnt_isn) en pleatst it yn it fjild "Sequence-nûmer" fan 'e TCP-koptekst. Tagelyk stelt de kliïnt de syn flaggeposysje yn om 1 te jaan om oan te jaan dat it útgeande pakket in syn pakket is. De kliïnt jout oan dat it in ferbining woe te fêstigjen mei de server troch it earste syn pakket te stjoeren nei de server. Dit pakket befettet gjin gegevens fan applikaasje-laach (dat is, gegevens ferstjoerd). Op dit punt is de status fan 'e kliïnt markearre as syn-stjoerd.

SYS SYN + ACK PAPET

As in server in syn pakket krijt fan in klant, initemeart it willekeurich syn eigen serienûmer (server_isn) en set dat nûmer yn it "Seriële nûmer" FIELD fan 'e TCP-koptekst. Folgjende ynkomt de server client_isn + 1 yn it fjild "Ertseinnûmer" en set beide syn as ack-bits nei 1. Slach de pakket oan 'e klant, dy't gjin applikaasje-laach-gegevens befettet (en gjin gegevens foar de server om te stjoeren). Op dit stuit is de server yn syn-RCVD-steat.

ACK Packet

Sadree't de klant it pakket fan 'e server krijt, moat it de folgjende optimisaasjes útfiere om te reagearjen op it definitive antwurdpakket: earst stelt de kliïnt it akk fan' e TCP-koptekop oan 1; Twad, de kliïnt ynkomt de wearde Server_isn + 1 yn yn it fjild "Befêstigje beantwurdzje" Befêstigje beantwurdzje "; Uteinlik stjoert de kliïnt it pakket nei de server. Dit pakket kin gegevens fan 'e kliïnt drage nei de server. Nei it foltôgjen fan dizze operaasjes sil de klant de oprjochte steat ynfiere.

Sadree't de server it antwurdpakket fan 'e klant krijt, skeakelt it ek oer nei de oprjochte steat.

Sa't jo kinne sjen út it boppesteande proses, by it útfieren fan in trije-wei-handdruk, is de tredde handdruk tastien om gegevens te dragen, mar de earste twa handshakes binne net. Dit is in fraach dy't faak wurdt frege yn ynterviews. Sadree't de trije-wei handdruk is foltôge, fiert beide partijen de fêststelde steat yn, oanjout dat de ferbining is mei súkses fêststeld, wêrop de kliïnt en server kin begjinne mei it ferstjoeren fan gegevens.

Wêrom trije handshakes? Net twa kear, fjouwer kear?
It mienskiplik antwurd is, "Om't de trije-wei handshake de mooglikheid garandeart om te ûntfangen en te stjoeren." Dit antwurd is korrekt, mar it is allinich it oerflak ferstand, set de wichtichste reden net troch. Yn 'e folgjende sil ik de redenen analysearje foar de Triple Handshake fan trije aspekten om ús begryp fan dit probleem te ferdjipjen.

De trije-wei-handshake kin effektyf de initialisaasje fan histoarysk werhelle ferbiningen foarkomme (de wichtichste reden)
De trije-wei-handshake garandeart dat beide partijen in betrouber initial sekwensnûmer hawwe krigen.
De trije-wei handdruk foarkomt fergriemen fan boarnen.

Reden 1: Foarkommen fan histoaryske duplicate-mids
Yn in nûmaal, de wichtichste reden foar de trije-wei handdruk is om betizing te foarkommen feroarsake troch de initialisaasje fan âlde dûbele ferbining. Yn in komplekse netwurkomjouwing wurdt de oerdracht fan gegevensferpakketten net altyd stjoerd yn 'e bestimmingshost yn oerienstimming mei de oantsjutte tiid, en âlde gegevenspakketten kinne earst oankomme by it bestimmingshost fanwegen netwurknotheid en oare redenen. Om dit te foarkommen, brûkt TCP in trije-wei handshake om de ferbining te fêstigjen.

Trije-wei handshake foarkomt histoaryske dûbele ferbiningen

Doe't in kliïnt meardere syn ynslachtaksjes fan meardere ynsletten ferstjoere, yn situaasjes, lykas netwurkstop, kin it folgjende foarkomme:

1- De âlde syn pakketten komme op 'e server foar de lêste syn pakketten.
2- De server sil in synkyn + Ack-pakket antwurdzje nei de klant nei it ûntfangen fan it âlde syn pakket.
3- Doe't de klant it syn + Ack-pakket krijt, bepaalt dat de ferbining in histoaryske ferbining is (folchoarder is ferrûn as time-out) neffens har eigen kontekst nei de server om de ferbining te abortearjen.

Mei in ferbining mei twa hândrukt, is d'r gjin manier om te bepalen as de hjoeddeistige ferbining in histoaryske ferbining is. De trije-wei-handshake lit de klant om te bepalen oft de hjoeddeistige ferbining in histoaryske ferbining is op basis fan 'e kontekst as it ree is om it tredde pakket te stjoeren:

1- As it in histoaryske ferbining is (folchoarder nûmer is, wurdt ferrûn as time-out), stjoerde it pakket troch de tredde handdruk, is in rst pakket om de histoaryske ferbining te ferbinen.
2- As it net in histoaryske ferbining is, stjoerde de pakket foar de tredde kear in ACK-pakket, en de twa kommunikearjende partijen stelle mei súkses de ferbining mei súkses.

Dêrom, de wichtichste reden dat TCP brûkt dat de trije-wei handdruk hat is dat it de ferbining initemiseart om histoaryske ferbiningen te foarkommen.

Reden 2: Om de initial sekwinsje nûmers fan beide partijen te syngronisearjen
Beide kanten fan it TCP-protokol moat in sekwinsjenûmer behâlde, dat in kaai-faktor is om betroubere oerdracht te garandearjen. SEQUSEN SIMMERS SPEELJE In WICHTICH ROL yn TCP CONNEY.S.they DO it folgjende:

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

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

● It sûkelnûmer kin it datapakket identifisearje dat is ûntfongen troch de oare partij, wêrtroch betroubere gegevensferfier kinne ynskeakelje.

Dêrom stjoert de kliïnt yn it fêststellen fan in TCP-ferbining mei it initial sekwensnûmer en fereasket de server om te antwurdzjen mei in ACK-pakket oanjout suksesfolle ûntfangst fan it syn pakket oanjout. Doe stjoert de server it syn pakket mei it inisjele sekwensnûmer nei de kliïnt en wachtet op 'e klant om te antwurdzjen, ienris en foar allegear, om te soargjen dat de initial sekwensabel syngronisearre binne.

Syngronisearje de earste serieale nûmers fan beide partijen

Hoewol in hannen fan 'e fjouwer-wei is ek mooglik om de initial sekwensnûmers fan beide partijen te solitearjen, de twadde en tredde stappen kinne wurde kombineare yn ien stap, resultearre yn in trije-wei handshake. De twa handshakes kinne lykwols allinich garandearje dat it initial sekwens fan ien partikus is ûntfongen troch de oare partij, mar d'r is gjin garânsje dat it initial sekwens fan beide partijen kinne wurde befêstige. 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: Foarkommen fan boarnen fergrieme
As d'r mar in "twa-handshake" is, as it kliïntynsyn fersyk is blokkearre yn it netwurk, kin de kliïnt net ûntfange, stjoerde de ACK-pakket troch de server, sadat de syn syn sil wjerstean. Om't der lykwols gjin tredde handdruk is, kin de server net bepale as de klant in ack erkenning krige om de ferbining te fêstigjen. Dêrom kin de server allinich allinich in ferbining meitsje nei it ûntfangen fan elk syn fersyk. Dit liedt nei it folgjende:

Fergrieme fan boarnen: As it syn fersyk fan 'e kliïnt is blokkearre, resultearre yn werhelle oerdracht fan meardere syn pakketten, sil de server meardere Redundant unjildige ferbiningen oprjochtsje nei it ûntfangen fan it fersyk. Dit liedt ta in ûnnedich ôffal fan serverboarnen.

Berjochtferhâldingen: Fanwegen it gebrek oan in tredde handdruk hat de server gjin manier om te witten oft de klant de ack erkenning korrekt krige om de ferbining te bepalen. As resultaat, as berjochten stekke yn it netwurk, sil de kliïnt syn fregingen opnij stjoere, opnij stjoere, wêrtroch de server konstant nije ferbiningen kin oprjochtsje. Dit sil netwurkstop ferheegje en fertraging en fertraging hawwe ynfloed op it algemiene netwurkprestaasjes.

Foarkomme fergrieme boarnen

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

Gearfetting
DeNetwurkpakket makelderFêstiging fan TCP-ferbining wurdt dien mei in trije-wei hândruk. Tidens de trije-wei-handdruk stjoert de kliïnt earst in pakket mei de syn flagge nei de server, oanjout dat it in ferbining makket. Nei it ûntfangen fan it fersyk fan 'e kliïnt fan' e kliïnt antwurde de server in pakket mei syn en ack-flaggen nei de klant, oanjout dat it ferbiningsoanfraach wurdt aksepteare, en stjoert syn eigen initial sekwensnûmer. Uteinlik antwurdet de kliïnt mei in ACK-flagge nei de server om oan te jaan dat de ferbining mei súkses is oprjochte. Sa binne de twa partijen yn 'e fêststelde steat en kinne gegevens begjinne te stjoeren nei elkoar.

Yn 't algemien is it trije-wei-handshake-proses foar TCP-ferbining oan om ferbiningsstabiliteit en betrouberens te garandearjen, foarkomme fan boarnen oer histoaryske ferbiningen, en soargje derfoar dat beide partijen gegevens kinne ûntfange en ferstjoere.


Posttiid: jan-08-2025