Pengangkutan Kebolehpercayaan TCP
Kita semua biasa dengan protokol TCP sebagai protokol pengangkutan yang boleh dipercayai, tetapi bagaimana ia memastikan kebolehpercayaan pengangkutan?
Untuk mencapai penghantaran yang andal, banyak faktor perlu dipertimbangkan, seperti kerosakan data, kehilangan, pertindihan dan serpihan yang tidak teratur. Jika masalah ini tidak dapat diselesaikan, penghantaran yang andal tidak dapat dicapai.
Oleh itu, TCP menggunakan mekanisme seperti nombor jujukan, balasan pengakuan, kawalan penghantaran semula, pengurusan sambungan dan kawalan tetingkap untuk mencapai penghantaran yang boleh dipercayai.
Dalam kertas kerja ini, kami akan menumpukan pada tetingkap gelongsor, kawalan aliran dan kawalan kesesakan TCP. Mekanisme penghantaran semula dibincangkan secara berasingan dalam bahagian seterusnya.
Kawalan Aliran Rangkaian
Kawalan Aliran Rangkaian atau dikenali sebagai Kawalan Trafik Rangkaian sebenarnya merupakan manifestasi hubungan halus antara pengeluar dan pengguna. Anda mungkin pernah menghadapi senario ini banyak di tempat kerja atau dalam temu duga. Jika kapasiti pengeluar untuk menghasilkan jauh melebihi kapasiti pengguna untuk menggunakan, ia akan menyebabkan barisan bertambah tanpa had. Dalam kes yang lebih serius, anda mungkin tahu bahawa apabila mesej RabbitMQ terlalu banyak terkumpul, ia boleh menyebabkan kemerosotan prestasi keseluruhan pelayan MQ. Perkara yang sama berlaku untuk TCP; jika dibiarkan tanpa disemak, terlalu banyak mesej akan dimasukkan ke dalam rangkaian, dan pengguna akan melebihi kapasiti mereka, manakala pengeluar akan terus menghantar mesej pendua, yang akan memberi kesan yang besar kepada prestasi rangkaian.
Untuk menangani fenomena ini, TCP menyediakan mekanisme untuk penghantar mengawal jumlah data yang dihantar berdasarkan kapasiti penerimaan sebenar penerima, yang dikenali sebagai kawalan aliran. Penerima mengekalkan tetingkap penerimaan, manakala penghantar mengekalkan tetingkap penghantaran. Perlu diingatkan bahawa Windows ini hanya untuk sambungan TCP tunggal dan tidak semua sambungan berkongsi tetingkap.
TCP menyediakan kawalan aliran dengan menggunakan pembolehubah untuk tetingkap penerimaan. Tetingkap penerimaan memberikan penghantar petunjuk tentang berapa banyak ruang cache yang masih tersedia. Penghantar mengawal jumlah data yang dihantar mengikut kapasiti penerimaan sebenar penerima.
Hos penerima memberitahu penghantar tentang saiz data yang boleh diterimanya, dan penghantar menghantar sehingga had ini. Had ini ialah saiz tetingkap, ingat pengepala TCP? Terdapat medan tetingkap penerimaan, yang digunakan untuk menunjukkan bilangan bait yang boleh atau sanggup diterima oleh penerima.
Hos penghantar akan menghantar paket prob tetingkap secara berkala, yang digunakan untuk mengesan sama ada hos penerima masih boleh menerima data. Apabila penimbal penerima berada dalam bahaya limpahan, saiz tetingkap ditetapkan kepada nilai yang lebih kecil untuk mengarahkan penghantar mengawal jumlah data yang dihantar.
Berikut ialah gambarajah Kawalan Aliran Rangkaian:
Kawalan Kesesakan Rangkaian
Sebelum memperkenalkan kawalan kesesakan, kita perlu faham bahawa selain tetingkap penerimaan dan tetingkap penghantaran, terdapat juga tetingkap kesesakan, yang digunakan terutamanya untuk menyelesaikan masalah pada kadar penghantar mula menghantar data ke tetingkap penerimaan. Oleh itu, tetingkap kesesakan juga diselenggara oleh penghantar TCP. Kita memerlukan algoritma untuk menentukan berapa banyak data yang sesuai untuk dihantar, kerana menghantar terlalu sedikit atau terlalu banyak data tidak ideal, oleh itu konsep tetingkap kesesakan.
Dalam kawalan aliran rangkaian sebelumnya, apa yang kami elakkan ialah penghantar mengisi cache penerima dengan data, tetapi kami tidak tahu apa yang berlaku dalam rangkaian. Lazimnya, rangkaian komputer berada dalam persekitaran yang dikongsi. Akibatnya, mungkin terdapat kesesakan rangkaian disebabkan oleh 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 memasuki kitaran ganas dan terus menjadi lebih besar.
Oleh itu, TCP tidak boleh mengabaikan apa yang berlaku di rangkaian. Apabila rangkaian sesak, TCP mengorbankan dirinya dengan mengurangkan jumlah data yang dihantarnya.
Oleh itu, kawalan kesesakan dicadangkan, yang bertujuan untuk mengelakkan keseluruhan rangkaian dipenuhi dengan data daripada penghantar. Untuk mengawal selia jumlah data yang perlu dihantar oleh penghantar, TCP mentakrifkan konsep yang dipanggil tetingkap kesesakan. Algoritma kawalan kesesakan akan melaraskan saiz tetingkap kesesakan mengikut tahap kesesakan rangkaian, supaya dapat mengawal jumlah data yang dihantar oleh penghantar.
Apakah itu tetingkap kesesakan? Apakah kaitannya dengan tetingkap penghantaran?
Tetingkap Kesesakan ialah pembolehubah keadaan yang dikekalkan oleh penghantar yang menentukan jumlah data yang boleh dihantar oleh penghantar. Tetingkap kesesakan berubah secara dinamik mengikut tahap kesesakan rangkaian.
Tetingkap Penghantar ialah saiz tetingkap yang dipersetujui antara penghantar dan penerima yang menunjukkan jumlah data yang boleh diterima oleh penerima. Tetingkap kesesakan dan tetingkap penghantar adalah berkaitan; tetingkap penghantar biasanya sama dengan minimum bagi Tetingkap kesesakan dan penerima, iaitu, swnd = min(cwnd, rwnd).
Keupayaan tetingkap kesesakan berubah seperti berikut:
Jika tiada kesesakan dalam rangkaian, iaitu, tiada tamat masa penghantaran semula berlaku, tempoh kesesakan akan meningkat.
Jika terdapat kesesakan dalam rangkaian, tempoh kesesakan akan berkurangan.
Penghantar menentukan sama ada rangkaian sesak dengan memerhatikan sama ada paket pengakuan ACK diterima dalam masa yang ditetapkan. Jika penghantar tidak menerima paket pengakuan ACK dalam masa yang ditetapkan, rangkaian dianggap sesak.
Selain 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 penghantar meningkatkan tetingkap kesesakan secara eksponen untuk menyesuaikan diri dengan kapasiti rangkaian dengan cepat.
Pengelakan Kesesakan:Selepas tetingkap kesesakan melebihi ambang tertentu, penghantar meningkatkan tetingkap kesesakan secara linear untuk memperlahankan kadar pertumbuhan tetingkap kesesakan dan mengelakkan beban berlebihan pada rangkaian.
Pemulihan Pantas:Jika kesesakan berlaku, penghantar akan mengurangkan separuh tetingkap kesesakan dan memasuki keadaan pemulihan pantas untuk menentukan lokasi pemulihan rangkaian melalui akaun pendua yang diterima, dan kemudian terus meningkatkan tetingkap kesesakan.
Permulaan Perlahan
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 MSS/RTT bait/saat. Lebar jalur sebenar yang tersedia biasanya jauh lebih besar daripada MSS/RTT, jadi TCP ingin mencari kadar penghantaran optimum, yang boleh dicapai melalui permulaan perlahan.
Dalam proses permulaan perlahan, nilai cwnd tetingkap kesesakan akan diinisialisasikan kepada 1 MSS, dan setiap kali segmen paket yang dihantar diiktiraf, nilai cwnd akan ditingkatkan sebanyak satu MSS, iaitu, nilai cwnd akan menjadi 2 MSS. Selepas itu, nilai cwnd digandakan untuk setiap penghantaran segmen paket yang berjaya, dan begitulah seterusnya. Proses pertumbuhan khusus ditunjukkan dalam rajah berikut.
Walau bagaimanapun, kadar penghantaran tidak selalunya boleh meningkat; pertumbuhan itu perlu berakhir pada suatu masa nanti. Jadi, bilakah peningkatan kadar penghantaran akan berakhir? Permulaan perlahan biasanya menamatkan peningkatan kadar penghantaran dalam salah satu daripada beberapa cara:
Cara pertama ialah kes kehilangan paket semasa proses penghantaran permulaan perlahan. Apabila kehilangan paket berlaku, TCP menetapkan tetingkap kesesakan penghantar cwnd kepada 1 dan memulakan semula proses permulaan perlahan. Pada ketika ini, konsep ambang permulaan perlahan ssthresh 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 dengan menghubungkan secara langsung dengan nilai ambang permulaan perlahan ssthresh. Oleh kerana nilai ssthresh adalah 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 berakhir adalah jika tiga ack berlebihan dikesan, TCP melakukan penghantaran semula yang pantas dan memasuki keadaan pemulihan. (Jika tidak jelas mengapa terdapat tiga paket ACK, ia akan dijelaskan secara berasingan dalam mekanisme penghantaran semula.)
Pengelakan Kesesakan
Apabila TCP memasuki keadaan kawalan kesesakan, cwnd ditetapkan kepada separuh daripada ambang kesesakan ssthresh. Ini bermakna nilai cwnd tidak boleh digandakan setiap kali segmen paket diterima. Sebaliknya, pendekatan yang agak konservatif diguna pakai di mana nilai cwnd ditambah hanya dengan satu MSS (panjang segmen paket maksimum) selepas setiap penghantaran selesai. Contohnya, walaupun 10 segmen paket diakui, nilai cwnd hanya akan meningkat sebanyak satu MSS. Ini adalah 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 daripada nilai cwnd dan keadaan pemulihan pantas dimasukkan.
Pemulihan Pantas
Dalam keadaan Pemulihan Pantas, nilai cwnd tetingkap kesesakan ditingkatkan sebanyak satu MSS untuk setiap ACK berlebihan yang diterima, iaitu, ACK yang tidak tiba secara berurutan. Ini adalah untuk memanfaatkan segmen paket yang telah berjaya dihantar dalam rangkaian bagi meningkatkan kecekapan penghantaran sebanyak mungkin.
Apabila ACK bagi segmen paket yang hilang tiba, TCP akan mengurangkan nilai cwnd dan kemudian memasuki keadaan mengelakkan kesesakan. Ini adalah untuk mengawal saiz tetingkap kesesakan dan mengelakkan peningkatan selanjutnya daripada kesesakan rangkaian.
Jika tamat masa berlaku selepas keadaan kawalan kesesakan, keadaan rangkaian menjadi lebih serius dan TCP akan 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 mula 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 andal, TCP melaksanakan pengangkutan yang andal melalui nombor jujukan, pengakuan, kawalan penghantaran semula, pengurusan sambungan dan kawalan tetingkap. Antaranya, mekanisme kawalan aliran mengawal jumlah data yang dihantar oleh penghantar mengikut kapasiti penerimaan sebenar penerima, yang mengelakkan masalah kesesakan rangkaian dan penurunan prestasi. Mekanisme kawalan kesesakan mengelakkan berlakunya kesesakan rangkaian dengan melaraskan jumlah data yang dihantar oleh penghantar. Konsep tetingkap kesesakan dan tetingkap penghantaran berkaitan antara satu sama lain, dan jumlah data pada penghantar dikawal dengan melaraskan saiz tetingkap kesesakan secara dinamik. Permulaan perlahan, mengelakkan kesesakan dan pemulihan pantas adalah tiga bahagian utama algoritma kawalan kesesakan TCP, yang melaraskan saiz tetingkap kesesakan melalui strategi yang berbeza untuk menyesuaikan diri dengan kapasiti dan tahap kesesakan rangkaian.
Dalam bahagian seterusnya, kita akan mengkaji mekanisme penghantaran semula TCP secara terperinci. Mekanisme penghantaran semula merupakan bahagian penting TCP untuk mencapai penghantaran yang andal. Ia memastikan penghantaran data yang andal 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: 24 Feb-2025

