TCP Etibarlı Nəqliyyat
Etibarlı nəqliyyat protokolu kimi TCP protokolu ilə hamımız tanışıq, lakin o, nəqliyyatın etibarlılığını necə təmin edir?
Etibarlı ötürmə əldə etmək üçün məlumatların pozulması, itkisi, təkrarlanması və sıradan çıxmış qırıqlar kimi bir çox amillər nəzərə alınmalıdır. Əgər bu problemlər həll olunmazsa, etibarlı ötürmə əldə edilə bilməz.
Buna görə də, TCP etibarlı ötürmə əldə etmək üçün ardıcıllıq nömrəsi, təsdiq cavabı, təkrar göndərmə nəzarəti, əlaqənin idarə edilməsi və pəncərə nəzarəti kimi mexanizmlərdən istifadə edir.
Bu yazıda biz TCP-nin sürüşmə pəncərəsi, axın nəzarəti və tıxanma nəzarətinə diqqət yetirəcəyik. Yenidən ötürmə mexanizmi növbəti bölmədə ayrıca əhatə olunur.
Şəbəkə axınına nəzarət
Şəbəkə axınına nəzarət və ya Şəbəkə Trafikinə Nəzarət əslində istehsalçılar və istehlakçılar arasında incə əlaqənin təzahürüdür. Yəqin ki, işdə və ya müsahibələr zamanı bu ssenari ilə çox rastlaşmısınız. İstehsalçının istehsal gücü istehlakçının istehlak qabiliyyətini xeyli üstələyirsə, bu növbənin qeyri-müəyyən müddətə artmasına səbəb olacaq. Daha ciddi bir vəziyyətdə, RabbitMQ mesajları çox yığıldıqda, bütün MQ serverinin performansının pisləşməsinə səbəb ola biləcəyini bilə bilərsiniz. Eyni şey TCP üçün də keçərlidir; yoxlanılmazsa, şəbəkəyə çoxlu mesajlar qoyulacaq və istehlakçılar öz imkanlarını aşmış olacaqlar, istehsalçılar isə dublikat mesajlar göndərməyə davam edəcəklər ki, bu da şəbəkənin işinə böyük təsir göstərəcək.
Bu fenomeni həll etmək üçün TCP göndəriciyə axın nəzarəti kimi tanınan alıcının faktiki qəbuletmə qabiliyyətinə əsasən göndərilən məlumatların miqdarına nəzarət etmək üçün bir mexanizm təqdim edir. Alıcı qəbul pəncərəsini, göndərən isə göndərmə pəncərəsini saxlayır. Qeyd etmək lazımdır ki, bu Windows yalnız bir TCP bağlantısı üçündür və bütün bağlantılar bir pəncərə paylaşmır.
TCP qəbul pəncərəsi üçün dəyişəndən istifadə edərək axın nəzarətini təmin edir. Qəbul pəncərəsi göndərənə nə qədər keş yaddaşının hələ də mövcud olduğunu göstərir. Göndərən qəbuledicinin faktiki qəbuletmə qabiliyyətinə uyğun olaraq göndərilən məlumatların miqdarına nəzarət edir.
Qəbul edən host, qəbul edə biləcəyi məlumatların ölçüsünü göndərənə xəbər verir və göndərən bu limitə qədər göndərir. Bu limit pəncərə ölçüsüdür, TCP başlığını xatırlayırsınız? Alıcının qəbul edə biləcəyi və ya qəbul etmək istədiyi baytların sayını göstərmək üçün istifadə olunan qəbul pəncərəsi sahəsi var.
Göndərən host vaxtaşırı olaraq qəbuledici hostun hələ də məlumatları qəbul edə bilib-bilmədiyini aşkar etmək üçün istifadə olunan pəncərə zondu paketini göndərəcək. Qəbuledicinin buferi daşmaq təhlükəsi ilə üzləşdikdə, göndərənə göndərilən məlumatların miqdarına nəzarət etməyi tapşırmaq üçün pəncərə ölçüsü daha kiçik bir dəyərə təyin edilir.
Budur Şəbəkə axınına nəzarət diaqramı:
Şəbəkə Tıxanmasına Nəzarət
Tıxaclara nəzarəti tətbiq etməzdən əvvəl başa düşməliyik ki, qəbul pəncərəsi və göndərmə pəncərəsinə əlavə olaraq, əsasən göndəricinin qəbul pəncərəsinə məlumat göndərməyə nə dərəcədə başlaması problemini həll etmək üçün istifadə olunan sıxlıq pəncərəsi də var. Buna görə də, tıxac pəncərəsi də TCP göndəricisi tərəfindən saxlanılır. Nə qədər məlumat göndərmək üçün uyğun olduğuna qərar vermək üçün bir alqoritmə ehtiyacımız var, çünki çox az və ya çox məlumat göndərmək ideal deyil, buna görə də tıxac pəncərəsi anlayışı yaranır.
Əvvəlki şəbəkə axınına nəzarətdə, bizim qaçındığımız şey göndəricinin qəbuledicinin önbelleğini məlumatla doldurması idi, lakin biz şəbəkədə nə baş verdiyini bilmirdik. Tipik olaraq, kompüter şəbəkələri ortaq bir mühitdə olur. Nəticədə, digər hostlar arasında əlaqə səbəbindən şəbəkə sıxlığı ola bilər.
Şəbəkə sıx olduqda, çox sayda paket göndərilməyə davam edilərsə, gecikmə və paketlərin itirilməsi kimi problemlər yarana bilər. Bu zaman TCP verilənləri yenidən ötürəcək, lakin təkrar ötürmə şəbəkənin yükünü artıracaq, nəticədə daha böyük gecikmələr və daha çox paket itkiləri olacaq. Bu, pis bir dövrəyə girə və daha da böyüyə bilər.
Beləliklə, TCP şəbəkədə baş verənlərə göz yuma bilməz. Şəbəkə sıx olduqda, TCP göndərdiyi məlumatların miqdarını azaltmaqla özünü qurban verir.
Buna görə də, bütün şəbəkəni göndəricinin məlumatları ilə doldurmamaq məqsədi daşıyan sıxlığa nəzarət təklif olunur. Göndərənin göndərməli olduğu məlumatların miqdarını tənzimləmək üçün TCP tıxac pəncərəsi adlanan konsepsiyanı müəyyən edir. Tıxaclara nəzarət alqoritmi göndərici tərəfindən göndərilən məlumatların miqdarına nəzarət etmək üçün tıxac pəncərəsinin ölçüsünü şəbəkənin sıxlıq dərəcəsinə uyğun olaraq tənzimləyəcək.
Tıxac pəncərəsi nədir? Bunun göndərmə pəncərəsi ilə nə əlaqəsi var?
Tıxanma Pəncərəsi göndərənin göndərə biləcəyi məlumatların miqdarını təyin edən göndərici tərəfindən saxlanılan vəziyyət dəyişənidir. Tıxac pəncərəsi şəbəkənin sıxlıq səviyyəsinə uyğun olaraq dinamik şəkildə dəyişir.
Göndərmə Pəncərəsi, alıcının qəbul edə biləcəyi məlumatların miqdarını göstərən göndərici və alıcı arasında razılaşdırılmış pəncərə ölçüsüdür. Tıxac pəncərəsi və göndərmə pəncərəsi əlaqəlidir; göndərmə pəncərəsi adətən tıxac və qəbul edən Windows-un minimumuna bərabərdir, yəni swnd = min(cwnd, rwnd).
Tıxac pəncərəsi cwnd aşağıdakı kimi dəyişir:
Şəbəkədə tıxac yoxdursa, yəni təkrar ötürmə müddəti baş vermirsə, tıxac pəncərəsi artır.
Şəbəkədə sıxlıq varsa, tıxac pəncərəsi azalır.
Göndərən ACK təsdiq paketinin göstərilən vaxt ərzində qəbul edilib-edilmədiyini müşahidə edərək şəbəkənin sıx olub-olmadığını müəyyən edir. Göndərən ACK təsdiq paketini göstərilən vaxt ərzində almazsa, şəbəkədə sıxlıq yaranmış hesab edilir.
Tıxac pəncərəsinə əlavə olaraq, TCP tıxanmasına nəzarət alqoritmini müzakirə etməyin vaxtı gəldi. TCP sıxlığına nəzarət alqoritmi üç əsas hissədən ibarətdir:
Yavaş Başlama:Əvvəlcə cwnd tıxac pəncərəsi nisbətən kiçikdir və göndərən şəbəkənin tutumuna tez uyğunlaşmaq üçün tıxac pəncərəsini eksponent olaraq artırır.
Tıxacın qarşısının alınması:Tıxanma pəncərəsi müəyyən həddi aşdıqdan sonra göndərici tıxac pəncərəsinin artım sürətini yavaşlatmaq və şəbəkəni həddən artıq yükləməkdən qaçmaq üçün tıxac pəncərəsini xətti şəkildə artırır.
Tez bərpa:Tıxac yaranarsa, göndərən tıxac pəncərəsini yarıya endirir və alınan dublikat acks vasitəsilə şəbəkənin bərpasının yerini müəyyən etmək üçün sürətli bərpa vəziyyətinə daxil olur və sonra tıxac pəncərəsini artırmağa davam edir.
Yavaş Başlayın
TCP bağlantısı qurulduqda, tıxac pəncərəsi cwnd əvvəlcə minimum MSS (maksimum seqment ölçüsü) dəyərinə təyin edilir. Bu yolla, ilkin göndərmə sürəti təxminən MSS/RTT bayt/saniyədir. Faktiki mövcud bant genişliyi adətən MSS/RTT-dən çox böyükdür, ona görə də TCP yavaş başlanğıc vasitəsilə əldə edilə bilən optimal göndərmə sürətini tapmaq istəyir.
Yavaş başlanğıc prosesində tıxac pəncərəsinin cwnd dəyəri 1 MSS-ə inisiallaşdırılacaq və hər dəfə ötürülən paket seqmenti təsdiqləndikdə cwnd dəyəri bir MSS artırılacaq, yəni cwnd dəyəri 2 MSS olacaq. Bundan sonra paket seqmentinin hər uğurlu ötürülməsi üçün cwnd dəyəri ikiqat artır və s. Xüsusi böyümə prosesi aşağıdakı şəkildə göstərilmişdir.
Bununla belə, göndərmə dərəcəsi həmişə arta bilməz; artım nə vaxtsa bitməlidir. Beləliklə, göndərmə dərəcəsi artımı nə vaxt başa çatır? Yavaş başlanğıc adətən göndərmə sürətindəki artımı bir neçə yoldan biri ilə bitirir:
Birinci yol, yavaş başlanğıc göndərmə prosesi zamanı paket itkisidir. Paket itkisi baş verdikdə, TCP göndəricinin tıxac pəncərəsini cwnd 1-ə təyin edir və yavaş başlama prosesini yenidən başladır. Bu nöqtədə, ilkin dəyəri paket itkisini yaradan cwnd dəyərinin yarısı olan yavaş başlanğıc həddi ssthresh konsepsiyası təqdim edilir. Yəni tıxac aşkar edildikdə, ssthresh dəyəri pəncərə dəyərinin yarısıdır.
İkinci yol, yavaş başlanğıc həddi ssthresh dəyəri ilə birbaşa əlaqələndirməkdir. Tıxac aşkar edildikdə ssthresh dəyəri pəncərə dəyərinin yarısı olduğundan, cwnd ssthresh-dən böyük olduqda hər ikiqat artımda paket itkisi baş verə bilər. Buna görə də, cwnd-ı ssthresh-ə təyin etmək ən yaxşısıdır, bu, TCP-nin tıxaclara nəzarət rejiminə keçməsinə və yavaş başlanğıcı bitirməsinə səbəb olacaqdır.
Yavaş başlanğıcın bitməsinin son yolu, üç lazımsız ötürmə aşkar edilərsə, TCP sürətli təkrar ötürmə həyata keçirir və bərpa vəziyyətinə keçir. (Üç ACK paketinin olmasının səbəbi aydın deyilsə, bu, təkrar ötürmə mexanizmində ayrıca izah ediləcəkdir.)
Tıxacın qarşısının alınması
TCP sıxlığa nəzarət vəziyyətinə daxil olduqda, cwnd tıxac həddinin yarısına təyin edilir. Bu o deməkdir ki, hər dəfə paket seqmenti alındıqda cwnd dəyəri ikiqat artırıla bilməz. Əvəzində, hər bir ötürmə tamamlandıqdan sonra cwnd dəyərinin yalnız bir MSS (paket seqmentinin maksimum uzunluğu) artırıldığı nisbətən mühafizəkar yanaşma qəbul edilir. Məsələn, hətta 10 paket seqmenti qəbul edilsə belə, cwnd dəyəri yalnız bir MSS artacaq. Bu, xətti böyümə modelidir və onun da böyümənin yuxarı həddi var. Paket itkisi baş verdikdə, cwnd dəyəri MSS-ə dəyişdirilir və ssthresh dəyəri cwnd-in yarısına təyin olunur. Və ya 3 lazımsız ACK cavabı alındıqda MSS-nin böyüməsini dayandıracaq. Əgər cwnd dəyərinin yarıya endirilməsindən sonra hələ də üç lazımsız acks alınırsa, ssthresh dəyəri cwnd dəyərinin yarısı kimi qeyd olunur və sürətli bərpa vəziyyəti daxil edilir.
Sürətli Bərpa
Sürətli Bərpa vəziyyətində tıxac pəncərəsinin dəyəri cwnd hər qəbul edilmiş lazımsız ACK, yəni ardıcıllıqla gəlməyən ACK üçün bir MSS artırılır. Bu, ötürmə səmərəliliyini mümkün qədər artırmaq üçün şəbəkədə uğurla ötürülən paket seqmentlərindən istifadə etməkdir.
İtirilmiş paket seqmentinin ACK-ı gəldikdə, TCP cwnd dəyərini azaldır və sonra tıxacdan yayınma vəziyyətinə keçir. Bu, tıxac pəncərəsinin ölçüsünə nəzarət etmək və şəbəkə sıxlığının daha da artmasının qarşısını almaq üçündür.
Tıxaclara nəzarət vəziyyətindən sonra fasilə yaranarsa, şəbəkə vəziyyəti daha ciddi olur və TCP sıxlığın qarşısının alınması vəziyyətindən yavaş işə salınma vəziyyətinə keçir. Bu halda, tıxac pəncərəsinin cwnd dəyəri 1 MSS, maksimum paket seqmentinin uzunluğu və yavaş başlanğıc həddi ssthresh dəyəri cwnd-in yarısı olaraq təyin edilir. Bunun məqsədi ötürmə sürətini və şəbəkə sıxlığının dərəcəsini balanslaşdırmaq üçün şəbəkə bərpa edildikdən sonra tıxac pəncərəsinin ölçüsünü yenidən tədricən artırmaqdır.
Xülasə
Etibarlı nəqliyyat protokolu olaraq, TCP ardıcıl nömrəsi, təsdiq, təkrar ötürmə nəzarəti, əlaqə idarəetməsi və pəncərə nəzarəti ilə etibarlı nəqli həyata keçirir. Onların arasında axına nəzarət mexanizmi qəbuledicinin faktiki qəbuletmə qabiliyyətinə uyğun olaraq göndərici tərəfindən göndərilən məlumatların miqdarına nəzarət edir ki, bu da şəbəkə sıxlığı və performansın aşağı düşməsi problemlərindən qaçınır. Tıxanmaya nəzarət mexanizmi göndərən tərəfindən göndərilən məlumatların miqdarını tənzimləməklə şəbəkə sıxlığının yaranmasının qarşısını alır. Tıxanma pəncərəsi və göndərmə pəncərəsi anlayışları bir-biri ilə əlaqəlidir və tıxac pəncərəsinin ölçüsünü dinamik şəkildə tənzimləməklə göndəricidəki məlumatların miqdarı idarə olunur. Yavaş başlanğıc, sıxlığın qarşısının alınması və sürətli bərpa TCP tıxacına nəzarət alqoritminin üç əsas hissəsidir ki, onlar şəbəkənin tutumuna və tıxac dərəcəsinə uyğunlaşmaq üçün müxtəlif strategiyalar vasitəsilə tıxac pəncərəsinin ölçüsünü tənzimləyir.
Növbəti hissədə TCP-nin təkrar ötürmə mexanizmini ətraflı şəkildə araşdıracağıq. Etibarlı ötürmə əldə etmək üçün təkrar ötürmə mexanizmi TCP-nin vacib hissəsidir. O, itirilmiş, pozulmuş və ya gecikmiş məlumatları təkrar ötürməklə məlumatların etibarlı ötürülməsini təmin edir. Yenidən ötürülmə mexanizminin həyata keçirilməsi prinsipi və strategiyası növbəti bölmədə ətraflı şəkildə təqdim ediləcək və təhlil ediləcəkdir. Bizimlə qalın!
Göndərmə vaxtı: 24 fevral 2025-ci il