Senjata Rahsia TCP: Kawalan Aliran Rangkaian dan Kawalan Kesesakan Rangkaian

Pengangkutan Kebolehpercayaan TCP
Kita semua biasa dengan protokol TCP sebagai protokol pengangkutan yang boleh dipercayai, tetapi bagaimana ia memastikan kebolehpercayaan pengangkutan?

Untuk mencapai transmisi yang boleh dipercayai, banyak faktor perlu dipertimbangkan, seperti rasuah data, kerugian, pertindihan, dan shards out-of-order. Sekiranya masalah ini tidak dapat diselesaikan, penghantaran yang boleh dipercayai tidak dapat dicapai.

Oleh itu, TCP menggunakan mekanisme seperti nombor urutan, balasan pengakuan, kawalan resend, pengurusan sambungan, dan kawalan tetingkap untuk mencapai penghantaran yang boleh dipercayai.

Dalam makalah ini, kami akan memberi tumpuan kepada tetingkap gelongsor, kawalan aliran dan kawalan kesesakan TCP. Mekanisme penghantaran semula dilindungi secara berasingan di bahagian seterusnya.

Kawalan aliran rangkaian
Kawalan aliran rangkaian atau tahu sebagai kawalan lalu lintas rangkaian sebenarnya merupakan manifestasi hubungan halus antara pengeluar dan pengguna. Anda mungkin dapat melihat senario ini banyak di tempat kerja atau dalam wawancara. Jika keupayaan pengeluar untuk menghasilkan banyak melebihi kapasiti pengguna untuk dimakan, ia akan menyebabkan giliran berkembang selama -lamanya. Dalam kes yang lebih serius, anda mungkin tahu bahawa apabila mesej RabbitMQ terlalu banyak, ia boleh menyebabkan kemerosotan prestasi keseluruhan pelayan MQ. Begitu juga dengan TCP; Sekiranya dibiarkan tidak terkawal, terlalu banyak mesej akan dimasukkan ke dalam rangkaian, dan pengguna akan melebihi kapasiti mereka, sementara pengeluar akan terus menghantar mesej pendua, yang akan sangat mempengaruhi prestasi rangkaian.

Untuk menangani fenomena ini, TCP menyediakan mekanisme untuk pengirim untuk mengawal jumlah data yang dihantar berdasarkan kapasiti penerimaan sebenar penerima, yang dikenali sebagai kawalan aliran. Penerima mengekalkan tetingkap yang diterima, sementara pengirim mengekalkan tetingkap hantar. Harus diingat bahawa tingkap -tingkap ini hanya untuk satu sambungan TCP dan tidak semua sambungan berkongsi tetingkap.

TCP menyediakan kawalan aliran dengan menggunakan pembolehubah untuk tetingkap yang diterima. Tetingkap yang diterima memberikan pengirim petunjuk tentang berapa banyak ruang cache yang masih tersedia. Pengirim mengawal jumlah data yang dihantar mengikut kapasiti penerimaan sebenar penerima.

Hos penerima memberitahu pengirim saiz data yang dapat diterima, dan pengirim menghantar sehingga had ini. Had ini adalah saiz tetingkap, ingat tajuk TCP? Terdapat medan tetingkap yang diterima, yang digunakan untuk menunjukkan bilangan bait penerima yang mampu atau bersedia menerima.

Hos pengirim secara berkala akan menghantar paket probe tetingkap, yang digunakan untuk mengesan sama ada host penerima masih dapat menerima data. Apabila penampan penerima berada dalam bahaya melimpah, saiz tetingkap ditetapkan kepada nilai yang lebih kecil untuk mengarahkan pengirim untuk mengawal jumlah data yang dihantar.

Berikut adalah rajah kawalan aliran rangkaian:

Kawalan lalu lintas

Kawalan Kesesakan Rangkaian
Sebelum memperkenalkan kawalan kesesakan, kita perlu memahami bahawa sebagai tambahan kepada tetingkap yang diterima dan tetingkap Hantar, terdapat juga tetingkap kesesakan, yang terutama digunakan untuk menyelesaikan masalah pada kadar apa pengirim mula menghantar data ke tetingkap yang diterima. Oleh itu, tetingkap kesesakan juga dikekalkan oleh pengirim TCP. Kami memerlukan algoritma untuk menentukan berapa banyak data yang sesuai untuk dihantar, kerana menghantar terlalu sedikit atau terlalu banyak data tidak sesuai, oleh itu konsep tetingkap kesesakan.

Dalam kawalan aliran rangkaian sebelumnya, apa yang kami elakkan adalah pengirim yang mengisi cache penerima dengan data, tetapi kami tidak tahu apa yang sedang berlaku dalam rangkaian. Biasanya, rangkaian komputer berada dalam persekitaran bersama. Akibatnya, mungkin terdapat kesesakan rangkaian kerana komunikasi antara tuan rumah lain.

Apabila rangkaian sesak, jika sejumlah besar paket terus dihantar, ia boleh menyebabkan masalah seperti kelewatan dan kehilangan paket. Pada ketika ini, TCP akan menghantar semula data, tetapi penghantaran semula akan meningkatkan beban rangkaian, mengakibatkan kelewatan yang lebih besar dan lebih banyak kerugian paket. Ini boleh masuk ke dalam kitaran ganas dan terus semakin besar.

Oleh itu, TCP tidak boleh mengabaikan apa yang sedang berlaku di rangkaian. Apabila rangkaian itu sesak, TCP mengorbankan dirinya dengan mengurangkan jumlah data yang dihantarnya.

Oleh itu, kawalan kesesakan dicadangkan, yang bertujuan untuk mengelakkan mengisi seluruh rangkaian dengan data dari pengirim. Untuk mengawal selia jumlah data yang perlu dihantar oleh pengirim, TCP mentakrifkan konsep yang dipanggil tetingkap kesesakan. Algoritma kawalan kesesakan akan menyesuaikan saiz tetingkap kesesakan mengikut tahap kesesakan rangkaian, untuk mengawal jumlah data yang dihantar oleh pengirim.

Apakah tetingkap kesesakan? Apa kaitannya dengan tetingkap hantar?

Tingkap kesesakan adalah pemboleh ubah keadaan yang dikekalkan oleh pengirim yang menentukan jumlah data yang boleh dihantar oleh pengirim. Tingkap kesesakan berubah secara dinamik mengikut tahap kesesakan rangkaian.

Tetingkap penghantaran adalah saiz tetingkap yang dipersetujui antara pengirim dan penerima yang menunjukkan jumlah data yang dapat diterima oleh penerima. Tingkap kesesakan dan tetingkap penghantaran berkaitan; Tingkap penghantaran biasanya sama dengan minimum kesesakan dan tingkap yang menerima, iaitu, SWND = min (cwnd, rwnd).

Tingkap kesesakan cwnd berubah seperti berikut:

Sekiranya tidak ada kesesakan dalam rangkaian, iaitu, tiada masa tamat penghantaran semula, tetingkap kesesakan meningkat.

Sekiranya terdapat kesesakan dalam rangkaian, tetingkap kesesakan berkurangan.

Pengirim menentukan sama ada rangkaian itu sesak dengan memerhatikan sama ada paket pengakuan ACK diterima dalam masa yang ditentukan. Jika pengirim tidak menerima paket pengakuan ACK dalam masa yang ditentukan, dianggap bahawa rangkaian itu sesak.

Sebagai tambahan kepada tetingkap kesesakan, sudah tiba masanya untuk membincangkan algoritma kawalan kesesakan TCP. Algoritma Kawalan Kesesakan TCP terdiri daripada tiga bahagian utama:

Permulaan perlahan:Pada mulanya, tetingkap kesesakan CWND agak kecil, dan pengirim meningkatkan tetingkap kesesakan secara eksponen dengan cepat menyesuaikan diri dengan kapasiti rangkaian.
Penghindaran kesesakan:Selepas tetingkap kesesakan melebihi ambang tertentu, pengirim meningkatkan tetingkap kesesakan secara linear untuk melambatkan kadar pertumbuhan tetingkap kesesakan dan mengelakkan terlalu banyak rangkaian.
Pemulihan Cepat:Sekiranya kesesakan berlaku, pengirim mengurangkan tetingkap kesesakan dan memasuki keadaan pemulihan yang cepat untuk menentukan lokasi pemulihan rangkaian melalui ACK duplikat yang diterima, dan kemudian terus meningkatkan tetingkap kesesakan.

Permulaan perlahan
Apabila sambungan TCP ditubuhkan, CWND tetingkap kesesakan pada mulanya ditetapkan pada nilai MSS (saiz segmen maksimum) minimum. Dengan cara ini, kadar penghantaran awal adalah mengenai mss/rtt bytes/saat. Jalur lebar yang tersedia biasanya lebih besar daripada MSS/RTT, jadi TCP ingin mencari kadar penghantaran yang optimum, yang dapat dicapai dengan cara perlahan.

Dalam proses permulaan yang perlahan, nilai CWND tetingkap kesesakan akan diasaskan kepada 1 MSS, dan setiap kali segmen paket yang dihantar diakui, nilai CWND akan ditingkatkan oleh satu MSS, iaitu, nilai CWND akan menjadi 2 MSS. Selepas itu, nilai CWND dua kali ganda untuk setiap penghantaran segmen paket yang berjaya, dan sebagainya. Proses pertumbuhan khusus ditunjukkan dalam angka berikut.

 Kawalan Kesesakan Rangkaian

Walau bagaimanapun, kadar penghantaran tidak boleh sentiasa berkembang; Pertumbuhan perlu berakhir pada suatu masa nanti. Jadi, bilakah kadar penghantaran meningkat? Permulaan perlahan biasanya menamatkan kenaikan kadar penghantaran dalam salah satu cara:

Cara pertama adalah kes kehilangan paket semasa proses penghantaran perlahan. Apabila kehilangan paket berlaku, TCP menetapkan tetingkap kesesakan penghantar ke 1 dan memulakan semula proses permulaan yang perlahan. Pada ketika ini, satu konsep ambang permulaan yang perlahan diperkenalkan, yang nilai awalnya adalah separuh daripada nilai CWND yang menghasilkan kehilangan paket. Iaitu, apabila kesesakan dikesan, nilai ssthresh adalah separuh daripada nilai tetingkap.

Cara kedua adalah untuk mengaitkan secara langsung dengan nilai ssthresh ambang lambat. Oleh kerana nilai ssthresh adalah separuh daripada nilai tetingkap apabila kesesakan dikesan, kehilangan paket mungkin berlaku dengan setiap dua kali ganda apabila CWND lebih besar daripada ssthresh. Oleh itu, adalah lebih baik untuk menetapkan CWND ke SSTHESH, yang akan menyebabkan TCP beralih ke mod kawalan kesesakan dan menamatkan permulaan perlahan.

Cara terakhir permulaan yang perlahan dapat berakhir adalah jika tiga ACK yang berlebihan dikesan, TCP melakukan penghantaran cepat dan memasuki keadaan pemulihan. (Jika tidak jelas mengapa terdapat tiga paket ACK, ia akan dijelaskan secara berasingan dalam mekanisme penghantaran semula.)

Penghindaran kesesakan
Apabila TCP memasuki keadaan kawalan kesesakan, CWND ditetapkan kepada separuh ambang kesesakan ssthresh. Ini bermakna bahawa nilai CWND tidak boleh dua kali ganda setiap kali segmen paket diterima. Sebaliknya, pendekatan yang agak konservatif diguna pakai di mana nilai CWND ditingkatkan dengan hanya satu MSS (panjang segmen paket maksimum) selepas setiap penghantaran selesai. Sebagai contoh, walaupun 10 segmen paket diakui, nilai CWND hanya akan meningkat sebanyak satu MSS. Ini adalah model pertumbuhan linear dan ia juga mempunyai terikat atas pertumbuhan. Apabila kehilangan paket berlaku, nilai CWND ditukar kepada MSS, dan nilai ssthresh ditetapkan kepada separuh daripada CWND. Atau ia juga akan menghentikan pertumbuhan MSS apabila 3 respons ACK berlebihan diterima. Sekiranya tiga ACK berlebihan masih diterima selepas mengurangkan nilai CWND, nilai SSTHESH direkodkan sebagai separuh nilai CWND dan keadaan pemulihan cepat dimasukkan.

Pemulihan cepat
Dalam keadaan pemulihan yang cepat, nilai CWND tetingkap kesesakan ditingkatkan oleh satu MSS untuk setiap ACK yang diterima, iaitu ACK yang tidak tiba dalam urutan. Ini adalah untuk menggunakan segmen paket yang telah berjaya dihantar dalam rangkaian untuk meningkatkan kecekapan penghantaran sebanyak mungkin.

Apabila ACK segmen paket yang hilang tiba, TCP mengurangkan nilai CWND dan kemudian memasuki keadaan mengelakkan kesesakan. Ini adalah untuk mengawal saiz tetingkap kesesakan dan mengelakkan peningkatan kesesakan rangkaian.

Sekiranya masa tamat berlaku selepas keadaan kawalan kesesakan, keadaan rangkaian menjadi lebih serius dan TCP berhijrah dari keadaan mengelakkan kesesakan ke keadaan perlahan. Dalam kes ini, nilai CWND tetingkap kesesakan ditetapkan kepada 1 mss, panjang segmen paket maksimum, dan nilai ambang slow-start ssthresh ditetapkan kepada separuh daripada CWND. Tujuannya adalah untuk meningkatkan semula saiz tetingkap kesesakan selepas rangkaian pulih untuk mengimbangi kadar penghantaran dan tahap kesesakan rangkaian.

Ringkasan
Sebagai protokol pengangkutan yang boleh dipercayai, TCP melaksanakan pengangkutan yang boleh dipercayai dengan nombor urutan, pengakuan, kawalan penghantaran semula, pengurusan sambungan dan kawalan tetingkap. Antaranya, mekanisme kawalan aliran mengawal jumlah data yang dihantar oleh pengirim mengikut kapasiti penerima sebenar penerima, yang menghindari masalah kesesakan rangkaian dan kemerosotan prestasi. Mekanisme kawalan kesesakan mengelakkan berlakunya kesesakan rangkaian dengan menyesuaikan jumlah data yang dihantar oleh pengirim. Konsep tetingkap kesesakan dan tetingkap penghantaran berkaitan dengan satu sama lain, dan jumlah data pada penghantar dikawal dengan melaraskan saiz tetingkap kesesakan secara dinamik. Permulaan perlahan, mengelakkan kesesakan dan pemulihan cepat adalah tiga bahagian utama algoritma kawalan kesesakan TCP, yang menyesuaikan saiz tetingkap kesesakan melalui strategi yang berbeza untuk menyesuaikan diri dengan kapasiti dan kesesakan rangkaian.

Dalam bahagian seterusnya, kami akan mengkaji mekanisme penghantaran semula TCP secara terperinci. Mekanisme penghantaran semula adalah bahagian penting TCP untuk mencapai penghantaran yang boleh dipercayai. Ia memastikan penghantaran data yang boleh dipercayai dengan menghantar semula data yang hilang, rosak atau tertunda. Prinsip pelaksanaan dan strategi mekanisme penghantaran semula akan diperkenalkan dan dianalisis secara terperinci dalam bahagian seterusnya. Tinggal!


Masa Post: Feb-24-2025