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 bagaimanakah ia memastikan kebolehpercayaan pengangkutan?

Untuk mencapai penghantaran yang boleh dipercayai, banyak faktor perlu dipertimbangkan, seperti kerosakan data, kehilangan, pertindihan, dan serpihan yang tidak teratur. Jika masalah ini tidak dapat diselesaikan, penghantaran yang boleh dipercayai tidak dapat dicapai.

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

Dalam kertas ini, kita akan menumpukan pada tetingkap gelongsor, kawalan aliran dan kawalan kesesakan TCP. Mekanisme penghantaran semula dilindungi secara berasingan dalam bahagian seterusnya.

Kawalan Aliran Rangkaian
Kawalan Aliran Rangkaian atau dikenali sebagai Kawalan Trafik Rangkaian sebenarnya adalah manifestasi hubungan halus antara pengeluar dan pengguna. Anda mungkin sering menjumpai senario ini di tempat kerja atau dalam temu duga. Jika kapasiti pengeluar untuk menghasilkan sangat melebihi kapasiti pengguna untuk menggunakan, ia akan menyebabkan barisan meningkat tanpa had. Dalam kes yang lebih serius, anda mungkin tahu bahawa apabila mesej RabbitMQ bertimbun terlalu banyak, ia boleh menyebabkan kemerosotan prestasi keseluruhan pelayan MQ. Perkara yang sama berlaku untuk TCP; jika dibiarkan, terlalu banyak mesej akan dimasukkan ke dalam rangkaian, dan pengguna akan melebihi kapasiti mereka, manakala pengeluar akan terus menghantar mesej pendua, yang akan menjejaskan prestasi rangkaian.

Untuk menangani fenomena ini, TCP menyediakan mekanisme untuk pengirim mengawal jumlah data yang dihantar berdasarkan kapasiti penerimaan sebenar penerima, yang dikenali sebagai kawalan aliran. Penerima mengekalkan tetingkap terima, manakala pengirim mengekalkan tetingkap hantar. Perlu diingatkan bahawa Windows ini hanya untuk satu sambungan TCP dan tidak semua sambungan berkongsi tetingkap.

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

Hos penerima memberitahu penghantar saiz data yang boleh diterimanya dan penghantar menghantar sehingga had ini. Had ini ialah saiz tetingkap, ingat pengepala TCP? Terdapat medan tetingkap terima, yang digunakan untuk menunjukkan bilangan bait yang boleh atau sanggup diterima oleh penerima.

Hos penghantar akan menghantar paket siasatan tetingkap secara berkala, yang digunakan untuk mengesan sama ada hos penerima masih boleh menerima data. Apabila penimbal penerima berada dalam bahaya melimpah, saiz tetingkap ditetapkan kepada nilai yang lebih kecil untuk mengarahkan pengirim mengawal jumlah data yang dihantar.

Berikut ialah gambarajah Kawalan Aliran Rangkaian:

Kawalan Lalu Lintas

Kawalan Kesesakan Rangkaian
Sebelum memperkenalkan kawalan kesesakan, kita perlu memahami bahawa sebagai tambahan kepada tetingkap terima dan tetingkap hantar, terdapat juga tetingkap kesesakan, yang digunakan terutamanya untuk menyelesaikan masalah pada kadar berapa pengirim mula menghantar data ke tetingkap terima. Oleh itu, tetingkap kesesakan juga diselenggara oleh pengirim TCP. Kami memerlukan algoritma untuk menentukan jumlah data yang sesuai untuk dihantar, kerana menghantar terlalu sedikit atau terlalu banyak data adalah tidak ideal, maka konsep tetingkap kesesakan.

Dalam kawalan aliran rangkaian sebelumnya, perkara yang kami elakkan ialah pengirim yang mengisi cache penerima dengan data, tetapi kami tidak tahu apa yang berlaku dalam rangkaian. Biasanya, rangkaian komputer berada dalam persekitaran yang dikongsi. Akibatnya, mungkin terdapat kesesakan rangkaian akibat komunikasi antara hos 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 pada rangkaian, mengakibatkan kelewatan yang lebih besar dan lebih banyak kehilangan paket. Ini boleh masuk ke dalam kitaran ganas dan terus menjadi lebih besar.

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

Oleh itu, kawalan kesesakan dicadangkan, yang bertujuan untuk mengelak daripada mengisi seluruh rangkaian dengan data daripada pengirim. Untuk mengawal jumlah data yang harus dihantar oleh pengirim, TCP mentakrifkan konsep yang dipanggil tetingkap kesesakan. Algoritma kawalan kesesakan akan melaraskan saiz tetingkap kesesakan mengikut tahap kesesakan rangkaian, untuk mengawal jumlah data yang dihantar oleh pengirim.

Apakah tingkap kesesakan? Apakah kaitan ini dengan tetingkap hantar?

Tetingkap Kesesakan ialah pembolehubah keadaan yang dikekalkan oleh pengirim yang menentukan jumlah data yang boleh dihantar oleh pengirim. Tetingkap kesesakan berubah secara dinamik mengikut tahap kesesakan rangkaian.

Tetingkap Menghantar ialah saiz tetingkap yang dipersetujui antara pengirim dan penerima yang menunjukkan jumlah data yang boleh diterima oleh penerima. Tetingkap kesesakan dan tetingkap penghantaran adalah berkaitan; tetingkap penghantaran biasanya sama dengan minimum kesesakan dan Windows penerima, iaitu, swnd = min(cwnd, rwnd).

Tetingkap kesesakan cwnd berubah seperti berikut:

Jika tiada kesesakan dalam rangkaian, iaitu, tiada tamat masa penghantaran semula berlaku, tetingkap kesesakan meningkat.

Jika terdapat kesesakan dalam rangkaian, tetingkap kesesakan berkurangan.

Pengirim menentukan sama ada rangkaian sesak dengan memerhati sama ada paket pengakuan ACK diterima dalam masa yang ditetapkan. Jika pengirim tidak menerima paket pengakuan ACK dalam masa yang ditetapkan, ia dianggap rangkaian sesak.

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

Mula Lambat:Pada mulanya, tetingkap kesesakan cwnd agak kecil, dan pengirim meningkatkan tetingkap kesesakan secara eksponen untuk menyesuaikan diri dengan cepat dengan kapasiti rangkaian.
Mengelakkan kesesakan:Selepas tetingkap kesesakan melebihi ambang tertentu, pengirim meningkatkan tetingkap kesesakan secara linear untuk memperlahankan kadar pertumbuhan tetingkap kesesakan dan mengelakkan beban berlebihan rangkaian.
Pemulihan Cepat:Jika kesesakan berlaku, pengirim mengurangkan separuh tetingkap kesesakan dan memasuki keadaan pemulihan pantas untuk menentukan lokasi pemulihan rangkaian melalui acks pendua yang diterima, dan kemudian terus meningkatkan tetingkap kesesakan.

Mula Lambat
Apabila sambungan TCP diwujudkan, cwnd tetingkap kesesakan pada mulanya ditetapkan kepada nilai MSS (saiz segmen maksimum) minimum. Dengan cara ini, kadar penghantaran awal adalah kira-kira bait MSS/RTT/saat. Jalur lebar sebenar yang tersedia biasanya jauh lebih besar daripada MSS/RTT, jadi TCP ingin mencari kadar penghantaran yang optimum, yang boleh dicapai melalui permulaan perlahan.

Dalam proses permulaan perlahan, nilai cwnd tetingkap kesesakan akan dimulakan kepada 1 MSS, dan setiap kali segmen paket yang dihantar diakui, nilai cwnd akan dinaikkan sebanyak satu MSS, iaitu nilai cwnd akan menjadi 2 MSS. Selepas itu, nilai cwnd digandakan untuk setiap penghantaran segmen paket yang berjaya, dan seterusnya. Proses pertumbuhan khusus ditunjukkan dalam rajah berikut.

 Kawalan kesesakan rangkaian

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

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

Cara kedua ialah mengaitkan secara langsung dengan nilai ssthresh ambang permulaan perlahan. Oleh kerana nilai ssthresh ialah separuh daripada nilai tetingkap apabila kesesakan dikesan, kehilangan paket mungkin berlaku dengan setiap penggandaan apabila cwnd lebih besar daripada ssthresh. Oleh itu, adalah lebih baik untuk menetapkan cwnd kepada ssthresh, yang akan menyebabkan TCP bertukar kepada mod kawalan kesesakan dan menamatkan permulaan perlahan.

Cara terakhir permulaan perlahan boleh ditamatkan ialah jika tiga ack berlebihan dikesan, TCP melakukan penghantaran semula pantas dan memasuki keadaan pemulihan. (Jika tidak jelas mengapa terdapat tiga paket ACK, ia akan dijelaskan secara berasingan dalam mekanisme penghantaran semula.)

Mengelak Kesesakan
Apabila TCP memasuki keadaan kawalan kesesakan, cwnd ditetapkan kepada separuh ssthresh ambang kesesakan. Ini bermakna nilai cwnd tidak boleh digandakan setiap kali segmen paket diterima. Sebaliknya, pendekatan yang agak konservatif diguna pakai di mana nilai cwnd dinaikkan 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 ialah model pertumbuhan linear dan ia juga mempunyai had 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. Jika tiga ack berlebihan masih diterima selepas mengurangkan separuh nilai cwnd, nilai ssthresh direkodkan sebagai separuh nilai cwnd dan keadaan pemulihan pantas dimasukkan.

Pemulihan Cepat
Dalam keadaan Pemulihan Pantas, nilai cwnd tetingkap kesesakan dinaikkan sebanyak satu MSS untuk setiap ACK berlebihan 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 menurunkan nilai cwnd dan kemudian memasuki keadaan mengelakkan kesesakan. Ini adalah untuk mengawal saiz tetingkap kesesakan dan mengelakkan lagi kesesakan rangkaian.

Jika tamat masa berlaku selepas keadaan kawalan kesesakan, keadaan rangkaian menjadi lebih serius dan TCP berhijrah daripada keadaan mengelakkan kesesakan kepada keadaan mula perlahan. Dalam kes ini, nilai cwnd tetingkap kesesakan ditetapkan kepada 1 MSS, panjang segmen paket maksimum, dan nilai ssthresh ambang permulaan perlahan ditetapkan kepada separuh daripada cwnd. Tujuannya adalah untuk meningkatkan semula saiz tetingkap kesesakan secara beransur-ansur selepas rangkaian pulih untuk mengimbangi kadar penghantaran dan tahap kesesakan rangkaian.

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

Dalam bahagian seterusnya, kami akan memeriksa 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 tertangguh. Prinsip dan strategi pelaksanaan mekanisme penghantaran semula akan diperkenalkan dan dianalisis secara terperinci dalam bahagian seterusnya. Nantikan!


Masa siaran: Feb-24-2025