Senjata Rahasia TCP: Kontrol Aliran Jaringan dan Kontrol Kemacetan Jaringan

Transportasi Keandalan TCP
Kita semua terbiasa dengan protokol TCP sebagai protokol transportasi yang andal, tetapi bagaimana hal itu memastikan keandalan transportasi?

Untuk mencapai transmisi yang andal, banyak faktor perlu dipertimbangkan, seperti korupsi data, kehilangan, duplikasi, dan pecahan yang tidak sesuai pesanan. Jika masalah ini tidak dapat diselesaikan, transmisi yang andal tidak dapat dicapai.

Oleh karena itu, TCP menggunakan mekanisme seperti nomor urutan, balasan pengakuan, pengangkatan kontrol, manajemen koneksi, dan kontrol jendela untuk mencapai transmisi yang andal.

Dalam makalah ini, kami akan fokus pada jendela geser, kontrol aliran dan kontrol kemacetan TCP. Mekanisme transmisi ditutup secara terpisah di bagian selanjutnya.

Kontrol Aliran Jaringan
Kontrol aliran jaringan atau dikenal sebagai kontrol lalu lintas jaringan sebenarnya merupakan manifestasi dari hubungan halus antara produsen dan konsumen. Anda mungkin sering menemukan skenario ini di tempat kerja atau dalam wawancara. Jika kapasitas produsen untuk menghasilkan sangat melebihi kapasitas konsumen untuk mengkonsumsi, itu akan menyebabkan antrian tumbuh tanpa batas. Dalam kasus yang lebih serius, Anda mungkin tahu bahwa ketika pesan RabbitMQ menumpuk terlalu banyak, itu dapat menyebabkan degradasi kinerja seluruh server MQ. Hal yang sama berlaku untuk TCP; Jika dibiarkan, terlalu banyak pesan akan dimasukkan ke dalam jaringan, dan konsumen akan melebihi kapasitas mereka, sementara produsen akan terus mengirim pesan duplikat, yang akan sangat mempengaruhi kinerja jaringan.

Untuk mengatasi fenomena ini, TCP menyediakan mekanisme bagi pengirim untuk mengontrol jumlah data yang dikirim berdasarkan kapasitas penerimaan aktual penerima, yang dikenal sebagai kontrol aliran. Penerima memelihara jendela penerimaan, sementara pengirim memelihara jendela Kirim. Perlu dicatat bahwa jendela -jendela ini hanya untuk satu koneksi TCP dan tidak semua koneksi berbagi jendela.

TCP menyediakan kontrol aliran dengan menggunakan variabel untuk jendela menerima. Jendela penerima memberi pengirim indikasi berapa banyak ruang cache masih tersedia. Pengirim mengontrol jumlah data yang dikirim sesuai dengan kapasitas penerimaan aktual penerima.

Host penerima memberi tahu pengirim ukuran data yang dapat diterima, dan pengirim mengirimkan hingga batas ini. Batas ini adalah ukuran jendela, ingat header TCP? Ada bidang jendela menerima, yang digunakan untuk menunjukkan jumlah byte yang dapat diterima atau bersedia diterima oleh penerima.

Host pengirim akan secara berkala mengirim paket probe jendela, yang digunakan untuk mendeteksi apakah host penerima masih dapat menerima data. Ketika buffer penerima dalam bahaya meluap, ukuran jendela diatur ke nilai yang lebih kecil untuk menginstruksikan pengirim untuk mengontrol jumlah data yang dikirim.

Berikut adalah diagram kontrol aliran jaringan:

Kontrol Lalu Lintas

Kontrol Kemacetan Jaringan
Sebelum memperkenalkan kontrol kemacetan, kita perlu memahami bahwa selain jendela menerima dan jendela Kirim, ada juga jendela kemacetan, yang terutama digunakan untuk menyelesaikan masalah pada tingkat berapa pengirim mulai mengirim data ke jendela penerimaan. Oleh karena itu, jendela kemacetan juga dikelola oleh pengirim TCP. Kami membutuhkan algoritma untuk memutuskan berapa banyak data yang tepat untuk dikirim, karena mengirim terlalu sedikit atau terlalu banyak data tidak ideal, maka konsep jendela kemacetan.

Dalam kontrol aliran jaringan sebelumnya, yang kami hindari adalah pengirim yang mengisi cache penerima dengan data, tetapi kami tidak tahu apa yang terjadi di jaringan. Biasanya, jaringan komputer berada di lingkungan bersama. Akibatnya, mungkin ada kemacetan jaringan karena komunikasi antara host lain.

Ketika jaringan tersumbat, jika sejumlah besar paket terus dikirim, itu dapat menyebabkan masalah seperti penundaan dan hilangnya paket. Pada titik ini, TCP akan mengirimkan kembali data, tetapi transmisi akan meningkatkan beban pada jaringan, menghasilkan penundaan yang lebih besar dan lebih banyak kerugian paket. Ini bisa masuk ke lingkaran setan dan terus menjadi lebih besar.

Dengan demikian, TCP tidak dapat mengabaikan apa yang terjadi di jaringan. Ketika jaringan tersumbat, TCP mengorbankan dirinya sendiri dengan mengurangi jumlah data yang dikirimnya.

Oleh karena itu, kontrol kemacetan diusulkan, yang bertujuan untuk menghindari mengisi seluruh jaringan dengan data dari pengirim. Untuk mengatur jumlah data yang harus dikirim pengirim, TCP mendefinisikan konsep yang disebut jendela kemacetan. Algoritma kontrol kemacetan akan menyesuaikan ukuran jendela kemacetan sesuai dengan tingkat kemacetan jaringan, sehingga dapat mengontrol jumlah data yang dikirim oleh pengirim.

Apa itu jendela kemacetan? Apa hubungannya ini dengan jendela Kirim?

Jendela kemacetan adalah variabel negara yang dikelola oleh pengirim yang menentukan jumlah data yang dapat dikirim pengirim. Jendela kemacetan berubah secara dinamis sesuai dengan tingkat kemacetan jaringan.

Jendela Pengiriman adalah ukuran jendela yang disepakati antara pengirim dan penerima yang menunjukkan jumlah data yang dapat diterima penerima. Jendela kemacetan dan jendela pengiriman terkait; Jendela pengirim biasanya sama dengan minimum kemacetan dan jendela penerima, yaitu, swnd = min (cwnd, rwnd).

Jendela kemacetan CWND berubah sebagai berikut:

Jika tidak ada kemacetan di jaringan, yaitu, tidak ada batas waktu transmisi, jendela kemacetan meningkat.

Jika ada kemacetan di jaringan, jendela kemacetan berkurang.

Pengirim menentukan apakah jaringan tersumbat dengan mengamati apakah paket ACK Accnowledgment diterima dalam waktu yang ditentukan. Jika pengirim tidak menerima paket pengakuan ACK dalam waktu yang ditentukan, dianggap bahwa jaringan itu padat.

Selain jendela kemacetan, sekarang saatnya untuk membahas algoritma kontrol kemacetan TCP. Algoritma kontrol kemacetan TCP terdiri dari tiga bagian utama:

Awal yang lambat:Awalnya, jendela kemacetan CWND relatif kecil, dan pengirim meningkatkan jendela kemacetan secara eksponensial untuk dengan cepat beradaptasi dengan kapasitas jaringan.
Penghindaran Kemacetan:Setelah jendela kemacetan melebihi ambang batas tertentu, pengirim meningkatkan jendela kemacetan dengan cara linier untuk memperlambat laju pertumbuhan jendela kemacetan dan menghindari kelebihan beban jaringan.
Pemulihan Cepat:Jika kemacetan terjadi, pengirim membagi dua jendela kemacetan dan memasuki keadaan pemulihan cepat untuk menentukan lokasi pemulihan jaringan melalui duplikat ACKS yang diterima, dan kemudian terus meningkatkan jendela kemacetan.

Awal yang lambat
Ketika koneksi TCP dibuat, jendela kemacetan CWND awalnya diatur ke nilai MSS minimum (ukuran segmen maksimum). Dengan cara ini, tingkat pengiriman awal adalah tentang MSS/RTT byte/detik. Bandwidth yang tersedia aktual biasanya jauh lebih besar dari MSS/RTT, jadi TCP ingin menemukan laju pengiriman yang optimal, yang dapat dicapai dengan memulai dengan lambat.

Dalam proses start lambat, nilai jendela kemacetan CWND akan diinisialisasi ke 1 MSS, dan setiap kali segmen paket yang ditransmisikan diakui, nilai CWND akan ditingkatkan dengan satu MSS, yaitu nilai CWND akan menjadi 2 MSS. Setelah itu, nilai CWND dua kali lipat untuk setiap transmisi segmen paket yang berhasil, dan sebagainya. Proses pertumbuhan spesifik ditunjukkan pada gambar berikut.

 Kontrol Kemacetan Jaringan

Namun, tingkat pengiriman tidak selalu tumbuh; Pertumbuhan harus berakhir kapan -kapan. Jadi, kapan kenaikan tarif pengiriman berakhir? Slow-Start biasanya mengakhiri peningkatan tingkat pengirim dalam salah satu dari beberapa cara:

Cara pertama adalah kasus kehilangan paket selama proses pengiriman awal yang lambat. Ketika kerugian paket terjadi, TCP mengatur jendela kemacetan pengirim CWND ke 1 dan memulai kembali proses awal yang lambat. Pada titik ini, konsep ambang batas awal yang lambat diperkenalkan, yang nilai awalnya adalah setengah dari nilai CWND yang menghasilkan kehilangan paket. Artinya, ketika kemacetan terdeteksi, nilai Ssthresh adalah setengah dari nilai jendela.

Cara kedua adalah berkorelasi langsung dengan nilai ambang batas lambat Ssthresh. Karena nilai Ssthresh adalah setengah dari nilai jendela ketika kemacetan terdeteksi, kehilangan paket dapat terjadi dengan masing -masing dua kali lipat ketika CWND lebih besar dari Ssthresh. Oleh karena itu, yang terbaik adalah mengatur CWND ke Ssthresh, yang akan menyebabkan TCP beralih ke mode kontrol kemacetan dan mengakhiri lambat.

Cara terakhir awal yang lambat dapat berakhir adalah jika tiga ACK yang berlebihan terdeteksi, TCP melakukan transmisi cepat dan memasuki keadaan pemulihan. (Jika tidak jelas mengapa ada tiga paket ACK, itu akan dijelaskan secara terpisah dalam mekanisme transmisi ulang.)

Penghindaran kemacetan
Ketika TCP memasuki status kontrol kemacetan, CWND diatur ke setengah dari ambang batas kemacetan Ssthresh. Ini berarti bahwa nilai CWND tidak dapat digandakan setiap kali segmen paket diterima. Sebaliknya, pendekatan yang relatif konservatif diadopsi di mana nilai CWND meningkat hanya dengan satu MSS (panjang segmen paket maksimum) setelah setiap transmisi selesai. Misalnya, bahkan jika 10 segmen paket diakui, nilai CWND hanya akan meningkat satu MSS. Ini adalah model pertumbuhan linier dan juga memiliki batas atas pada pertumbuhan. Ketika kerugian paket terjadi, nilai CWND diubah menjadi MSS, dan nilai Ssthresh diatur ke setengah dari CWND. Atau juga akan menghentikan pertumbuhan MSS ketika 3 respons ACK yang berlebihan diterima. Jika tiga ACK yang berlebihan masih diterima setelah mengurangi separuh nilai CWND, nilai Ssthresh dicatat sebagai setengah dari nilai CWND dan keadaan pemulihan cepat dimasukkan.

Pemulihan cepat
Dalam keadaan pemulihan cepat, nilai jendela kemacetan CWND meningkat sebesar satu MSS untuk masing -masing ACK yang diterima berlebihan, yaitu, ACK yang tidak tiba secara berurutan. Ini untuk memanfaatkan segmen paket yang telah berhasil ditransmisikan dalam jaringan untuk meningkatkan efisiensi transmisi sebanyak mungkin.

Ketika ACK dari segmen paket yang hilang tiba, TCP mengurangi nilai CWND dan kemudian memasuki keadaan penghindaran kemacetan. Ini untuk mengontrol ukuran jendela kemacetan dan menghindari lebih lanjut meningkatkan kemacetan jaringan.

Jika batas waktu terjadi setelah status kontrol kemacetan, kondisi jaringan menjadi lebih serius dan TCP bermigrasi dari keadaan penghindaran kemacetan ke negara bagian yang lambat. Dalam hal ini, nilai jendela kemacetan CWND diatur ke 1 MSS, panjang segmen paket maksimum, dan nilai ambang batas lambat Ssthresh diatur ke setengah dari CWND. Tujuannya adalah untuk meningkatkan kembali ukuran jendela kemacetan setelah jaringan pulih untuk menyeimbangkan laju transmisi dan tingkat kemacetan jaringan.

Ringkasan
Sebagai protokol transportasi yang andal, TCP mengimplementasikan transportasi yang andal dengan nomor urutan, pengakuan, kontrol transmisi, manajemen koneksi dan kontrol jendela. Di antara mereka, mekanisme kontrol aliran mengontrol jumlah data yang dikirim oleh pengirim sesuai dengan kapasitas penerima penerima yang sebenarnya, yang menghindari masalah kemacetan jaringan dan degradasi kinerja. Mekanisme kontrol kemacetan menghindari terjadinya kemacetan jaringan dengan menyesuaikan jumlah data yang dikirim oleh pengirim. Konsep jendela kemacetan dan jendela pengiriman saling terkait, dan jumlah data pada pengirim dikendalikan dengan secara dinamis menyesuaikan ukuran jendela kemacetan. Mulai lambat, penghindaran kemacetan dan pemulihan cepat adalah tiga bagian utama dari algoritma kontrol kemacetan TCP, yang menyesuaikan ukuran jendela kemacetan melalui berbagai strategi untuk beradaptasi dengan kapasitas dan tingkat kemacetan jaringan.

Di bagian selanjutnya, kami akan memeriksa mekanisme transmisi TCP secara rinci. Mekanisme transmisi ulang adalah bagian penting dari TCP untuk mencapai transmisi yang andal. Ini memastikan transmisi data yang andal dengan mengirimkan kembali data yang hilang, rusak atau tertunda. Prinsip implementasi dan strategi mekanisme transmisi akan diperkenalkan dan dianalisis secara rinci di bagian selanjutnya. Pantau terus!


Waktu posting: Feb-24-2025