Misteri Kunci Konéksi TCP Broker Paket Jaringan: Ngabongkar kabutuhan Triple Handshake

Setelan Konéksi TCP
Nalika urang ngotéktak wéb, ngirim email, atanapi maén gim online, urang sering henteu mikirkeun sambungan jaringan anu rumit di tukangeunana. Nanging, léngkah-léngkah anu sigana alit ieu anu mastikeun komunikasi anu stabil antara urang sareng server. Salah sahiji léngkah anu paling penting nyaéta setelan sambungan TCP, sareng inti tina ieu nyaéta jabat tangan tilu arah.

Artikel ieu bakal ngabahas prinsip, prosés, sareng pentingna jabat tangan tilu arah sacara rinci. Léngkah-léngkahna, urang bakal ngajelaskeun kunaon jabat tangan tilu arah diperyogikeun, kumaha éta mastikeun stabilitas sareng reliabilitas sambungan, sareng sabaraha pentingna pikeun transfer data. Kalayan pamahaman anu langkung jero ngeunaan jabat tangan tilu arah, urang bakal kéngingkeun pamahaman anu langkung saé ngeunaan mékanisme anu mendasari komunikasi jaringan sareng pandangan anu langkung jelas ngeunaan reliabilitas sambungan TCP.

Prosés Jabat Tangan Tilu Arah TCP sareng Transisi Kaayaan
TCP nyaéta protokol transportasi anu berorientasi kana sambungan, anu meryogikeun pangwangunan sambungan sateuacan pangiriman data. Prosés pangwangunan sambungan ieu dilakukeun ku jabat tangan tilu arah.

 Jabat tangan tilu arah TCP

Hayu urang tingali langkung caket kana pakét TCP anu dikirim dina unggal sambungan.

Mimitina, klien sareng server DITUTUP. Mimitina, server aktip ngadangukeun dina port sareng aya dina kaayaan LISTEN, anu hartosna server kedah dihurungkeun. Salajengna, klien siap pikeun ngamimitian ngaksés halaman wéb. Éta kedah ngadamel sambungan sareng server. Format pakét sambungan anu munggaran nyaéta sapertos kieu:

 Pakét SYN

Nalika klien ngamimitian sambungan, éta ngahasilkeun nomer runtuyan awal acak (client_isn) sareng nempatkeun éta dina kolom "Nomer runtuyan" dina header TCP. Dina waktos anu sami, klien nyetel posisi bendera SYN ka 1 pikeun nunjukkeun yén pakét anu kaluar mangrupikeun pakét SYN. ​​Klien nunjukkeun yén éta hoyong ngadamel sambungan sareng server ku ngirim pakét SYN munggaran ka server. Pakét ieu henteu ngandung data lapisan aplikasi (nyaéta, data anu dikirim). Dina titik ieu, status klien ditandaan salaku SYN-SENT.

Pakét SYN+ACK

Nalika server nampi pakét SYN ti klien, éta sacara acak ngainisialisasi nomer séri na sorangan (server_isn) teras nempatkeun nomer éta dina kolom "Nomer séri" dina header TCP. Salajengna, server ngalebetkeun client_isn + 1 dina kolom "Nomer pangakuan" sareng nyetel bit SYN sareng ACK ka 1. Pamungkas, server ngirim pakét ka klien, anu henteu ngandung data lapisan aplikasi (sareng henteu aya data pikeun dikirim ku server). Dina waktos ieu, server aya dina kaayaan SYN-RCVD.

Pakét ACK

Sakali klien nampi pakét ti server, éta kedah ngalakukeun optimasi ieu pikeun ngaréspon pakét balesan ahir: Mimiti, klien nyetel bit ACK tina header TCP pakét balesan ka 1; Kadua, klien ngasupkeun nilai server_isn + 1 dina kolom "Konfirmasi nomer jawaban"; Pamungkas, klien ngirim pakét ka server. Pakét ieu tiasa mawa data ti klien ka server. Saatos réngsé operasi ieu, klien bakal asup kana kaayaan ESTABLISHED.

Sakali server nampi pakét balesan ti klien, éta ogé bakal ngalih ka kaayaan ESTABLISHED.

Sakumaha anjeun tiasa tingali tina prosés di luhur, nalika ngalakukeun jabat tangan tilu arah, jabat tangan katilu diidinan pikeun mawa data, tapi dua jabat tangan anu munggaran henteu. Ieu mangrupikeun patarosan anu sering ditanyakeun dina wawancara. Sakali jabat tangan tilu arah réngsé, kadua pihak lebet kana kaayaan ESTABLISHED, nunjukkeun yén sambungan parantos hasil didamel, dina titik ieu klien sareng server tiasa ngamimitian ngirim data ka silih.

Naha sasalaman tilu kali? Lain dua kali, opat kali?
Jawaban anu umumna nyaéta, "Kusabab jabat tangan tilu arah ngajamin kamampuan pikeun nampi sareng ngirim." Jawaban ieu leres, tapi éta ngan ukur alesan anu katingali, henteu ngajukeun alesan utama. Di handap ieu, kuring bakal nganalisis alesan jabat tangan tilu kali tina tilu aspék pikeun ngajerokeun pamahaman urang ngeunaan masalah ieu.

Jabat tangan tilu arah sacara efektif tiasa nyingkahan inisialisasi sambungan anu diulang sacara historis (alesan utama)
Jabat tangan tilu arah ngajamin yén kadua pihak parantos nampi nomer runtuyan awal anu tiasa dipercaya.
Sasalaman tilu arah nyingkahan runtah sumber daya.

Alesan 1: Hindarkeun Gabungan Duplikat Historis
Singkatna, alesan utama jabat tangan tilu arah nyaéta pikeun nyingkahan kabingungan anu disababkeun ku inisialisasi sambungan duplikat anu lami. Dina lingkungan jaringan anu rumit, pangiriman pakét data henteu salawasna dikirim ka host tujuan saluyu sareng waktos anu ditangtukeun, sareng pakét data lami tiasa sumping ka host tujuan heula kusabab panyumbatan jaringan sareng alesan sanésna. Pikeun nyingkahan ieu, TCP nganggo jabat tangan tilu arah pikeun ngadegkeun sambungan.

jabat tangan tilu arah nyingkahan sambungan duplikat sajarah

Nalika klien ngirim sababaraha pakét ngadegkeun sambungan SYN sacara berturut-turut, dina kaayaan sapertos panyumbatan jaringan, hal-hal ieu tiasa kajantenan:

1- Paket SYN anu lami sumping ka server sateuacan paket SYN anu pangénggalna.
2- Server bakal ngawaler pakét SYN + ACK ka klien saatos nampi pakét SYN anu lami.
3- Nalika klien nampi pakét SYN + ACK, éta nangtukeun yén sambungan éta mangrupikeun sambungan historis (nomer runtuyan kadaluwarsa atanapi timeout) numutkeun kontéksna sorangan, teras ngirim pakét RST ka server pikeun ngeureunkeun sambungan éta.

Ku sambungan dua jabat tangan, teu aya cara pikeun nangtukeun naha sambungan ayeuna mangrupikeun sambungan historis. Jabat tangan tilu arah ngamungkinkeun klien pikeun nangtukeun naha sambungan ayeuna mangrupikeun sambungan historis dumasar kana kontéks nalika siap ngirim pakét katilu:

1- Upami éta mangrupikeun sambungan historis (nomer runtuyan parantos kadaluwarsa atanapi timeout), pakét anu dikirim ku jabat tangan katilu nyaéta pakét RST pikeun ngabatalkeun sambungan historis.
2- Upami éta sanés sambungan historis, pakét anu dikirim pikeun katilu kalina nyaéta pakét ACK, sareng dua pihak anu komunikasi hasil ngadegkeun sambungan.

Ku kituna, alesan utama TCP nganggo jabat tangan tilu arah nyaéta éta ngainisialisasi sambungan pikeun nyegah sambungan historis.

Alesan 2: Pikeun nyingkronkeun nomer runtuyan awal kadua pihak
Kadua sisi protokol TCP kedah ngajaga nomer runtuyan, anu mangrupikeun faktor konci pikeun mastikeun transmisi anu tiasa dipercaya. Nomer runtuyan maénkeun peran penting dina sambungan TCP. Éta ngalakukeun hal-hal ieu:

Panarima tiasa ngaleungitkeun data anu duplikat sareng mastikeun akurasi data.

Panarima tiasa nampi pakét dina urutan nomer runtuyan pikeun mastikeun integritas data.

● Nomer runtuyan tiasa ngaidentipikasi pakét data anu parantos ditampi ku pihak anu sanés, ngamungkinkeun transmisi data anu tiasa dipercaya.

Ku kituna, saatos ngadegkeun sambungan TCP, klien ngirim pakét SYN kalayan nomer runtuyan awal sareng meryogikeun server pikeun ngawaler nganggo pakét ACK anu nunjukkeun panampi pakét SYN klien anu suksés. Teras, server ngirim pakét SYN kalayan nomer runtuyan awal ka klien sareng ngantosan klien ngawaler, sakali sareng sadayana, pikeun mastikeun yén nomer runtuyan awal disinkronkeun sacara akurat.

Sinkronkeun nomer seri awal kadua pihak

Sanaos jabat tangan opat arah ogé dimungkinkeun pikeun sinkronisasi nomer runtuyan awal kadua pihak sacara akurat, léngkah kadua sareng katilu tiasa digabungkeun kana hiji léngkah, anu ngahasilkeun jabat tangan tilu arah. Nanging, dua jabat tangan ngan ukur tiasa ngajamin yén nomer runtuyan awal hiji pihak hasil ditampi ku pihak anu sanés, tapi teu aya jaminan yén nomer runtuyan awal kadua pihak tiasa dikonfirmasi. Ku alatan éta, jabat tangan tilu arah mangrupikeun pilihan anu pangsaéna pikeun dilaksanakeun pikeun mastikeun stabilitas sareng reliabilitas sambungan TCP.

Alesan 3: Hindarkeun Miceun Sumber Daya
Upami ngan ukur aya "dua jabat tangan", nalika pamundut SYN klien diblokir dina jaringan, klien henteu tiasa nampi pakét ACK anu dikirim ku server, janten SYN bakal dikirim deui. Nanging, kumargi teu aya jabat tangan katilu, server henteu tiasa nangtoskeun naha klien nampi pangakuan ACK pikeun ngadegkeun sambungan. Ku alatan éta, server ngan ukur tiasa sacara proaktif ngadegkeun sambungan saatos nampi unggal pamundut SYN. ​​Ieu nyababkeun hal-hal ieu:

Pamborosan sumber daya: Upami pamundut SYN klien diblokir, anu nyababkeun transmisi sababaraha pakét SYN anu diulang-ulang, server bakal ngadamel sababaraha sambungan anu teu valid anu kaleuleuwihi saatos nampi pamundut éta. Ieu nyababkeun pamborosan sumber daya server anu teu perlu.

Panyimpenan pesen: Kusabab kurangna jabat tangan katilu, server teu tiasa terang naha klien nampi pangakuan ACK kalayan leres pikeun ngadegkeun sambungan. Hasilna, upami pesen macét dina jaringan, klien bakal teras ngirim pamundut SYN deui sareng deui, anu nyababkeun server teras-terasan ngawangun sambungan anyar. Ieu bakal ningkatkeun kamacetan jaringan sareng reureuh sareng mangaruhan négatif kana kinerja jaringan sacara umum.

Hindari pemborosan sumber daya

Ku kituna, pikeun mastikeun stabilitas sareng reliabilitas sambungan jaringan, TCP nganggo jabat tangan tilu arah pikeun ngadegkeun sambungan supados nyingkahan kajadian masalah ieu.

Ringkesan
TheBroker Paket JaringanNgadegkeun sambungan TCP dilakukeun ku jabat tangan tilu arah. Salila jabat tangan tilu arah, klien mimitina ngirim pakét nganggo flag SYN ka server, nunjukkeun yén éta hoyong ngadamel sambungan. Saatos nampi pamundut ti klien, server ngawaler pakét nganggo flag SYN sareng ACK ka klien, nunjukkeun yén pamundut sambungan ditampi, sareng ngirim nomer runtuyan awalna nyalira. Pamungkas, klien ngawaler ku flag ACK ka server pikeun nunjukkeun yén sambungan parantos hasil dijieun. Ku kituna, dua pihak aya dina kaayaan ESTABLISHED sareng tiasa ngamimitian ngirim data ka silih.

Sacara umum, prosés jabat tangan tilu arah pikeun ngadegkeun sambungan TCP dirancang pikeun mastikeun stabilitas sareng reliabilitas sambungan, nyingkahan kabingungan sareng runtah sumber daya dina sambungan historis, sareng mastikeun yén kadua pihak tiasa nampi sareng ngirim data.


Waktos posting: Jan-08-2025