Cunfigurazione di cunnessione TCP
Quandu navighemu in u web, mandemu un email, o ghjuchemu à un ghjocu in linea, spessu ùn pensemu micca à a cunnessione di rete cumplessa daretu à ella. Tuttavia, sò questi passi apparentemente chjuchi chì assicuranu una cumunicazione stabile trà noi è u servitore. Unu di i passi più impurtanti hè a cunfigurazione di a cunnessione TCP, è u core di questu hè a stretta di manu à trè vie.
Questu articulu discuterà in dettagliu u principiu, u prucessu è l'impurtanza di a stretta di manu à trè vie. Passu à passu, spiegheremu perchè hè necessaria a stretta di manu à trè vie, cumu assicura a stabilità è l'affidabilità di a cunnessione, è quantu hè impurtante per u trasferimentu di dati. Cù una cunniscenza più profonda di a stretta di manu à trè vie, utteneremu una megliu cunniscenza di i meccanismi sottustanti di a cumunicazione di rete è una visione più chjara di l'affidabilità di e cunnessione TCP.
Prucessu di handshake à trè vie TCP è transizioni di statu
TCP hè un protocolu di trasportu orientatu à a cunnessione, chì richiede a creazione di una cunnessione prima di a trasmissione di dati. Stu prucessu di creazione di cunnessione hè realizatu da una stretta di manu à trè vie.
Demu un'ochjata più da vicinu à i pacchetti TCP chì sò mandati in ogni cunnessione.
Inizialmente, u cliente è u servitore sò CHIUSI. Prima, u servitore ascolta attivamente un portu è hè in u statu LISTEN, ciò chì significa chì u servitore deve esse avviatu. Dopu, u cliente hè prontu à accede à a pagina web. Deve stabilisce una cunnessione cù u servitore. U furmatu di u primu pacchettu di cunnessione hè u seguente:
Quandu un cliente inizia una cunnessione, genera un numeru di sequenza iniziale aleatoriu (client_isn) è u mette in u campu "Numeru di sequenza" di l'intestazione TCP. À u listessu tempu, u cliente mette a pusizione di a bandiera SYN à 1 per indicà chì u pacchettu in uscita hè un pacchettu SYN. U cliente indica chì vole stabilisce una cunnessione cù u servitore mandendu u primu pacchettu SYN à u servitore. Stu pacchettu ùn cuntene micca dati di u livellu di l'applicazione (vale à dì, dati inviati). À questu puntu, u statutu di u cliente hè marcatu cum'è SYN-SENT.
Quandu un servitore riceve un pacchettu SYN da un cliente, inizializeghja à casu u so propiu numeru di serie (server_isn) è dopu mette quellu numeru in u campu "Numeru di serie" di l'intestazione TCP. Dopu, u servitore inserisce client_isn + 1 in u campu "Numeru di ricunniscenza" è mette i bit SYN è ACK à 1. Infine, u servitore manda u pacchettu à u cliente, chì ùn cuntene micca dati di livellu d'applicazione (è nisun datu chì u servitore pò mandà). In questu mumentu, u servitore hè in statu SYN-RCVD.
Una volta chì u cliente riceve u pacchettu da u servitore, deve fà l'ottimisazioni seguenti per risponde à u pacchettu di risposta finale: Prima, u cliente imposta u bit ACK di l'intestazione TCP di u pacchettu di risposta à 1; Siconda, u cliente inserisce u valore server_isn + 1 in u campu "Cunfirmà u numeru di risposta"; Infine, u cliente manda u pacchettu à u servitore. Stu pacchettu pò purtà dati da u cliente à u servitore. Dopu à u cumpletamentu di queste operazioni, u cliente entrerà in u statu ESTABLISHED.
Una volta chì u servitore riceve u pacchettu di risposta da u cliente, passa ancu à u statu ESTABLISHED.
Cum'è si pò vede da u prucessu sopra, quandu si esegue una stretta di manu à trè vie, a terza stretta di manu hè autorizata à trasmette dati, ma e prime duie strette di manu ùn sò micca. Questa hè una quistione chì hè spessu posta in l'interviste. Una volta chì a stretta di manu à trè hè cumpleta, e duie parti entranu in u statu ESTABLISHED, chì indica chì a cunnessione hè stata stabilita cù successu, à quellu puntu u cliente è u servitore ponu cumincià à mandà dati trà di elli.
Perchè trè strette di manu ? Micca duie volte, quattru volte ?
A risposta cumuna hè: "Perchè a stretta di manu à trè vie garantisce a capacità di riceve è mandà". Sta risposta hè curretta, ma hè solu a ragione superficiale, ùn mette micca in risaltu a ragione principale. In seguitu, analizeraghju e ragioni di a stretta di manu tripla da trè aspetti per approfonde a nostra capiscitura di stu prublema.
A stretta di manu à trè vie pò evità efficacemente l'inizializazione di cunnessione ripetute storicamente (a ragione principale)
A stretta di manu à trè vie garantisce chì entrambe e parti anu ricevutu un numeru di sequenza iniziale affidabile.
A stretta di manu à trè vie evita u sprecu di risorse.
Ragione 1: Evitate l'unioni duplicate storiche
In poche parole, a ragione principale di a stretta di manu à trè vie hè di evità a cunfusione causata da a vechja inizializazione di cunnessione duplicata. In un ambiente di rete cumplessu, a trasmissione di pacchetti di dati ùn hè micca sempre mandata à l'host di destinazione in cunfurmità cù u tempu specificatu, è i vechji pacchetti di dati ponu ghjunghje prima à l'host di destinazione per via di a congestione di a rete è altre ragioni. Per evità questu, TCP usa una stretta di manu à trè vie per stabilisce a cunnessione.
Quandu un cliente manda parechji pacchetti di creazione di cunnessione SYN in successione, in situazioni cum'è a congestione di a rete, pò accade ciò chì segue:
1- I vechji pacchetti SYN ghjunghjenu à u servitore prima di l'ultimi pacchetti SYN.
2- U servitore risponderà un pacchettu SYN + ACK à u cliente dopu avè ricevutu u vechju pacchettu SYN.
3- Quandu u cliente riceve u pacchettu SYN + ACK, determina chì a cunnessione hè una cunnessione storica (numeru di sequenza scadutu o timeout) secondu u so propiu cuntestu, è dopu manda u pacchettu RST à u servitore per interrompe a cunnessione.
Cù una cunnessione à dui handshake, ùn ci hè manera di determinà se a cunnessione attuale hè una cunnessione storica. L'handshake à trè vie permette à u cliente di determinà se a cunnessione attuale hè una cunnessione storica basata annantu à u cuntestu quandu hè prontu à mandà u terzu pacchettu:
1- S'ellu si tratta di una cunnessione storica (u numeru di sequenza hè scadutu o hà scadutu u timeout), u pacchettu mandatu da a terza stretta di manu hè un pacchettu RST per abbandunà a cunnessione storica.
2- S'ellu ùn hè micca una cunnessione storica, u pacchettu mandatu per a terza volta hè un pacchettu ACK, è e duie parti cumunicanti stabiliscenu cù successu a cunnessione.
Dunque, a ragione principale per a quale TCP usa a stretta di manu à trè vie hè chì inizializza a cunnessione per impedisce cunnessione storiche.
Ragione 2: Per sincronizà i numeri di sequenza iniziali di e duie parti
E duie parte di u protocolu TCP devenu mantene un numeru di sequenza, chì hè un fattore chjave per assicurà una trasmissione affidabile. I numeri di sequenza ghjocanu un rolu impurtante in e cunnessione TCP. Facenu u seguente:
U ricevitore pò eliminà i dati duplicati è assicurà l'accuratezza di i dati.
U ricevitore pò riceve pacchetti in l'ordine di u numeru di sequenza per assicurà l'integrità di i dati.
● U numeru di sequenza pò identificà u pacchettu di dati chì hè statu ricevutu da l'altra parte, permettendu una trasmissione di dati affidabile.
Dunque, dopu avè stabilitu una cunnessione TCP, u cliente manda pacchetti SYN cù u numeru di sequenza iniziale è richiede à u servitore di risponde cù un pacchettu ACK chì indica a ricezione riescita di u pacchettu SYN di u cliente. Dopu, u servitore manda u pacchettu SYN cù u numeru di sequenza iniziale à u cliente è aspetta chì u cliente risponda, una volta per tutte, per assicurà chì i numeri di sequenza iniziali sianu sincronizati in modu affidabile.
Ancu s'è una stretta di manu à quattru vie hè ancu pussibule per sincronizà in modu affidabile i numeri di sequenza iniziali di e duie parti, u secondu è u terzu passu ponu esse cumminati in un solu passu, risultendu in una stretta di manu à trè vie. Tuttavia, e duie strette di manu ponu solu guarantisce chì u numeru di sequenza iniziale di una parte hè ricevutu cù successu da l'altra parte, ma ùn ci hè nisuna garanzia chì u numeru di sequenza iniziale di e duie parti pò esse cunfirmatu. Dunque, a stretta di manu à trè vie hè a megliu scelta da fà per assicurà a stabilità è l'affidabilità di e cunnessione TCP.
Ragione 3: Evitate di sprecà risorse
S'ellu ci hè solu una "duppia stretta di manu", quandu a dumanda SYN di u cliente hè bluccata in a rete, u cliente ùn pò micca riceve u pacchettu ACK mandatu da u servitore, dunque u SYN serà rinviatu. Tuttavia, postu chì ùn ci hè micca una terza stretta di manu, u servitore ùn pò micca determinà s'ellu u cliente hà ricevutu un ricunniscenza ACK per stabilisce a cunnessione. Dunque, u servitore pò solu stabilisce una cunnessione in modu proattivu dopu avè ricevutu ogni dumanda SYN. Questu porta à ciò chì seguita:
Sprecu di risorse: Se a dumanda SYN di u cliente hè bluccata, risultendu in a trasmissione ripetuta di parechji pacchetti SYN, u servitore stabilirà parechje cunnessione invalide ridondanti dopu avè ricevutu a dumanda. Questu porta à un sprecu inutile di risorse di u servitore.
Ritenzione di i missaghji: Per via di a mancanza di una terza stretta di manu, u servitore ùn hà manera di sapè se u cliente hà ricevutu currettamente l'accunsentu ACK per stabilisce a cunnessione. Di cunsiguenza, se i missaghji si bloccanu in a rete, u cliente continuerà à mandà richieste SYN ripetutamente, ciò chì farà chì u servitore stabilisca constantemente nuove cunnessione. Questu aumenterà a congestione è u ritardu di a rete è influenzerà negativamente e prestazioni generali di a rete.
Dunque, per assicurà a stabilità è l'affidabilità di a cunnessione di rete, TCP usa a stretta di manu à trè vie per stabilisce a cunnessione per evità l'occorrenza di sti prublemi.
Riassuntu
UBroker di Pacchetti di ReteA creazione di una cunnessione TCP si face cù una stretta di manu à trè vie. Durante a stretta di manu à trè vie, u cliente manda prima un pacchettu cù a bandiera SYN à u servitore, chì indica ch'ellu vole stabilisce una cunnessione. Dopu avè ricevutu a dumanda da u cliente, u servitore risponde un pacchettu cù e bandiere SYN è ACK à u cliente, chì indica chì a dumanda di cunnessione hè accettata, è manda u so propiu numeru di sequenza iniziale. Infine, u cliente risponde cù una bandiera ACK à u servitore per indicà chì a cunnessione hè stata stabilita cù successu. Cusì, e duie parti sò in u statu STABILITU è ponu cumincià à mandà dati l'una à l'altra.
In generale, u prucessu di handshake à trè vie per a creazione di cunnessione TCP hè cuncipitu per assicurà a stabilità è l'affidabilità di a cunnessione, evità a cunfusione è u sprecu di risorse nantu à e cunnessione storiche, è assicurà chì e duie parti sianu capaci di riceve è mandà dati.
Data di publicazione: 8 di ghjennaghju di u 2025