TCP -tilkoblingsoppsett
Når vi surfer på nettet, sender en e -post eller spiller et online spill, tenker vi ofte ikke på den komplekse nettverkstilkoblingen bak det. Imidlertid er det disse tilsynelatende små trinnene som sikrer stabil kommunikasjon mellom oss og serveren. Et av de viktigste trinnene er TCP-tilkoblingsoppsettet, og kjernen i dette er treveis håndtrykk.
Denne artikkelen vil diskutere prinsippet, prosessen og viktigheten av treveis håndtrykk i detalj. Trinn for trinn forklarer vi hvorfor treveis håndtrykk er nødvendig, hvordan det sikrer tilkoblingsstabilitet og pålitelighet, og hvor viktig det er for dataoverføring. Med en dypere forståelse av treveis håndtrykk, vil vi få en bedre forståelse av de underliggende mekanismene for nettverkskommunikasjon og et tydeligere syn på påliteligheten til TCP-tilkoblinger.
TCP treveis håndtrykkprosess og statlige overganger
TCP er en tilkoblingsorientert transportprotokoll, som krever tilkoblingsinstitusjon før dataoverføring. Denne tilkoblingsetableringsprosessen gjøres med et treveis håndtrykk.
La oss se nærmere på TCP -pakkene som sendes i hver forbindelse.
Opprinnelig er både klienten og serveren lukket. Først lytter serveren aktivt på en port og er i lyttestatus, noe som betyr at serveren må startes. Deretter er klienten klar til å begynne å få tilgang til websiden. Den må etablere en forbindelse med serveren. Formatet til den første tilkoblingspakken er som følger:
Når en klient setter i gang en tilkobling, genererer den et tilfeldig innledende sekvensnummer (klient_isn) og plasserer det i "sekvensnummer" -feltet til TCP -overskriften. Samtidig setter klienten synflaggposisjonen til 1 for å indikere at den utgående pakken er en SYN -pakke. Klienten indikerer at den ønsker å etablere en forbindelse med serveren ved å sende den første SYN -pakken til serveren. Denne pakken inneholder ikke applikasjonslagsdata (det vil si data sendt). På dette tidspunktet er statusen til klienten merket som syn-stent.
Når en server mottar en SYN -pakke fra en klient, initialiserer den tilfeldig sitt eget serienummer (server_isn) og legger deretter dette nummeret i "serienummer" -feltet til TCP -overskriften. Deretter oppgir serveren klient_isn + 1 i feltet "Akkikknummer" og setter både Syn og ACK BITS til 1. Til slutt sender serveren pakken til klienten, som ikke inneholder noen applikasjonslagsdata (og ingen data for serveren å sende). På dette tidspunktet er serveren i Syn-RCVD-tilstand.
Når klienten mottar pakken fra serveren, må den utføre følgende optimaliseringer for å svare på den endelige svarpakken: Først setter klienten ACK -biten til TCP -overskriften til svarpakken til 1; For det andre oppgir klienten verdien Server_isn + 1 i feltet "Bekreft svarnummer"; Til slutt sender klienten pakken til serveren. Denne pakken kan føre data fra klienten til serveren. Etter fullføring av disse operasjonene vil klienten gå inn i den etablerte staten.
Når serveren mottar svarpakken fra klienten, bytter den også til den etablerte tilstanden.
Som du ser fra prosessen ovenfor, når du utfører et treveis håndtrykk, får det tredje håndtrykket lov til å bære data, men de to første håndtrykkene er det ikke. Dette er et spørsmål som ofte stilles i intervjuer. Når treveis håndtrykk er fullført, kommer begge parter inn i den etablerte staten, noe som indikerer at forbindelsen er blitt etablert, på hvilket tidspunkt klienten og serveren kan begynne å sende data til hverandre.
Hvorfor tre håndtrykk? Ikke to ganger, fire ganger?
Det vanlige svaret er: "Fordi treveis håndtrykk garanterer muligheten til å motta og sende." Dette svaret er riktig, men det er bare overflateårsaken, fremfører ikke hovedårsaken. I det følgende vil jeg analysere årsakene til trippel håndtrykk fra tre aspekter for å utdype vår forståelse av dette problemet.
Treveis håndtrykk kan effektivt unngå initialisering av historisk gjentatte forbindelser (hovedårsaken)
Treveis håndtrykk garanterer at begge parter har mottatt et pålitelig innledende sekvensnummer.
Treveis håndtrykk unngår å kaste bort ressurser.
Årsak 1: Unngå historiske duplikatforbindelser
I et nøtteskall er hovedårsaken til treveis håndtrykk å unngå forvirring forårsaket av den gamle duplikatforbindelsesinitialiseringen. I et komplekst nettverksmiljø blir overføring av datapakker ikke alltid sendt til destinasjonsverten i samsvar med den angitte tiden, og gamle datapakker kan komme til destinasjonsverten først på grunn av nettverkstetting og andre grunner. For å unngå dette bruker TCP et treveis håndtrykk for å etablere forbindelsen.
Når en klient sender flere SYN -tilkoblingsetableringspakker i rekkefølge, i situasjoner som nettverkstang, kan følgende oppstå:
1- De gamle synpakkene ankommer serveren før de siste SYN-pakkene.
2- Serveren vil svare en Syn + ACK-pakke til klienten etter å ha mottatt den gamle SYN-pakken.
3- Når klienten mottar Syn + ACK-pakken, bestemmer den at tilkoblingen er en historisk forbindelse (sekvensnummer utløpt eller timeout) i henhold til sin egen kontekst, og deretter sender RST-pakken til serveren for å avbryte tilkoblingen.
Med en to-håndshake-forbindelse er det ingen måte å avgjøre om den nåværende forbindelsen er en historisk forbindelse. Treveis håndtrykk lar klienten avgjøre om den nåværende forbindelsen er en historisk forbindelse basert på konteksten når den er klar til å sende den tredje pakken:
1- Hvis det er en historisk forbindelse (sekvensnummer utløpt eller timeout), er pakken sendt av det tredje håndtrykket en første pakke for å avbryte den historiske forbindelsen.
2- Hvis det ikke er en historisk forbindelse, er pakken som sendes til tredje gang en ACK-pakke, og de to som kommuniserer partiene med hell etablerer forbindelsen.
Derfor er hovedårsaken til at TCP bruker treveis håndtrykk at den initialiserer forbindelsen for å forhindre historiske forbindelser.
Årsak 2: For å synkronisere de første sekvensnumrene til begge parter
Begge sider av TCP -protokollen må opprettholde et sekvensnummer, som er en nøkkelfaktor for å sikre pålitelig overføring. Sekvensnumre spiller en viktig rolle i TCP -tilkoblinger. De gjør følgende:
Mottakeren kan eliminere duplikatdata og sikre nøyaktigheten av dataene.
Mottakeren kan motta pakker i rekkefølgen på sekvensnummeret for å sikre integriteten til dataene.
● Sekvensnummeret kan identifisere datapakken som er mottatt av den andre parten, noe som muliggjør pålitelig dataoverføring.
Derfor, ved etablering av en TCP -tilkobling, sender klienten SYN -pakker med det opprinnelige sekvensnummeret og krever at serveren svarer med en ACK -pakke som indikerer vellykket mottak av klientens SYN -pakke. Deretter sender serveren SYN -pakken med det opprinnelige sekvensnummeret til klienten og venter på at klienten skal svare, en gang for alle, for å sikre at de første sekvensnumrene blir pålitelig synkronisert.
Selv om et fireveis håndtrykk også er mulig for å synkronisere det opprinnelige sekvensnummeret til begge parter pålitelig, kan andre og tredje trinn kombineres til et enkelt trinn, noe som resulterer i et treveis håndtrykk. Imidlertid kan de to håndtrykkene bare garantere at det opprinnelige sekvensnummeret til en part er vellykket mottatt av den andre parten, men det er ingen garanti for at det første sekvensnummeret til begge parter kan bekreftes. Derfor er treveis håndtrykk det beste valget å ta for å sikre stabiliteten og påliteligheten til TCP-tilkoblinger.
Årsak 3: Unngå å kaste bort ressurser
Hvis det bare er en "to-håndshake", når klient Syn-forespørselen er blokkert i nettverket, kan ikke klienten motta ACK-pakken sendt av serveren, så synet vil bli harme. Siden det ikke er noen tredje håndtrykk, kan ikke serveren avgjøre om klienten mottok en ACK -erkjennelse for å etablere forbindelsen. Derfor kan serveren bare proaktivt etablere en forbindelse etter å ha mottatt hver SYN -forespørsel. Dette fører til følgende:
Avfall av ressurser: Hvis klientens SYN -forespørsel er blokkert, noe som resulterer i gjentatt overføring av flere SYN -pakker, vil serveren etablere flere overflødige ugyldige tilkoblinger etter å ha mottatt forespørselen. Dette fører til unødvendig sløsing med serverressurser.
Meldingsoppbevaring: På grunn av mangelen på et tredje håndtrykk, har serveren ingen måte å vite om klienten riktig mottok ACK -anerkjennelsen for å etablere forbindelsen. Som et resultat, hvis meldinger blir sittende fast i nettverket, vil klienten fortsette å sende SYN -forespørsler om og om igjen, noe som får serveren til å konstant etablere nye tilkoblinger. Dette vil øke nettverkstang og forsinkelse og påvirke den samlede nettverksytelsen negativt.
Derfor, for å sikre stabiliteten og påliteligheten til nettverkstilkoblingen, bruker TCP treveis håndtrykk for å etablere forbindelsen for å unngå forekomsten av disse problemene.
Sammendrag
DeNettverkspakkemeglerTCP-tilkoblingsinstitusjon gjøres med et treveis håndtrykk. Under treveis håndtrykk sender klienten først en pakke med SYN-flagget til serveren, noe som indikerer at den ønsker å etablere en tilkobling. Etter å ha mottatt forespørselen fra klienten, svarer serveren en pakke med SYN- og ACK -flagg til klienten, noe som indikerer at tilkoblingsforespørselen er akseptert, og sender sitt eget innledende sekvensnummer. Til slutt svarer klienten med et ACK -flagg til serveren for å indikere at forbindelsen er blitt etablert. Dermed er de to partiene i den etablerte staten og kan begynne å sende data til hverandre.
Generelt er treveis håndtrykkprosess for TCP-tilkoblingsetablering designet for å sikre tilkoblingsstabilitet og pålitelighet, unngå forvirring og sløsing med ressurser over historiske forbindelser, og sikre at begge parter er i stand til å motta og sende data.
Post Time: Jan-08-2025