TCP -verbindingopstelling
As ons op die web blaai, 'n e -pos stuur of 'n aanlyn -speletjie speel, dink ons dikwels nie aan die komplekse netwerkverbinding daaragter nie. Dit is egter hierdie oënskynlik klein stappe wat stabiele kommunikasie tussen ons en die bediener verseker. Een van die belangrikste stappe is die TCP-verbindingopstelling, en die kern hiervan is die drie-rigting-handdruk.
In hierdie artikel word die beginsel, proses en belangrikheid van die drie-rigting-handdruk in detail bespreek. Stap vir stap sal ons verduidelik waarom die drie-rigting-handdruk nodig is, hoe dit verbindingstabiliteit en betroubaarheid verseker, en hoe belangrik dit is vir data-oordrag. Met 'n dieper begrip van die drie-rigting-handdruk, sal ons 'n beter begrip kry van die onderliggende meganismes van netwerkkommunikasie en 'n beter siening van die betroubaarheid van TCP-verbindings.
TCP-drie-rigting-handdrukproses en staatsoorgange
TCP is 'n verbindingsgerigte vervoerprotokol, wat verbindingsvestiging benodig voor data-oordrag. Hierdie verbindingsproses word deur 'n drie-rigting handdruk gedoen.
Kom ons kyk na die TCP -pakkies wat in elke verbinding gestuur word.
Aanvanklik is die kliënt en die bediener gesluit. Eerstens luister die bediener aktief op 'n poort en is dit in die luistertoestand, wat beteken dat die bediener begin moet word. Vervolgens is die kliënt gereed om toegang tot die webblad te kry. Dit moet 'n verbinding met die bediener vestig. Die formaat van die eerste verbindingspakket is soos volg:
As 'n kliënt 'n verbinding inisieer, genereer dit 'n ewekansige aanvanklike volgorde -nommer (Client_ISN) en plaas dit dit in die "volgorde -nommer" -veld van die TCP -kop. Terselfdertyd stel die kliënt die Syn -vlagposisie op 1 om aan te dui dat die uitgaande pakkie 'n Syn -pakkie is. Die kliënt dui aan dat hy 'n verbinding met die bediener wil vestig deur die eerste Syn -pakkie na die bediener te stuur. Hierdie pakkie bevat nie toepassingslaagdata nie (dit wil sê data gestuur). Op hierdie punt word die status van die kliënt as Synsent gemerk.
Wanneer 'n bediener 'n Syn -pakket van 'n kliënt ontvang, initialiseer dit sy eie serienommer (Server_ISN) ewekansig en plaas dit dan die nommer in die "Serienommer" -veld van die TCP -kop. Vervolgens voer die bediener CLINT_ISN + 1 in die veld "Erkenningsnommer" en stel beide Syn- en ACK-stukkies op 1. Uiteindelik stuur die bediener die pakkie na die kliënt, wat geen toepassingslaagdata bevat nie (en geen data vir die bediener om te stuur nie). Op die oomblik is die bediener in Syn-RCVD-toestand.
Sodra die kliënt die pakkie van die bediener ontvang het, moet hy die volgende optimalisering uitvoer om op die finale antwoordpakket te reageer: Eerstens stel die kliënt die ACK -stuk van die TCP -kop van die Antwoordpakket op 1; Tweedens betree die kliënt die waarde server_isn + 1 in die veld "Bevestig antwoordnommer"; Uiteindelik stuur die kliënt die pakkie na die bediener. Hierdie pakkie kan data van die kliënt na die bediener vervoer. Na voltooiing van hierdie bedrywighede, sal die kliënt die gevestigde toestand betree.
Sodra die bediener die antwoordpakket van die kliënt ontvang het, skakel dit ook na die gevestigde toestand.
Soos u kan sien uit die bogenoemde proses, word die derde handdruk toegelaat om data te dra wanneer u 'n drie-rigting-handdruk uitvoer, maar die eerste twee handdrukke is nie. Dit is 'n vraag wat gereeld in onderhoude gevra word. Sodra die drie-rigting-handdruk voltooi is, betree albei partye die gevestigde toestand, wat aandui dat die verbinding suksesvol gevestig is, op watter punt die kliënt en bediener kan begin om data na mekaar te stuur.
Waarom drie handdruk? Nie twee keer nie, vier keer?
Die algemene antwoord is: "Omdat die drie-rigting handdruk die vermoë om te ontvang en te stuur waarborg." Hierdie antwoord is korrek, maar dit is slegs die oppervlakrede, stel nie die hoofrede voor nie. In die volgende sal ek die redes vir die drievoudige handdruk van drie aspekte ontleed om ons begrip van hierdie kwessie te verdiep.
Die drie-rigting handdruk kan die initialisering van histories herhaalde verbindings effektief vermy (die hoofrede)
Die drie-rigting handdruk waarborg dat albei partye 'n betroubare aanvanklike volgorde-nommer ontvang het.
Die drie-rigting handdruk vermy die vermorsing van hulpbronne.
Rede 1: Vermy historiese duplikaat sluit aan
In 'n neutedop is die hoofrede vir die drie-rigting-handdruk om verwarring te voorkom wat veroorsaak word deur die ou duplikaatverbinding-inisialisering. In 'n komplekse netwerkomgewing word die oordrag van datapakkette nie altyd in ooreenstemming met die gespesifiseerde tyd aan die bestemmingsgasheer gestuur nie, en ou datapakkette kan eers by die bestemmingsgasheer kom weens netwerkopeenhopings en ander redes. Om dit te vermy, gebruik TCP 'n drie-rigting handdruk om die verbinding te vestig.
As 'n kliënt opeenvolgende Syn Connection -vestigingspakkies stuur, kan die volgende in situasies soos netwerkopeenhopings plaasvind:
1- Die ou Syn-pakkies kom voor die nuutste Syn-pakkies by die bediener aan.
2- Die bediener sal 'n Syn + ACK-pakkie op die kliënt beantwoord nadat hy die ou Syn-pakket ontvang het.
3- As die kliënt die Syn + Ack-pakket ontvang, bepaal dit dat die verbinding 'n historiese verbinding is (volgorde-nommer wat verval of time-out is) volgens sy eie konteks, en stuur dan die RST-pakkie na die bediener om die verbinding te aborteer.
Met 'n verband met twee hande, is daar geen manier om te bepaal of die huidige verband 'n historiese verband is nie. Die drie-rigting-handdruk stel die kliënt in staat om te bepaal of die huidige verbinding 'n historiese verband is wat gebaseer is op die konteks wanneer dit gereed is om die derde pakkie te stuur:
1- As dit 'n historiese verbinding is (volgorde-nommer verval of time-out), is die pakkie wat deur die derde handdruk gestuur is, 'n eerste pakkie om die historiese verbinding te aborteer.
2- As dit nie 'n historiese verbinding is nie, is die pakkie wat vir die derde keer gestuur is, 'n ACK-pakkie, en die twee kommunikasingspartye vestig die verbinding suksesvol.
Daarom is die hoofrede dat TCP die drie-rigting-handdruk gebruik, dat dit die verbinding initialiseer om historiese verbindings te voorkom.
Rede 2: Om die aanvanklike volgorde van beide partye te sinchroniseer
Beide kante van die TCP -protokol moet 'n volgorde -nommer handhaaf, wat 'n sleutelfaktor is om betroubare oordrag te verseker. Sekwensgetalle speel 'n belangrike rol in TCP -verbinding. Hulle doen die volgende:
Die ontvanger kan duplikaatdata uitskakel en die akkuraatheid van die data verseker.
Die ontvanger kan pakkies in die volgorde van die volgorde -nommer ontvang om die integriteit van die data te verseker.
● Die volgorde -nommer kan die datapakket identifiseer wat deur die ander party ontvang is, wat betroubare data -oordrag moontlik maak.
Na die oprigting van 'n TCP -verbinding stuur die kliënt dus Syn -pakkies met die aanvanklike volgorde -nommer en vereis die bediener om te antwoord met 'n ACK -pakket wat 'n suksesvolle ontvangs van die kliënt se Syn -pakkie aandui. Dan stuur die bediener die Syn -pakket met die aanvanklike volgorde -nommer aan die kliënt en wag dat die kliënt eens en vir altyd antwoord om te verseker dat die aanvanklike volgorde -nommers betroubaar gesinkroniseer word.
Alhoewel 'n vierrigting-handdruk ook moontlik is om die aanvanklike volgorde van beide partye betroubaar te sinchroniseer, kan die tweede en derde stappe in 'n enkele stap gekombineer word, wat lei tot 'n drie-rigting-handdruk. Die twee handdruk kan egter slegs waarborg dat die aanvanklike volgorde van een party suksesvol deur die ander party ontvang word, maar daar is geen waarborg dat die aanvanklike volgorde van beide partye bevestig kan word nie. Daarom is die drie-rigting handdruk die beste keuse om te neem om die stabiliteit en betroubaarheid van TCP-verbindings te verseker.
Rede 3: Vermy die vermorsing van hulpbronne
As daar slegs 'n "twee-handshake" is, wanneer die kliënt-SYN-versoek in die netwerk geblokkeer word, kan die kliënt nie die ACK-pakkie wat deur die bediener gestuur word, ontvang nie, dus sal die Syn weerstaan. Aangesien daar egter geen derde handdruk is nie, kan die bediener nie bepaal of die kliënt 'n ACK -erkenning ontvang het om die verbinding te bepaal nie. Daarom kan die bediener slegs proaktief 'n verbinding vestig nadat hy elke SYN -versoek ontvang het. Dit lei tot die volgende:
Vermorsing van hulpbronne: As die kliënt se SYN -versoek geblokkeer word, wat lei tot herhaalde oordrag van verskeie SYN -pakkies, sal die bediener verskeie oortollige ongeldige verbindings vestig nadat hy die versoek ontvang het. Dit lei tot 'n onnodige vermorsing van bedienersbronne.
Boodskapbehoud: Vanweë die gebrek aan 'n derde handdruk, het die bediener geen manier om te weet of die kliënt die ACK -erkenning korrek ontvang het om die verbinding te vestig nie. As gevolg hiervan, as boodskappe in die netwerk vassteek, sal die kliënt aanhou om SYN -versoeke oor en oor te stuur, wat veroorsaak dat die bediener voortdurend nuwe verbindings vestig. Dit sal die opeenhoping van die netwerk verhoog en die totale netwerkprestasie negatief beïnvloed.
Om die stabiliteit en betroubaarheid van die netwerkverbinding te verseker, gebruik TCP dus die drie-rigting-handdruk om die verbinding te bepaal om die voorkoms van hierdie probleme te vermy.
Opsomming
DieNetwerkpakketmakelaarTCP Connection-onderneming word gedoen met 'n drie-rigting handdruk. Tydens die drie-rigting handdruk stuur die kliënt eers 'n pakkie met die Syn-vlag na die bediener, wat aandui dat hy 'n verbinding wil vestig. Nadat hy die versoek van die kliënt ontvang het, antwoord die bediener 'n pakkie met Syn- en ACK -vlae aan die kliënt, wat aandui dat die verbindingsversoek aanvaar word, en stuur sy eie aanvanklike volgorde -nommer. Laastens antwoord die kliënt met 'n ACK -vlag op die bediener om aan te dui dat die verbinding suksesvol gevestig is. Dus is die twee partye in die gevestigde toestand en kan die data aan mekaar stuur.
Oor die algemeen is die drie-rigting-handdrukproses vir TCP Connection-onderneming ontwerp om verbindingstabiliteit en betroubaarheid te verseker, verwarring en vermorsing van hulpbronne oor historiese verbindings te vermy, en om te verseker dat albei partye data kan ontvang en stuur.
Postyd: Jan-08-2025