Persiapan Koneksi TCP
Nalika kita browsing web, ngirim email, utawa main game online, kita asring ora mikir babagan sambungan jaringan sing rumit ing mburine. Nanging, langkah-langkah cilik iki sing njamin komunikasi sing stabil antarane kita lan server. Salah sawijining langkah sing paling penting yaiku persiyapan sambungan TCP, lan intine yaiku jabat tangan telung arah.
Artikel iki bakal ngrembug prinsip, proses, lan pentinge jabat tangan telung arah kanthi rinci. Langkah demi langkah, kita bakal nerangake kenapa jabat tangan telung arah dibutuhake, kepiye cara iki njamin stabilitas lan keandalan koneksi, lan pentinge kanggo transfer data. Kanthi pangerten sing luwih jero babagan jabat tangan telung arah, kita bakal entuk pangerten sing luwih apik babagan mekanisme komunikasi jaringan sing ndasari lan tampilan sing luwih jelas babagan keandalan koneksi TCP.
Proses Jabat Tangan Telu Arah TCP lan Transisi Status
TCP iku protokol transport sing berorientasi koneksi, sing mbutuhake pembentukan koneksi sadurunge transmisi data. Proses pembentukan koneksi iki ditindakake kanthi jabat tangan telung arah.
Ayo dideleng luwih cetha paket TCP sing dikirim ing saben sambungan.
Kapisan, klien lan server DITUTUP. Kapisan, server aktif ngrungokake ing port lan ana ing status LISTEN, sing tegese server kudu diwiwiti. Sabanjure, klien wis siyap kanggo miwiti ngakses kaca web. Klien kudu nggawe sambungan karo server. Format paket sambungan pisanan kaya ing ngisor iki:
Nalika klien miwiti sambungan, dheweke ngasilake nomer urutan awal acak (client_isn) lan dilebokake ing kolom "Nomer urutan" ing header TCP. Ing wektu sing padha, klien nyetel posisi flag SYN dadi 1 kanggo nuduhake yen paket metu minangka paket SYN. Klien nuduhake yen pengin nggawe sambungan karo server kanthi ngirim paket SYN pisanan menyang server. Paket iki ora ngemot data lapisan aplikasi (yaiku, data sing dikirim). Ing titik iki, status klien ditandhani minangka SYN-SENT.
Nalika server nampa paket SYN saka klien, server kasebut kanthi acak nginisialisasi nomer seri dhewe (server_isn) banjur nyelehake nomer kasebut ing kolom "Nomer seri" ing header TCP. Sabanjure, server ngetik client_isn + 1 ing kolom "Nomer konfirmasi" lan nyetel bit SYN lan ACK dadi 1. Pungkasan, server ngirim paket menyang klien, sing ora ngemot data lapisan aplikasi (lan ora ana data kanggo dikirim server). Ing wektu iki, server ana ing status SYN-RCVD.
Sawise klien nampa paket saka server, klien kudu nindakake optimasi ing ngisor iki kanggo nanggapi paket balesan pungkasan: Kapisan, klien nyetel bit ACK saka header TCP saka paket balesan dadi 1; Kapindho, klien ngetik nilai server_isn + 1 ing kolom "Konfirmasi nomer jawaban"; Pungkasan, klien ngirim paket menyang server. Paket iki bisa nggawa data saka klien menyang server. Sawise operasi kasebut rampung, klien bakal mlebu ing status ESTABLISHED.
Sawise server nampa paket balesan saka klien, server uga bakal ngalih menyang status ESTABLISHED.
Kaya sing sampeyan deleng saka proses ing ndhuwur, nalika nindakake jabat tangan telung arah, jabat tangan katelu diidini nggawa data, nanging rong jabat tangan pisanan ora. Iki minangka pitakonan sing asring ditakokake ing wawancara. Sawise jabat tangan telung arah rampung, kaloro pihak mlebu ing status ESTABLISHED, sing nuduhake yen sambungan wis kasil digawe, ing wektu kasebut klien lan server bisa miwiti ngirim data menyang siji liyane.
Kenapa salaman ping telu? Ora ping pindho, ping papat?
Wangsulan sing umum yaiku, "Amarga jabat tangan telung arah njamin kemampuan kanggo nampa lan ngirim." Wangsulan iki bener, nanging mung alesan sing katon, ora nyebutake alesan utama. Ing ngisor iki, aku bakal nganalisa alesan jabat tangan telu saka telung aspek kanggo ndalami pangerten kita babagan masalah iki.
Jabat tangan telung arah bisa kanthi efektif nyegah inisialisasi sambungan sing diulang-ulang sacara historis (alesan utama)
Jabat tangan telung arah njamin yen kaloro pihak wis nampa nomer urutan awal sing bisa dipercaya.
Jabat tangan telung arah ngindhari mbuang-mbuwang sumber daya.
Alesan 1: Aja Gabung Duplikat Historis
Cekak aos, alesan utama jabat tangan telung arah yaiku kanggo ngindhari kebingungan sing disebabake dening inisialisasi sambungan duplikat lawas. Ing lingkungan jaringan sing kompleks, transmisi paket data ora mesthi dikirim menyang host tujuan miturut wektu sing ditemtokake, lan paket data lawas bisa tekan host tujuan luwih dhisik amarga kemacetan jaringan lan alasan liyane. Kanggo ngindhari iki, TCP nggunakake jabat tangan telung arah kanggo netepake sambungan.
Nalika klien ngirim pirang-pirang paket pembentukan koneksi SYN kanthi berturut-turut, ing kahanan kaya kemacetan jaringan, ing ngisor iki bisa kedadeyan:
1- Paket SYN lawas tekan server sadurunge paket SYN paling anyar.
2- Server bakal bales paket SYN + ACK menyang klien sawise nampa paket SYN lawas.
3- Nalika klien nampa paket SYN + ACK, dheweke nemtokake manawa sambungan kasebut minangka sambungan historis (nomer urutan wis kadaluwarsa utawa wektu entek) miturut konteks dhewe, banjur ngirim paket RST menyang server kanggo mbatalake sambungan kasebut.
Kanthi sambungan rong jabat tangan, ora ana cara kanggo nemtokake manawa sambungan saiki minangka sambungan historis. Jabat tangan telung arah ngidini klien nemtokake manawa sambungan saiki minangka sambungan historis adhedhasar konteks nalika wis siyap ngirim paket katelu:
1- Yen iku sambungan historis (nomer urutan kadaluwarsa utawa timeout), paket sing dikirim dening jabat tangan katelu yaiku paket RST kanggo mbatalake sambungan historis.
2- Yen dudu sambungan historis, paket sing dikirim kanggo kaping telune yaiku paket ACK, lan loro pihak sing komunikasi kasil nggawe sambungan kasebut.
Mulane, alesan utama TCP nggunakake jabat tangan telung arah yaiku amarga iki nginisialisasi sambungan kanggo nyegah sambungan historis.
Alesan 2: Kanggo nyelarasake nomer urutan awal saka kaloro pihak
Kaloro sisih protokol TCP kudu njaga nomer urut, sing minangka faktor kunci kanggo njamin transmisi sing bisa dipercaya. Nomer urut nduweni peran penting ing sambungan TCP. Nomer urut nindakake ing ngisor iki:
Panampa bisa ngilangi data duplikat lan njamin akurasi data kasebut.
Panampa bisa nampa paket miturut urutan nomer urut kanggo njamin integritas data.
● Nomer urutan bisa ngenali paket data sing wis ditampa dening pihak liyane, saengga transmisi data bisa dipercaya.
Mulane, sawise nggawe sambungan TCP, klien ngirim paket SYN nganggo nomer urutan awal lan mbutuhake server kanggo bales nganggo paket ACK sing nuduhake yen paket SYN klien wis sukses ditampa. Banjur, server ngirim paket SYN nganggo nomer urutan awal menyang klien lan ngenteni klien bales, sapisan lan kanggo kabeh, kanggo mesthekake yen nomer urutan awal wis disinkronake kanthi andal.
Senajan jabat tangan papat arah uga bisa kanggo nyelarasake nomer urutan awal saka kaloro pihak kanthi andal, langkah kapindho lan katelu bisa digabung dadi siji langkah, sing ngasilake jabat tangan telung arah. Nanging, loro jabat tangan mung bisa njamin yen nomer urutan awal saka salah siji pihak kasil ditampa dening pihak liyane, nanging ora ana jaminan yen nomer urutan awal saka kaloro pihak bisa dikonfirmasi. Mulane, jabat tangan telung arah minangka pilihan sing paling apik kanggo ditindakake kanggo njamin stabilitas lan keandalan sambungan TCP.
Alesan 3: Aja Mbuang-mbuwang Sumber Daya
Yen mung ana "jabat tangan loro", nalika panjaluk SYN klien diblokir ing jaringan, klien ora bisa nampa paket ACK sing dikirim dening server, mula SYN bakal dikirim maneh. Nanging, amarga ora ana jabat tangan katelu, server ora bisa nemtokake manawa klien nampa pangakuan ACK kanggo netepake sambungan kasebut. Mulane, server mung bisa proaktif netepake sambungan sawise nampa saben panjaluk SYN. Iki ndadékaké ing ngisor iki:
Mbuwang sumber daya: Yen panjaluk SYN klien diblokir, sing nyebabake transmisi pirang-pirang paket SYN bola-bali, server bakal nggawe pirang-pirang sambungan sing ora valid sawise nampa panjaluk kasebut. Iki nyebabake mbuang sumber daya server sing ora perlu.
Penyimpanan pesen: Amarga ora ana jabat tangan kaping telu, server ora duwe cara kanggo ngerti apa klien wis nampa konfirmasi ACK kanthi bener kanggo nggawe sambungan. Akibate, yen pesen macet ing jaringan, klien bakal terus ngirim panjalukan SYN bola-bali, sing nyebabake server terus-terusan nggawe sambungan anyar. Iki bakal nambah kemacetan jaringan lan wektu tundha lan mengaruhi kinerja jaringan sakabèhé kanthi negatif.
Mulane, kanggo njamin stabilitas lan keandalan sambungan jaringan, TCP nggunakake jabat tangan telung arah kanggo nggawe sambungan supaya ora ana masalah kasebut.
Ringkesan
IngBroker Paket JaringanPanyiapan sambungan TCP ditindakake nganggo jabat tangan telung arah. Sajrone jabat tangan telung arah, klien ngirim paket nganggo flag SYN menyang server, nuduhake yen pengin nggawe sambungan. Sawise nampa panjaluk saka klien, server mangsuli paket nganggo flag SYN lan ACK menyang klien, nuduhake yen panjaluk sambungan ditampa, lan ngirim nomer urutan awal dhewe. Pungkasan, klien mangsuli nganggo flag ACK menyang server kanggo nuduhake yen sambungan wis kasil digawe. Kanthi mangkono, loro pihak ana ing kahanan ESTABLISHED lan bisa miwiti ngirim data siji lan sijine.
Umumé, proses jabat tangan telung arah kanggo nggawe sambungan TCP dirancang kanggo njamin stabilitas lan keandalan sambungan, nyegah kebingungan lan pemborosan sumber daya babagan sambungan historis, lan njamin manawa kaloro pihak bisa nampa lan ngirim data.
Wektu kiriman: 8 Januari 2025






