TCP-nin gizli silahı: Şəbəkə Axınına Nəzarət və Şəbəkə Tıxanmalarına Nəzarət

TCP Etibarlılıq Nəqli
Hamımız TCP protokolunu etibarlı nəqliyyat protokolu kimi tanıyırıq, bəs o, nəqliyyatın etibarlılığını necə təmin edir?

Etibarlı ötürməyə nail olmaq üçün məlumatların korlanması, itkisi, təkrarlanması və sıradan çıxmış hissəciklər kimi bir çox amillər nəzərə alınmalıdır. Bu problemlər həll edilə bilməzsə, etibarlı ötürməyə nail olmaq mümkün deyil.

Buna görə də, TCP etibarlı ötürməni təmin etmək üçün ardıcıllıq nömrəsi, təsdiq cavabı, yenidən göndərmə nəzarəti, əlaqə idarəetməsi və pəncərə nəzarəti kimi mexanizmlərdən istifadə edir.

Bu məqalədə 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. Təkrar ötürmə mexanizmi növbəti bölmədə ayrıca əhatə olunacaq.

Şəbəkə Axını Nəzarəti
Şəbəkə Axınının Nəzarəti və ya Şəbəkə Trafikinin Nəzarəti əslində istehsalçılar və istehlakçılar arasındakı incə əlaqənin təzahürüdür. Yəqin ki, bu ssenari ilə iş yerində və ya müsahibələrdə tez-tez rastlaşmısınız. Əgər istehsalçının istehsal gücü istehlakçının istehlak qabiliyyətindən xeyli çoxdursa, 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ının çox yığıldığı zaman bütün MQ serverinin performansının aşağı düş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 mesaj göndəriləcək və istehlakçılar tutumlarını aşacaq, istehsalçılar isə təkrarlanan mesajlar göndərməyə davam edəcəklər ki, bu da şəbəkənin performansına böyük təsir göstərəcək.

Bu fenomeni həll etmək üçün TCP, göndərənin alıcının faktiki qəbul tutumuna əsasən göndərilən məlumatların miqdarını idarə etməsi üçün bir mexanizm təmin edir ki, bu da axın nəzarəti adlanır. 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 tək bir TCP bağlantısı üçündür və bütün bağlantılar bir pəncərəni 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ə hələ də nə qədər keş boşluğunun mövcud olduğunu göstərir. Göndərən, alıcının faktiki qəbul tutumuna uyğun olaraq göndərilən məlumatların miqdarını idarə edir.

Qəbuledici host göndərənə ala biləcəyi məlumatların ölçüsü barədə məlumat 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 ala biləcəyi və ya almaq 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, qəbuledici hostun hələ də məlumatları qəbul edə bilib-bilmədiyini aşkar etmək üçün istifadə olunan pəncərə zond paketi vaxtaşırı göndərir. Alıcının buferi daşma təhlükəsi ilə üzləşdikdə, göndərənə göndərilən məlumatların miqdarını idarə 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ı Nəzarət Diaqramı:

Trafik Nəzarəti

Şəbəkə sıxlığına nəzarət
Yıxılma nəzarətini tətbiq etməzdən əvvəl, qəbul pəncərəsi və göndərmə pəncərəsindən əlavə, əsasən göndərənin qəbul pəncərəsinə hansı sürətlə məlumat göndərməyə başladığı problemini həll etmək üçün istifadə olunan bir tıxac pəncərəsinin də olduğunu başa düşməliyik. Buna görə də, tıxac pəncərəsi də TCP göndərən tərəfindən saxlanılır. Çox az və ya çox məlumat göndərmək ideal olmadığı üçün nə qədər məlumat göndərməyin uyğun olduğuna qərar vermək üçün bir alqoritmə ehtiyacımız var, buna görə də tıxac pəncərəsi anlayışı yarandı.

Əvvəlki şəbəkə axını idarəetməsində, göndərənin alıcının keş yaddaşını məlumatlarla doldurmasından qaçındıq, lakin şəbəkədə nə baş verdiyini bilmirdik. Adətən, 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ə tıxanması yarana bilər.

Şəbəkə sıx olduqda, çox sayda paket göndərilməyə davam edilərsə, gecikmə və paket itkisi kimi problemlərə səbəb ola bilər. Bu mərhələdə TCP məlumatları yenidən ötürəcək, lakin yenidən ötürmə şəbəkəyə yükü artıracaq və nəticədə daha böyük gecikmələr və daha çox paket itkisi baş verəcək. Bu, pis bir dövrəyə girə və daha da böyüyə bilər.

Beləliklə, TCP şəbəkədə baş verənləri görməzdən gələ bilməz. Şəbəkə yükləndikdə, TCP göndərdiyi məlumat miqdarını azaltmaqla özünü qurban verir.

Buna görə də, göndərəndən gələn məlumatlarla bütün şəbəkənin doldurulmasının qarşısını almaq məqsədi daşıyan tıxanma nəzarəti 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ıxanma pəncərəsi adlanan bir anlayış təyin edir. Tıxanma nəzarəti alqoritmi, göndərən tərəfindən göndərilən məlumatların miqdarını idarə etmək üçün tıxanma pəncərəsinin ölçüsünü şəbəkənin tıxanma dərəcəsinə uyğun olaraq tənzimləyəcək.

Tıxanma pəncərəsi nədir? Bunun göndərmə pəncərəsi ilə nə əlaqəsi var?

Yıxılma Pəncərəsi, göndərənin göndərə biləcəyi məlumat miqdarını təyin edən göndərən tərəfindən saxlanılan bir vəziyyət dəyişkənidir. Yıxılma pəncərəsi şəbəkənin tıxac səviyyəsinə uyğun olaraq dinamik olaraq dəyişir.

Göndərmə Pəncərəsi, göndərən və qəbul edən arasında razılaşdırılmış pəncərə ölçüsüdür və alıcının ala biləcəyi məlumat miqdarını göstərir. Sıxlıq 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 pəncərələrin minimumuna bərabərdir, yəni swnd = min(cwnd, rwnd).

Tıxanma pəncərəsi cwnd aşağıdakı kimi dəyişir:

Şəbəkədə tıxac yoxdursa, yəni təkrar ötürmə vaxtı baş vermirsə, tıxac pəncərəsi artır.

Şəbəkədə tıxac varsa, tıxac pəncərəsi azalır.

Göndərən, ACK təsdiq paketinin göstərilən vaxt ərzində alınıb-alınmadığını müşahidə edərək şəbəkənin yüklənib-yüklənmədiyini müəyyən edir. Göndərən ACK təsdiq paketini göstərilən vaxt ərzində almazsa, şəbəkənin yüklənib-yüklənmədiyi hesab olunur.

Tıxac pəncərəsinə əlavə olaraq, TCP tıxac nəzarət alqoritmini müzakirə etməyin vaxtıdır. TCP tıxac nəzarət alqoritmi üç əsas hissədən ibarətdir:

Yavaş Başlanğıc:Başlanğıcda, cwnd tıxanma pəncərəsi nisbətən kiçikdir və göndərən şəbəkənin tutumuna tez uyğunlaşmaq üçün tıxanma pəncərəsini eksponensial olaraq artırır.
Tıxanmanın Qarşısının Alınması:Tıxanma pəncərəsi müəyyən bir həddi keçdikdən sonra, göndərən tıxanma pəncərəsinin böyümə sürətini yavaşlatmaq və şəbəkənin həddindən artıq yüklənməsinin qarşısını almaq üçün tıxanma pəncərəsini xətti şəkildə artırır.
Sürətli Bərpa:Əgər tıxac yaranarsa, göndərən tıxac pəncərəsini yarıya endirir və alınan təkrarlanan cavablar vasitəsilə şəbəkənin bərpasının yerini müəyyən etmək üçün sürətli bərpa vəziyyətinə keçir və sonra tıxac pəncərəsini artırmağa davam edir.

Yavaş Başlanğıc
TCP bağlantısı qurulduqda, tıxanma pəncərəsi cwnd əvvəlcə minimum MSS (maksimum seqment ölçüsü) dəyərinə təyin edilir. Bu şəkildə, 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 daha böyükdür, buna görə də TCP optimal göndərmə sürətini tapmaq istəyir və buna yavaş başlanğıc yolu ilə nail olmaq olar.

Yavaş başlanğıc prosesində, tıxanma pəncərəsinin cwnd dəyəri 1 MSS-ə təyin ediləcək və ötürülən paket seqmenti hər dəfə 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ılır və s. Xüsusi böyümə prosesi aşağıdakı şəkildə göstərilib.

 Şəbəkə tıxanmasının idarə edilməsi

Lakin, göndərmə sürəti həmişə arta bilməz; artım nə vaxtsa bitməlidir. Bəs göndərmə sürətinin artması nə vaxt başa çatır? Yavaş başlanğıc adətən göndərmə sürətinin artımını bir neçə yolla dayandırır:

Birinci yol, yavaş başlanğıc göndərmə prosesi zamanı paket itkisi halıdır. Paket itkisi baş verdikdə, TCP göndərənin tıxanma pəncərəsi cwnd-ni 1-ə təyin edir və yavaş başlanğıc prosesini yenidən başladır. Bu mərhələdə, ilkin dəyəri paket itkisini yaradan cwnd dəyərinin yarısı olan yavaş başlanğıc həddi ssthresh anlayışı təqdim olunur. Yəni, tıxanma 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 korrelyasiya etməkdir. Sıxlıq 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 artdıqda paket itkisi baş verə bilər. Buna görə də, cwnd-i ssthresh olaraq təyin etmək ən yaxşısıdır ki, bu da TCP-nin tıxac nəzarət rejiminə keçməsinə və yavaş başlanğıcı dayandırmasına səbəb olacaq.

Yavaş başlanğıcın sonuncu yolu, üç artıq ack aşkar edildikdə, TCP sürətli bir yenidən ötürmə həyata keçirir və bərpa vəziyyətinə keçir. (Üç ACK paketinin niyə olduğu aydın deyilsə, bu, yenidən ötürmə mexanizmində ayrıca izah ediləcək.)

Tıxanmanın Qarşısının Alınması
TCP tıxanma nəzarət vəziyyətinə daxil olduqda, cwnd tıxanma həddi ssthresh-in yarısına təyin edilir. Bu o deməkdir ki, hər dəfə paket seqmenti qəbul edildikdə cwnd dəyəri ikiqat artırıla bilməz. Bunun əvəzinə, hər ötürmə başa çatdıqdan sonra cwnd dəyəri yalnız bir MSS (maksimum paket seqment uzunluğu) artırıldığı nisbətən mühafizəkar bir yanaşma tətbiq olunur. Məsələn, 10 paket seqmenti qəbul edilsə belə, cwnd dəyəri yalnız bir MSS artacaq. Bu, xətti böyümə modelidir və böyümə üçün yuxarı həddə malikdir. Paket itkisi baş verdikdə, cwnd dəyəri MSS-ə dəyişdirilir və ssthresh dəyəri cwnd-in yarısına təyin edilir. Yaxud 3 artıq ACK cavabı alındıqda MSS-in böyüməsini də dayandıracaq. Cwnd dəyəri yarıya endirildikdən sonra üç artıq ACK hələ də 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ə, ardıcıllıqla gəlməyən hər bir artıq ACK, yəni qəbul edilmiş ACK üçün tıxanma pəncərəsinin cwnd dəyəri bir MSS artırılır. Bu, şəbəkədə uğurla ötürülən paket seqmentlərindən istifadə edərək ötürmə səmərəliliyini mümkün qədər artırmaq üçündür.

İtirilmiş paket seqmentinin ACK-sı çatdıqda, TCP cwnd dəyərini azaldır və sonra tıxanmanın qarşısının alınması vəziyyətinə keçir. Bu, tıxanma pəncərəsinin ölçüsünü idarə etmək və şəbəkə tıxanmasının daha da artmasının qarşısını almaq üçündür.

Əgər tıxanma nəzarət vəziyyətindən sonra fasilə baş verərsə, şəbəkə vəziyyəti daha ciddiləşir və TCP tıxanmanın qarşısının alınması vəziyyətindən yavaş başlanğıc vəziyyətinə keçir. Bu halda, tıxanma pəncərəsinin cwnd dəyəri 1 MSS, maksimum paket seqment uzunluğu və yavaş başlanğıc həddi ssthresh dəyəri cwnd-in yarısına təyin edilir. Bunun məqsədi şəbəkə bərpa edildikdən sonra ötürmə sürətini və şəbəkə tıxanma dərəcəsini tarazlaşdırmaq üçün tıxanma pəncərəsinin ölçüsünü tədricən artırmaqdır.

Xülasə
Etibarlı nəqliyyat protokolu olaraq, TCP ardıcıllıq nömrəsi, təsdiq, təkrar ötürmə nəzarəti, bağlantı idarəetməsi və pəncərə nəzarəti ilə etibarlı nəqliyyat həyata keçirir. Bunların arasında axın idarəetmə mexanizmi göndərən tərəfindən göndərilən məlumatların miqdarını alıcının faktiki qəbul tutumuna uyğun olaraq idarə edir ki, bu da şəbəkə tıxanması və performansın azalması problemlərinin qarşısını alır. Tıxanma 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ə tıxanması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ə göndərəndəki məlumatların miqdarı tıxanma pəncərəsinin ölçüsünü dinamik şəkildə tənzimləməklə idarə olunur. Yavaş başlanğıc, tıxanmanın qarşısının alınması və sürətli bərpa, şəbəkənin tutumuna və tıxanma dərəcəsinə uyğunlaşmaq üçün müxtəlif strategiyalar vasitəsilə tıxanma pəncərəsinin ölçüsünü tənzimləyən TCP tıxanma nəzarət alqoritminin üç əsas hissəsidir.

Növbəti bölmədə TCP-nin təkrar ötürmə mexanizmini ətraflı araşdıracağıq. Təkrar ötürmə mexanizmi etibarlı ötürməyə nail olmaq üçün TCP-nin vacib hissəsidir. İtirilmiş, zədələnmiş və ya gecikmiş məlumatları təkrar ötürməklə məlumatların etibarlı ötürülməsini təmin edir. Təkrar ötürmə mexanizminin tətbiq prinsipi və strategiyası növbəti bölmədə ətraflı şəkildə təqdim ediləcək və təhlil ediləcək. Bizi izləməyə davam edin!


Yayımlanma vaxtı: 24 Fevral 2025