Senjata rahasia TCP: Kontrol Aliran Jaringan lan Kontrol Kongesti Jaringan

Transportasi Keandalan TCP
Kita kabeh wis kenal karo protokol TCP minangka protokol transportasi sing bisa dipercaya, nanging kepiye carane njamin keandalan transportasi?

Kanggo entuk transmisi sing bisa dipercaya, akeh faktor sing kudu ditimbang, kayata kerusakan data, ilang, duplikasi, lan pecahan sing ora teratur. Yen masalah kasebut ora bisa dirampungake, transmisi sing bisa dipercaya ora bisa digayuh.

Mulane, TCP nggunakake mekanisme kayata nomer urutan, balesan pangenalan, kontrol ngirim ulang, manajemen sambungan, lan kontrol jendela kanggo entuk transmisi sing bisa dipercaya.

Ing makalah iki, kita bakal fokus ing jendela geser, kontrol aliran, lan kontrol kongesti TCP. Mekanisme transmisi ulang dibahas kanthi kapisah ing bagean sabanjure.

Kontrol Aliran Jaringan
Kontrol Aliran Jaringan utawa dikenal minangka Kontrol Lalu Lintas Jaringan sejatine minangka manifestasi saka hubungan sing alus antarane produsen lan konsumen. Sampeyan mbokmenawa wis kerep nemoni skenario iki ing papan kerja utawa ing wawancara. Yen kapasitas produsen kanggo ngasilake ngluwihi kapasitas konsumen kanggo ngonsumsi, iki bakal nyebabake antrian saya tambah tanpa wates. Ing kasus sing luwih serius, sampeyan bisa uga ngerti yen pesen RabbitMQ numpuk banget, iki bisa nyebabake penurunan kinerja kabeh server MQ. Iki uga bener kanggo TCP; yen ora dicenthang, akeh banget pesen sing bakal dilebokake ing jaringan, lan konsumen bakal ngluwihi kapasitas, dene produsen bakal terus ngirim pesen duplikat, sing bakal mengaruhi kinerja jaringan.

Kanggo ngatasi fenomena iki, TCP nyedhiyakake mekanisme kanggo pengirim supaya bisa ngontrol jumlah data sing dikirim adhedhasar kapasitas panrima sing nyata saka panrima, sing dikenal minangka kontrol aliran. Panrima njaga jendela panrima, dene pengirim njaga jendela kirim. Perlu dicathet yen Windows iki mung kanggo sambungan TCP tunggal lan ora kabeh sambungan nuduhake jendela.

TCP nyedhiyakake kontrol aliran kanthi nggunakake variabel kanggo jendela panampa. Jendhela panampa menehi indikasi marang pengirim babagan pira papan cache sing isih kasedhiya. Pengirim ngontrol jumlah data sing dikirim miturut kapasitas panampa sing nyata saka panrima.

Host panrima bakal menehi kabar marang pengirim babagan ukuran data sing bisa ditampa, lan pengirim ngirim nganti watesan iki. Watesan iki minangka ukuran jendela, isih kelingan header TCP? Ana kolom jendela panrima, sing digunakake kanggo nuduhake jumlah byte sing bisa utawa gelem ditampa dening panrima.

Host pengirim bakal ngirim paket probe jendela kanthi periodik, sing digunakake kanggo ndeteksi apa host panrima isih bisa nampa data. Nalika buffer panrima ana ing bebaya kebanjiran, ukuran jendela disetel menyang nilai sing luwih cilik kanggo menehi instruksi marang pengirim supaya ngontrol jumlah data sing dikirim.

Iki diagram Kontrol Aliran Jaringan:

Kontrol Lalu Lintas

Kontrol Kemacetan Jaringan
Sadurunge ngenalake kontrol kongesti, kita kudu ngerti manawa saliyane jendela panampa lan jendela kirim, ana uga jendela kongesti, sing utamane digunakake kanggo ngatasi masalah kapan pengirim miwiti ngirim data menyang jendela panampa. Mulane, jendela kongesti uga dikelola dening pengirim TCP. Kita butuh algoritma kanggo nemtokake pira data sing cocog kanggo dikirim, amarga ngirim data sing sithik banget utawa kakehan ora ideal, mula ana konsep jendela kongesti.

Ing kontrol aliran jaringan sadurunge, sing dihindari yaiku pengirim ngisi cache panrima nganggo data, nanging kita ora ngerti apa sing kedadeyan ing jaringan kasebut. Biasane, jaringan komputer ana ing lingkungan sing dienggo bareng. Akibate, bisa uga ana kemacetan jaringan amarga komunikasi antarane host liyane.

Nalika jaringan macet, yen akeh paket sing terus dikirim, bisa nyebabake masalah kayata wektu tundha lan ilang paket. Ing wektu iki, TCP bakal ngirim maneh data, nanging transmisi ulang bakal nambah beban ing jaringan, sing nyebabake wektu tundha sing luwih gedhe lan luwih akeh mundhut paket. Iki bisa mlebu ing siklus setan lan terus saya gedhe.

Dadi, TCP ora bisa nglirwakake apa sing kedadeyan ing jaringan. Nalika jaringan rame, TCP ngorbanake awake dhewe kanthi nyuda jumlah data sing dikirim.

Mulane, kontrol kongesti diusulake, sing tujuane supaya ora ngisi kabeh jaringan nganggo data saka pengirim. Kanggo ngatur jumlah data sing kudu dikirim pengirim, TCP nemtokake konsep sing diarani jendela kongesti. Algoritma kontrol kongesti bakal nyetel ukuran jendela kongesti miturut tingkat kongesti jaringan, supaya bisa ngontrol jumlah data sing dikirim dening pengirim.

Apa kuwi congestion window? Apa hubungane karo send window?

Congestion Window iku variabel status sing dikelola dening pengirim sing nemtokake jumlah data sing bisa dikirim dening pengirim. Congestion window owah kanthi dinamis miturut tingkat congestion jaringan.

Jendhela Pangiriman iku ukuran jendhela sing disepakati antarane pengirim lan panampa sing nuduhake jumlah data sing bisa ditampa dening panampa. Jendhela kongesti lan jendhela pangiriman iku ana gandheng cenenge; jendhela pangiriman biasane padha karo minimal saka Jendhela kongesti lan panampa, yaiku, swnd = min(cwnd, rwnd).

Jendhela kemacetan owah kaya ing ngisor iki:

Yen ora ana kongesti ing jaringan, yaiku, ora ana wektu entek transmisi ulang, jendela kongesti bakal mundhak.

Yen ana kemacetan ing jaringan, jendela kemacetan bakal mudhun.

Pengirim nemtokake apa jaringan kasebut macet kanthi mirsani apa paket pengakuan ACK ditampa sajrone wektu sing ditemtokake. Yen pengirim ora nampa paket pengakuan ACK sajrone wektu sing ditemtokake, jaringan kasebut dianggep macet.

Saliyané babagan jendela kemacetan, iki wektune kanggo ngrembug algoritma kontrol kemacetan TCP. Algoritma kontrol kemacetan TCP kasusun saka telung bagean utama:

Wiwitan Alon:Kapisan, jendela kongesti cwnd relatif cilik, lan pengirim nambah jendela kongesti kanthi eksponensial kanggo cepet adaptasi karo kapasitas jaringan.
Nyegah kemacetan:Sawisé jendela kongesti ngluwihi ambang tartamtu, pengirim nambah jendela kongesti kanthi cara linier kanggo ngalangi tingkat pertumbuhan jendela kongesti lan nyegah jaringan kakehan muatan.
Pamulihan Cepet:Yen kedadeyan kemacetan, pengirim bakal ngurangi separo jendela kemacetan lan mlebu ing status pemulihan cepet kanggo nemtokake lokasi pemulihan jaringan liwat acks duplikat sing ditampa, banjur terus nambah jendela kemacetan.

Wiwitan Alon
Nalika sambungan TCP digawe, cwnd jendhela kongesti wiwitane disetel menyang nilai MSS (ukuran segmen maksimal) minimal. Kanthi cara iki, tingkat pengiriman awal kira-kira MSS/RTT byte/detik. Bandwidth sing kasedhiya biasane luwih gedhe tinimbang MSS/RTT, mula TCP pengin nemokake tingkat pengiriman optimal, sing bisa digayuh kanthi cara miwiti alon.

Ing proses wiwitan alon, nilai cwnd jendhela kongesti bakal diinisialisasi dadi 1 MSS, lan saben segmen paket sing dikirim diakoni, nilai cwnd bakal ditambah siji MSS, yaiku, nilai cwnd bakal dadi 2 MSS. Sawise iku, nilai cwnd digandakake kanggo saben transmisi segmen paket sing sukses, lan sateruse. Proses pertumbuhan spesifik dituduhake ing gambar ing ngisor iki.

 Kontrol kemacetan jaringan

Nanging, tingkat pengiriman ora mesthi bisa mundhak; pertumbuhane kudu rampung kapan wae. Dadi, kapan kenaikan tingkat pengiriman rampung? Miwiti alon biasane mungkasi kenaikan tingkat pengiriman kanthi salah siji saka sawetara cara:

Cara sing pertama yaiku kasus paket ilang sajrone proses pengiriman wiwitan alon. Nalika paket ilang kedadeyan, TCP nyetel jendela kemacetan pengirim dadi 1 lan miwiti maneh proses wiwitan alon. Ing titik iki, konsep ambang wiwitan alon ssthresh dikenalake, sing nilai awal setengah saka nilai cwnd sing ngasilake paket ilang. Yaiku, nalika kemacetan dideteksi, nilai ssthresh setengah saka nilai jendela.

Cara kapindho yaiku kanthi langsung nggandhengake karo nilai ambang wiwitan alon ssthresh. Amarga nilai ssthresh iku setengah saka nilai jendela nalika kemacetan dideteksi, kerugian paket bisa kedadeyan saben dobel nalika cwnd luwih gedhe tinimbang ssthresh. Mulane, luwih becik nyetel cwnd dadi ssthresh, sing bakal nyebabake TCP ngalih menyang mode kontrol kemacetan lan pungkasan wiwitan alon.

Cara pungkasan supaya wiwitan alon bisa rampung yaiku yen ana telung ack redundan sing dideteksi, TCP bakal nindakake transmisi ulang kanthi cepet lan mlebu ing status pemulihan. (Yen ora jelas kenapa ana telung paket ACK, bakal dijlentrehake kanthi kapisah ing mekanisme transmisi ulang.)

Nyegah Kemacetan
Nalika TCP mlebu ing status kontrol kongesti, cwnd disetel dadi setengah saka ambang kongesti ssthresh. Iki tegese nilai cwnd ora bisa digandakake saben segmen paket ditampa. Nanging, pendekatan sing relatif konservatif diadopsi ing ngendi nilai cwnd mung ditambah siji MSS (dawa segmen paket maksimal) sawise saben transmisi rampung. Contone, sanajan 10 segmen paket diakoni, nilai cwnd mung bakal tambah siji MSS. Iki minangka model pertumbuhan linier lan uga duwe wates ndhuwur kanggo pertumbuhan. Nalika kerugian paket kedadeyan, nilai cwnd diganti dadi MSS, lan nilai ssthresh disetel dadi setengah saka cwnd. Utawa uga bakal mungkasi pertumbuhan MSS nalika 3 respon ACK redundan ditampa. Yen telung ack redundan isih ditampa sawise nyuda setengah nilai cwnd, nilai ssthresh dicathet minangka setengah nilai cwnd lan status pemulihan cepet dilebokake.

Pamulihan Cepet
Ing kahanan Fast Recovery, nilai cwnd congestion window ditambah siji MSS kanggo saben ACK redundan sing ditampa, yaiku, ACK sing ora teka kanthi runtut. Iki kanggo nggunakake segmen paket sing wis kasil dikirim ing jaringan kanggo ningkatake efisiensi transmisi sabisa-bisane.

Nalika ACK saka segmen paket sing ilang teka, TCP nyuda nilai cwnd banjur mlebu ing status penghindaran kongesti. Iki kanggo ngontrol ukuran jendela kongesti lan nyegah kenaikan kongesti jaringan luwih lanjut.

Yen ana wektu entek sawise kahanan kontrol kongesti, kahanan jaringan dadi luwih serius lan TCP pindhah saka kahanan nyegah kongesti menyang kahanan wiwitan alon. Ing kasus iki, nilai cwnd jendhela kongesti disetel dadi 1 MSS, dawa segmen paket maksimal, lan nilai ssthresh ambang wiwitan alon disetel dadi setengah saka cwnd. Tujuane iki yaiku kanggo nambah maneh ukuran jendhela kongesti kanthi bertahap sawise jaringan pulih kanggo nyeimbangake tingkat transmisi lan derajat kongesti jaringan.

Ringkesan
Minangka protokol transportasi sing bisa dipercaya, TCP ngetrapake transportasi sing bisa dipercaya kanthi nomer urutan, pangenalan, kontrol transmisi ulang, manajemen sambungan, lan kontrol jendela. Antarane, mekanisme kontrol aliran ngontrol jumlah data sing dikirim dening pengirim miturut kapasitas panampa nyata saka panrima, sing nyegah masalah kemacetan jaringan lan penurunan kinerja. Mekanisme kontrol kemacetan nyegah kedadeyan kemacetan jaringan kanthi nyetel jumlah data sing dikirim dening pengirim. Konsep jendela kemacetan lan jendela pengiriman ana hubungane karo siji liyane, lan jumlah data ing pengirim dikontrol kanthi nyetel ukuran jendela kemacetan kanthi dinamis. Wiwitan alon, pencegahan kemacetan, lan pemulihan cepet minangka telung bagean utama saka algoritma kontrol kemacetan TCP, sing nyetel ukuran jendela kemacetan liwat macem-macem strategi kanggo adaptasi karo kapasitas lan tingkat kemacetan jaringan.

Ing bagean sabanjure, kita bakal nliti mekanisme transmisi ulang TCP kanthi rinci. Mekanisme transmisi ulang minangka bagean penting saka TCP kanggo entuk transmisi sing bisa dipercaya. Iki njamin transmisi data sing bisa dipercaya kanthi ngirim ulang data sing ilang, rusak, utawa telat. Prinsip lan strategi implementasi mekanisme transmisi ulang bakal dikenalake lan dianalisis kanthi rinci ing bagean sabanjure. Terus pantau!


Wektu kiriman: 24 Februari 2025