Configuració de la connexió TCP
Quan naveguem per la web, enviem un correu electrònic o juguem a un joc en línia, sovint no pensem en la complexa connexió de xarxa que hi ha darrere. Tanmateix, aquests passos aparentment petits són els que garanteixen una comunicació estable entre nosaltres i el servidor. Un dels passos més importants és la configuració de la connexió TCP, i el nucli d'això és l'enllaç de tres direccions.
En aquest article es tractarà detalladament el principi, el procés i la importància de l'encaixada de mans a tres. Pas a pas, explicarem per què cal l'enllaç de tres direccions, com garanteix l'estabilitat i la fiabilitat de la connexió i la importància que és per a la transferència de dades. Amb una comprensió més profunda de l'encaix de mans a tres direccions, aconseguirem una millor comprensió dels mecanismes subjacents de la comunicació de xarxa i una visió més clara de la fiabilitat de les connexions TCP.
Procés d'encaix en tres vies TCP i transicions d'estat
TCP és un protocol de transport orientat a la connexió, que requereix l'establiment de la connexió abans de la transmissió de dades. Aquest procés d'establiment de connexió es realitza mitjançant una encaixada de mans a tres direccions.
Fem una ullada més de prop als paquets TCP que s'envien a cada connexió.
Inicialment, tant el client com el servidor estan TANCATS. Primer, el servidor escolta activament en un port i es troba en l'estat LISTEN, el que significa que el servidor s'ha d'iniciar. A continuació, el client està preparat per començar a accedir a la pàgina web. Cal establir una connexió amb el servidor. El format del primer paquet de connexió és el següent:
Quan un client inicia una connexió, genera un número de seqüència inicial aleatori (client_isn) i el col·loca al camp "Número de seqüència" de la capçalera TCP. Al mateix temps, el client estableix la posició del senyalador SYN a 1 per indicar que el paquet de sortida és un paquet SYN. El client indica que vol establir una connexió amb el servidor enviant el primer paquet SYN al servidor. Aquest paquet no conté dades de la capa d'aplicació (és a dir, dades enviades). En aquest punt, l'estat del client es marca com a SYN-SENT.
Quan un servidor rep un paquet SYN d'un client, inicialitza aleatòriament el seu propi número de sèrie (server_isn) i després posa aquest número al camp "Número de sèrie" de la capçalera TCP. A continuació, el servidor introdueix client_isn + 1 al camp "Número de reconeixement" i estableix els bits SYN i ACK a 1. Finalment, el servidor envia el paquet al client, que no conté dades de la capa d'aplicació (ni cap dada per al servidor). enviar). En aquest moment, el servidor es troba en estat SYN-RCVD.
Un cop el client rep el paquet del servidor, ha de realitzar les optimitzacions següents per respondre al paquet de resposta final: Primer, el client estableix el bit ACK de la capçalera TCP del paquet de resposta a 1; En segon lloc, el client introdueix el valor server_isn + 1 al camp "Confirmar el número de resposta"; Finalment, el client envia el paquet al servidor. Aquest paquet pot transportar dades del client al servidor. Un cop finalitzades aquestes operacions, el client passarà a l'estat ESTABLECIT.
Un cop el servidor rep el paquet de resposta del client, també passa a l'estat ESTABLISHED.
Com podeu veure en el procés anterior, quan es realitza una encaixada de mans a tres direccions, la tercera encaixada de mans pot portar dades, però les dues primeres encaixades de mans no. Aquesta és una pregunta que es fa sovint a les entrevistes. Un cop finalitzada la connexió de tres direccions, ambdues parts entren a l'estat ESTABLISHED, indicant que la connexió s'ha establert correctament, moment en què el client i el servidor poden començar a enviar-se dades entre ells.
Per què tres encaixades de mans? No dues, quatre vegades?
La resposta habitual és: "Perquè l'encaixada de mans a tres direccions garanteix la capacitat de rebre i enviar". Aquesta resposta és correcta, però només és la raó superficial, no exposa la raó principal. A continuació, analitzaré les raons de la triple encaixada de mans des de tres aspectes per aprofundir en la nostra comprensió d'aquest tema.
L'encaixada de mans a tres direccions pot evitar eficaçment la inicialització de connexions repetides històricament (la raó principal)
L'encaix de mans a tres direccions garanteix que ambdues parts han rebut un número de seqüència inicial fiable.
L'encaixada de mans a tres direccions evita malgastar recursos.
Raó 1: eviteu les unions duplicades històriques
En poques paraules, el motiu principal de l'encaix de mans a tres direccions és evitar la confusió causada per l'antiga inicialització de la connexió duplicada. En un entorn de xarxa complex, la transmissió de paquets de dades no sempre s'envia a l'amfitrió de destinació d'acord amb el temps especificat, i els paquets de dades antics poden arribar primer a l'amfitrió de destinació a causa de la congestió de la xarxa i altres motius. Per evitar-ho, TCP utilitza una encaixada de mans de tres direccions per establir la connexió.
Quan un client envia diversos paquets d'establiment de connexió SYN en successió, en situacions com ara la congestió de la xarxa, es pot produir el següent:
1- Els antics paquets SYN arriben al servidor abans que els últims paquets SYN.
2- El servidor respondrà un paquet SYN + ACK al client després de rebre l'antic paquet SYN.
3- Quan el client rep el paquet SYN + ACK, determina que la connexió és una connexió històrica (número de seqüència caducat o temps d'espera) segons el seu propi context, i després envia el paquet RST al servidor per avortar la connexió.
Amb una connexió de dues encaixades de mans, no hi ha manera de determinar si la connexió actual és una connexió històrica. La connexió de tres vies permet al client determinar si la connexió actual és una connexió històrica en funció del context quan està preparat per enviar el tercer paquet:
1- Si es tracta d'una connexió històrica (número de seqüència caducat o temps d'espera), el paquet enviat per la tercera encaixada és un paquet RST per avortar la connexió històrica.
2- Si no és una connexió històrica, el paquet enviat per tercera vegada és un paquet ACK i les dues parts que es comuniquen estableixen correctament la connexió.
Per tant, el principal motiu pel qual TCP utilitza l'enllaç de tres vies és que inicialitza la connexió per evitar connexions històriques.
Motiu 2: per sincronitzar els números de seqüència inicials d'ambdues parts
Els dos costats del protocol TCP han de mantenir un número de seqüència, que és un factor clau per garantir una transmissió fiable. Els números de seqüència tenen un paper important en les connexions TCP. Fan el següent:
El receptor pot eliminar dades duplicades i garantir la precisió de les dades.
El receptor pot rebre paquets en l'ordre del número de seqüència per garantir la integritat de les dades.
● El número de seqüència pot identificar el paquet de dades que ha rebut l'altra part, permetent una transmissió de dades fiable.
Per tant, en establir una connexió TCP, el client envia paquets SYN amb el número de seqüència inicial i requereix que el servidor respongui amb un paquet ACK que indiqui la recepció correcta del paquet SYN del client. Aleshores, el servidor envia el paquet SYN amb el número de seqüència inicial al client i espera que el client respongui, d'una vegada per totes, per assegurar-se que els números de seqüència inicial estan sincronitzats de manera fiable.
Tot i que una encaixada de mans de quatre direccions també és possible per sincronitzar de manera fiable els números de seqüència inicial d'ambdues parts, el segon i el tercer pas es poden combinar en un sol pas, donant lloc a una encaixada de mans de tres direccions. Tanmateix, les dues encaixades de mans només poden garantir que l'altra part rep correctament el número de seqüència inicial d'una part, però no hi ha cap garantia que es pugui confirmar el número de seqüència inicial d'ambdues parts. Per tant, l'enllaç de tres direccions és la millor opció per garantir l'estabilitat i la fiabilitat de les connexions TCP.
Raó 3: Eviteu el malbaratament de recursos
Si només hi ha una "encaixada de dues mans", quan la sol·licitud SYN del client està bloquejada a la xarxa, el client no pot rebre el paquet ACK enviat pel servidor, de manera que el SYN es tornarà a enviar. Tanmateix, com que no hi ha una tercera encaixada de mans, el servidor no pot determinar si el client ha rebut un reconeixement ACK per establir la connexió. Per tant, el servidor només pot establir una connexió de manera proactiva després de rebre cada sol·licitud SYN. Això condueix al següent:
Malbaratament de recursos: si la sol·licitud SYN del client està bloquejada, el que resulta en la transmissió repetida de diversos paquets SYN, el servidor establirà múltiples connexions redundants no vàlides després de rebre la sol·licitud. Això comporta un malbaratament innecessari de recursos del servidor.
Retenció de missatges: a causa de la manca d'una tercera encaixada de mans, el servidor no té manera de saber si el client ha rebut correctament el reconeixement ACK per establir la connexió. Com a resultat, si els missatges s'enganxen a la xarxa, el client seguirà enviant sol·licituds SYN una i altra vegada, fent que el servidor estableixi noves connexions constantment. Això augmentarà la congestió i el retard de la xarxa i afectarà negativament el rendiment general de la xarxa.
Per tant, per tal de garantir l'estabilitat i la fiabilitat de la connexió de xarxa, TCP utilitza l'enllaç de tres direccions per establir la connexió per evitar que es produeixin aquests problemes.
Resum
ElAgent de paquets de xarxaL'establiment de la connexió TCP es fa amb una encaixada de mans a tres direccions. Durant l'enllaç a tres bandes, el client envia primer un paquet amb el senyalador SYN al servidor, indicant que vol establir una connexió. Després de rebre la sol·licitud del client, el servidor respon un paquet amb senyals SYN i ACK al client, indicant que s'accepta la sol·licitud de connexió i envia el seu propi número de seqüència inicial. Finalment, el client respon amb un indicador ACK al servidor per indicar que la connexió s'ha establert correctament. Així, les dues parts es troben en l'estat ESTABLISHED i poden començar a enviar-se dades entre elles.
En general, el procés d'enllaç de tres vies per a l'establiment de la connexió TCP està dissenyat per garantir l'estabilitat i la fiabilitat de la connexió, evitar la confusió i el malbaratament de recursos en connexions històriques i garantir que ambdues parts puguin rebre i enviar dades.
Hora de publicació: 08-gen-2025