Configurazione di a cunnessione TCP
Quandu navighemu in u web, mandemu un email, o ghjucà un ghjocu in linea, spessu ùn pensemu micca à a cunnessione di a reta cumplessa daretu à questu. 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è.
Questu articulu discuterà in dettaglio u principiu, u prucessu è l'impurtanza di a stretta di manu à trè. Passu à passu, spiegheremu perchè hè necessariu a stretta di manu à trè, cumu assicura stabilità è affidabilità di a cunnessione, è quantu hè impurtante per u trasferimentu di dati. Cù una cunniscenza più profonda di a stretta di manu à trè, avemu da guadagnà una megliu comprensione di i miccanismi sottostanti di a cumunicazione in rete è una vista più chjara di l'affidabilità di e cunnessione TCP.
Prucessu di Handshake à trè vie TCP è Transizioni di u Statu
TCP hè un protokollu di trasportu orientatu à a cunnessione, chì esige stabilimentu di cunnessione prima di trasmissione di dati. Stu prucessu di stabilimentu di cunnessione hè fattu da una stretta di manu à trè.
Fighjemu un ochju più vicinu à i pacchetti TCP chì sò mandati in ogni cunnessione.
Inizialmente, u cliente è u servitore sò CHIUSI. Prima, u servitore ascolta attivamente in un portu è hè in u statu LISTEN, chì significa chì u servitore deve esse cuminciatu. Dopu, u cliente hè prontu per cumincià à accede à a pagina web. Hè bisognu di 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 stabilisce a pusizione di 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 strata di l'applicazione (vale à dì, dati mandati). À questu puntu, u statutu di u cliente hè marcatu cum'è SYN-SENT.
Quandu un servitore riceve un pacchettu SYN da un cliente, inizializza in modu aleatoriu u so propiu numeru di serie (server_isn) è poi mette quellu numeru in u campu "Numberu Serial" di l'intestazione TCP. In seguitu, u servitore inserisce client_isn + 1 in u campu "Acknowledgement number" è stabilisce i bits SYN è ACK à 1. Infine, u servitore manda u pacchettu à u cliente, chì ùn cuntene micca dati di l'applicazione (è micca dati per u servitore). per mandà). À questu tempu, u servitore hè in u statu SYN-RCVD.
Quandu u cliente riceve u pacchettu da u servitore, deve esse realizatu e seguenti ottimisazioni per risponde à u pacchettu di risposta finali: Prima, u cliente stabilisce 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 "Confirmà u numeru di risposta"; Infine, u cliente manda u pacchettu à u servitore. Stu pacchettu pò purtà dati da u cliente à u servitore. À a fine di sti operazioni, u cliente entre in u statu STABILI.
Una volta chì u servitore riceve u pacchettu di risposta da u cliente, cambia ancu à u statu ESTABLISHED.
Comu pudete vede da u prucessu di sopra, quandu eseguisce una stretta di manu à trè, a terza stretta di mani hè permessa di portà dati, ma i primi dui mani ùn sò micca. Questa hè una quistione chì hè spessu dumandata in entrevista. Una volta chì a stretta di manu à trè vie hè cumpleta, i dui partiti entranu in u statu ESTABLISHED, chì indicanu chì a cunnessione hè stata stabilita cù successu, à quale puntu u cliente è u servitore ponu cumincià à mandà dati à l'altru.
Perchè trè strette di mani? Micca duie volte, quattru volte?
A risposta cumuna hè, "Perchè a stretta di manu tri-way guarantisci a capacità di riceve è mandà". Sta risposta hè curretta, ma hè solu u mutivu di a superficia, ùn prupone micca u mutivu principale. In u seguitu, analizeraghju i motivi di a tripla stretta di manu da trè aspetti per approfondisce a nostra cunniscenza di sta questione.
A stretta di manu à trè vie pò evità efficacemente l'inizializazione di cunnessione storicamente ripetuta (u mutivu principale)
A stretta di manu à trè vie garantisce chì e duie parti anu ricevutu un numeru di sequenza iniziale affidabile.
A stretta di mano à trè direzioni evita di spreca risorse.
Reason 1: Evite Joins Storici Duplicati
In poche parole, u mutivu principalu di a stretta di manu à trè vie hè di evità a cunfusione causata da l'inizializazione di a cunnessione duplicata antica. In un ambiente di rete cumplessu, a trasmissione di pacchetti di dati ùn hè micca sempre mandata à l'ospite di destinazione in cunfurmità cù u tempu specificatu, è i vechji pacchetti di dati ponu ghjunghje à l'ospitu di destinazione prima per via di a congestione di a rete è altre ragioni. Per evitari questu, TCP usa una stretta di manu à trè vie per stabilisce a cunnessione.
Quandu un cliente manda parechji pacchetti di stabilimentu di cunnessione SYN in successione, in situazioni cum'è a congestione di a rete, pò accade ciò chì segue:
1- I vechji pacchetti SYN arrivanu à 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, è poi manda u pacchettu RST à u servitore per abortà a cunnessione.
Cù una cunnessione di dui mani, ù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 basatu annantu à u cuntestu quandu hè pronta à mandà u terzu pacchettu:
1- Se hè una cunnessione storica (numeru di sequenza scadutu o timeout), u pacchettu mandatu da u terzu handshake hè un pacchettu RST per abortà a cunnessione storica.
2- Se ùn hè micca una cunnessione storica, u pacchettu mandatu per a terza volta hè un pacchettu ACK, è i dui partiti cumunicanti stabiliscenu bè a cunnessione.
Per quessa, u mutivu principale chì TCP usa l'handshake tri-way hè chì inizializza a cunnessione per impedisce e cunnessione storichi.
Ragione 2: Per sincronizà i numeri di sequenza iniziale di i dui partiti
I dui lati di u protocolu TCP devenu mantene un numeru di sequenza, chì hè un fattore chjave per assicurà a trasmissione affidabile. I numeri di sequenza ghjucanu un rolu impurtante in e cunnessione TCP.
U ricevitore pò eliminà e dati duplicati è assicurà a precisione di e dati.
U receptore pò riceve pacchetti in l'ordine di u numeru di sequenza per assicurà l'integrità di e dati.
● U numeru di sequenza pò identificà u pacchettu di dati chì hè statu ricevutu da l'altra parte, chì permette a trasmissione di dati affidabile.
Dunque, dopu avè stabilitu una cunnessione TCP, u cliente manda pacchetti SYN cù u numeru di sequenza iniziale è esige chì u servitore risponda cù un pacchettu ACK chì indica una ricezione riescita di u pacchettu SYN di u cliente. Allora, 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 iniziale sò sincronizzati in modu affidabile.
Ancu s'ellu hè ancu pussibule di sincronizà in modu affidabile i numeri di sequenza iniziale di e duie parti, u sicondu è u terzu passu pò esse cumminati in un unicu passu, risultatu in una stretta di manu à trè. Tuttavia, i dui handshakes ponu guarantisci solu chì u numeru di sequenza iniziale di una parte hè ricevutu successu da l'altra parte, ma ùn ci hè micca garanzia chì u numeru di sequenza iniziale di i dui partiti pò esse cunfirmatu. Dunque, a stretta di manu à trè vie hè a megliu scelta per piglià per assicurà a stabilità è l'affidabilità di e cunnessione TCP.
Ragione 3: Evite di perdi risorse
S'ellu ci hè solu un "due handshake", quandu a dumanda SYN di u cliente hè bluccata in a reta, u cliente ùn pò micca riceve u pacchettu ACK mandatu da u servitore, perchè u SYN serà rimandatu. Tuttavia, postu chì ùn ci hè micca una terza stretta di mani, u servitore ùn pò micca stabilisce se u cliente hà ricevutu un ricunniscenza ACK per stabilisce a cunnessione. Dunque, u servitore pò stabilisce una cunnessione proattivamente solu dopu avè ricivutu ogni dumanda SYN. Questu porta à i seguenti:
Risparmi di risorse: Se a dumanda SYN di u cliente hè bluccata, risultatu in a trasmissione ripetuta di parechji pacchetti SYN, u servitore stabiliscerà parechje cunnessione invalide redundante dopu avè ricevutu a dumanda. Questu porta à una perdita inutile di risorse di u servitore.
Ritenimentu di u messagiu: A causa di a mancanza di una terza stretta di manu, u servitore ùn hà micca manera di sapè se u cliente hà ricevutu currettamente u ricunniscenza ACK per stabilisce a cunnessione. In cunsiquenza, se i missaghji si fermanu in a reta, u cliente continuarà à mandà richieste SYN una volta è più, facendu chì u servitore stabilisce constantemente novi cunnessione. Questu aumenterà a congestione di a rete è u ritardu è influenza negativamente u rendiment generale di a rete.
Per quessa, per assicurà a stabilità è l'affidabilità di a cunnessione di a rete, TCP usa a stretta di manu à trè vie per stabilisce a cunnessione per evità l'occurrence di sti prublemi.
Riassuntu
UNetwork Packet BrokerL'istituzione di a cunnessione TCP hè fatta cù una stretta di manu à trè. Durante a stretta di manu à trè, u cliente manda prima un pacchettu cù a bandiera SYN à u servitore, chì indica chì vole stabilisce una cunnessione. Dopu avè ricivutu a dumanda da u cliente, u servitore risponde à un pacchettu cù bandieri 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 bè. Cusì, i dui partiti sò in u statu ESTABLISHED è ponu cumincià à mandà dati à l'altri.
In generale, u prucessu di handshake tri-way per stabilimentu di cunnessione TCP hè pensatu per assicurà a stabilità di a cunnessione è l'affidabilità, evità a cunfusione è a perdita di risorse nantu à e cunnessione storichi, è assicura chì e duie parti sò capaci di riceve è di mandà dati.
Tempu di Postu: 08-Jan-2025