Şəbəkə Paket Brokeri TCP Əlaqələrinin Əsas Sirrləri: Üçqat Əl Görüşməsinə ehtiyacın aradan qaldırılması

TCP Bağlantısı Quraşdırması
İnternetdə gəzərkən, e-poçt göndərərkən və ya onlayn oyun oynayarkən, çox vaxt bunun arxasındakı mürəkkəb şəbəkə bağlantısı barədə düşünmürük. Lakin, serverlə aramızda sabit əlaqəni təmin edən bu kiçik addımlardır. Ən vacib addımlardan biri TCP bağlantısının qurulmasıdır və bunun əsasını üç tərəfli əl sıxma təşkil edir.

Bu məqalədə üç tərəfli əl sıxmanın prinsipi, prosesi və əhəmiyyəti ətraflı şəkildə müzakirə olunacaq. Addım-addım üç tərəfli əl sıxmanın nə üçün lazım olduğunu, əlaqənin sabitliyini və etibarlılığını necə təmin etdiyini və məlumat ötürülməsi üçün nə qədər vacib olduğunu izah edəcəyik. Üç tərəfli əl sıxmanın daha dərindən başa düşülməsi ilə şəbəkə rabitəsinin əsas mexanizmlərini daha yaxşı başa düşəcəyik və TCP əlaqələrinin etibarlılığına daha aydın bir baxış əldə edəcəyik.

TCP Üçtərəfli Əl Görüşmə Prosesi və Vəziyyət Keçidləri
TCP, məlumat ötürülməsindən əvvəl əlaqənin qurulmasını tələb edən bağlantı yönümlü nəqliyyat protokoludur. Bu əlaqənin qurulması prosesi üç tərəfli əl sıxma yolu ilə həyata keçirilir.

 TCP üç tərəfli əl sıxışması

Gəlin hər bir bağlantıda göndərilən TCP paketlərinə daha yaxından nəzər salaq.

Əvvəlcə həm klient, həm də server BAĞLI olur. Əvvəlcə server aktiv olaraq portu dinləyir və DİNLƏMƏ vəziyyətində olur, bu da serverin işə salınması deməkdir. Daha sonra klient veb səhifəyə daxil olmağa hazırdır. Serverlə əlaqə yaratmalıdır. İlk əlaqə paketinin formatı aşağıdakı kimidir:

 SYN Paketi

Müştəri bağlantı başlatdıqda, təsadüfi ilkin ardıcıllıq nömrəsi (client_isn) yaradır və onu TCP başlığının "Ardıcıllıq nömrəsi" sahəsinə yerləşdirir. Eyni zamanda, müştəri çıxan paketin SYN paketi olduğunu göstərmək üçün SYN bayraq mövqeyini 1-ə təyin edir. Müştəri ilk SYN paketini serverə göndərməklə serverlə əlaqə qurmaq istədiyini göstərir. Bu paketdə tətbiq təbəqəsi məlumatları (yəni göndərilən məlumatlar) yoxdur. Bu nöqtədə müştərinin statusu SYN-SENT kimi qeyd olunur.

SYN+ACK Paketi

Server klientdən SYN paketi aldıqda, təsadüfi olaraq öz seriya nömrəsini (server_isn) işə salır və sonra həmin nömrəni TCP başlığının "Serial number" sahəsinə yerləşdirir. Daha sonra, server "Acknowledgement number" sahəsinə client_isn + 1 daxil edir və həm SYN, həm də ACK bitlərini 1-ə təyin edir. Nəhayət, server heç bir tətbiq qatı məlumatı (və serverin göndərəcəyi məlumat) olmayan paketi klientə göndərir. Bu zaman server SYN-RCVD vəziyyətindədir.

ACK Paketi

Müştəri serverdən paketi aldıqdan sonra, son cavab paketinə cavab vermək üçün aşağıdakı optimallaşdırmaları yerinə yetirməlidir: Birincisi, müştəri cavab paketinin TCP başlığının ACK bitini 1-ə təyin edir; İkincisi, müştəri "Cavab nömrəsini təsdiqlə" sahəsinə server_isn + 1 dəyərini daxil edir; Nəhayət, müştəri paketi serverə göndərir. Bu paket məlumatları müştəridən serverə daşıya bilər. Bu əməliyyatlar başa çatdıqdan sonra müştəri QURULUB vəziyyətinə daxil olacaq.

Server cavab paketini klientdən aldıqdan sonra QURULMUŞ vəziyyətinə keçir.

Yuxarıdakı prosesdən göründüyü kimi, üç tərəfli əl sıxma zamanı üçüncü əl sıxmasının məlumat daşımasına icazə verilir, lakin ilk iki əl sıxmasının məlumat daşımasına icazə verilmir. Bu, müsahibələrdə tez-tez verilən sualdır. Üç tərəfli əl sıxma başa çatdıqdan sonra hər iki tərəf QURULUB vəziyyətinə daxil olur və bu da əlaqənin uğurla qurulduğunu göstərir və bu zaman klient və server bir-birinə məlumat göndərməyə başlaya bilərlər.

Niyə üç dəfə əl sıxmaq? İki dəfə yox, dörd dəfə?
Ümumi cavab budur: "Çünki üç tərəfli əl sıxma qəbul və göndərmə qabiliyyətini təmin edir." Bu cavab düzgündür, lakin bu, yalnız səthi səbəbdir, əsas səbəbi irəli sürmür. Aşağıda bu məsələni daha dərindən anlamaq üçün üçqat əl sıxmanın səbəblərini üç aspektdən təhlil edəcəyəm.

Üç tərəfli əl sıxma tarixən təkrarlanan əlaqələrin başlanğıcının qarşısını effektiv şəkildə ala bilər (əsas səbəb)
Üç tərəfli əl sıxma hər iki tərəfin etibarlı ilkin ardıcıllıq nömrəsi aldığını təmin edir.
Üçtərəfli əl sıxma resursların israf edilməsinin qarşısını alır.

Səbəb 1: Tarixi Təkrarlanan Qoşulmalardan Çəkinin
Xülasə, üç tərəfli əl sıxmasının əsas səbəbi köhnə təkrarlanan bağlantı başlanğıcından qaynaqlanan qarışıqlığın qarşısını almaqdır. Mürəkkəb şəbəkə mühitində məlumat paketlərinin ötürülməsi həmişə təyinat hostuna göstərilən vaxta uyğun olaraq göndərilmir və şəbəkə tıxanması və digər səbəblərə görə köhnə məlumat paketləri əvvəlcə təyinat hostuna çata bilər. Bunun qarşısını almaq üçün TCP bağlantı qurmaq üçün üç tərəfli əl sıxmasından istifadə edir.

Üç tərəfli əl sıxma tarixi təkrarlanan əlaqələrin qarşısını alır

Müştəri şəbəkə tıxanması kimi hallarda ardıcıl olaraq birdən çox SYN bağlantısı qurma paketi göndərdikdə aşağıdakılar baş verə bilər:

1- Köhnə SYN paketləri serverə ən son SYN paketlərindən əvvəl çatır.
2- Server köhnə SYN paketini aldıqdan sonra klientə SYN + ACK paketini cavablandıracaq.
3- Müştəri SYN + ACK paketini aldıqda, öz kontekstinə uyğun olaraq bağlantının tarixi bir bağlantı olduğunu (ardıcıllıq nömrəsinin müddəti bitmiş və ya vaxtı bitmiş) müəyyən edir və sonra bağlantını dayandırmaq üçün RST paketini serverə göndərir.

İki əl sıxma bağlantısı ilə cari bağlantının tarixi bağlantı olub olmadığını müəyyən etmək mümkün deyil. Üç tərəfli əl sıxma, klientə üçüncü paketi göndərməyə hazır olduqda kontekstə əsasən cari bağlantının tarixi bağlantı olub olmadığını müəyyən etməyə imkan verir:

1- Əgər bu, tarixi əlaqədirsə (ardıcıllıq nömrəsinin müddəti bitibsə və ya vaxtı bitibsə), üçüncü əl sıxma ilə göndərilən paket tarixi əlaqəni dayandırmaq üçün RST paketidir.
2- Əgər bu tarixi əlaqə deyilsə, üçüncü dəfə göndərilən paket ACK paketidir və iki əlaqə quran tərəf uğurla əlaqə qurur.

Buna görə də, TCP-nin üç tərəfli əl sıxmasından istifadə etməsinin əsas səbəbi, tarixi əlaqələrin qarşısını almaq üçün bağlantını başlatmasıdır.

Səbəb 2: Hər iki tərəfin ilkin ardıcıllıq nömrələrini sinxronlaşdırmaq
TCP protokolunun hər iki tərəfi etibarlı ötürülməni təmin etmək üçün əsas amil olan ardıcıllıq nömrəsini saxlamalıdır. Ardıcıllıq nömrələri TCP əlaqələrində mühüm rol oynayır. Onlar aşağıdakıları edirlər:

Alıcı təkrarlanan məlumatları aradan qaldıra və məlumatların dəqiqliyini təmin edə bilər.

Alıcı məlumatların bütövlüyünü təmin etmək üçün paketləri ardıcıllıq nömrəsi sırası ilə qəbul edə bilər.

● Ardıcıllıq nömrəsi, digər tərəf tərəfindən qəbul edilmiş məlumat paketini müəyyən edə bilər və bu da etibarlı məlumat ötürülməsini təmin edir.

Buna görə də, TCP bağlantısı qurulduqdan sonra, klient ilkin ardıcıllıq nömrəsi ilə SYN paketləri göndərir və serverdən klientin SYN paketinin uğurlu qəbulunu göstərən ACK paketi ilə cavab verməsini tələb edir. Daha sonra server SYN paketini ilkin ardıcıllıq nömrəsi ilə klientə göndərir və ilkin ardıcıllıq nömrələrinin etibarlı şəkildə sinxronlaşdırıldığından əmin olmaq üçün klientin birdəfəlik cavab verməsini gözləyir.

Hər iki tərəfin ilkin seriya nömrələrini sinxronlaşdırın

Dörd tərəfli əl sıxma hər iki tərəfin ilkin ardıcıllıq nömrələrini etibarlı şəkildə sinxronizasiya etmək üçün mümkün olsa da, ikinci və üçüncü addımlar tək bir addımda birləşdirilə bilər və nəticədə üç tərəfli əl sıxma yaranır. Bununla belə, iki əl sıxma yalnız bir tərəfin ilkin ardıcıllıq nömrəsinin digər tərəf tərəfindən uğurla qəbul edildiyinə zəmanət verə bilər, lakin hər iki tərəfin ilkin ardıcıllıq nömrəsinin təsdiqlənəcəyinə zəmanət yoxdur. Buna görə də, üç tərəfli əl sıxma TCP əlaqələrinin sabitliyini və etibarlılığını təmin etmək üçün ən yaxşı seçimdir.

Səbəb 3: Resursları israf etməkdən çəkinin
Əgər yalnız "iki əl sıxma" varsa, müştərinin SYN sorğusu şəbəkədə bloklandıqda, müştəri server tərəfindən göndərilən ACK paketini ala bilmir, buna görə də SYN yenidən göndəriləcək. Lakin, üçüncü əl sıxma olmadığı üçün server müştərinin bağlantı yaratmaq üçün ACK təsdiqini alıb-almadığını müəyyən edə bilmir. Buna görə də, server yalnız hər SYN sorğusunu aldıqdan sonra proaktiv şəkildə əlaqə qura bilər. Bu, aşağıdakılara gətirib çıxarır:

Resursların israfı: Əgər müştərinin SYN sorğusu bloklanarsa və bu, birdən çox SYN paketinin təkrar ötürülməsinə səbəb olarsa, server sorğunu aldıqdan sonra birdən çox artıq etibarsız bağlantı yaradacaq. Bu, server resurslarının lazımsız israfına gətirib çıxarır.

Mesajın saxlanması: Üçüncü əl sıxmasının olmaması səbəbindən serverin klientin əlaqə qurmaq üçün ACK təsdiqini düzgün alıb-almadığını bilməsinin heç bir yolu yoxdur. Nəticədə, mesajlar şəbəkədə ilişib qalarsa, klient SYN sorğularını təkrar-təkrar göndərməyə davam edəcək və bu da serverin daim yeni əlaqələr qurmasına səbəb olacaq. Bu, şəbəkə tıxanmasını və gecikməsini artıracaq və ümumi şəbəkə performansına mənfi təsir göstərəcək.

Resursları israf etməkdən çəkinin

Buna görə də, şəbəkə bağlantısının sabitliyini və etibarlılığını təmin etmək üçün TCP, bu problemlərin baş verməsinin qarşısını almaq üçün əlaqəni qurmaq üçün üç tərəfli əl sıxmasından istifadə edir.

Xülasə
TheŞəbəkə Paket BrokeriTCP bağlantısının qurulması üç tərəfli əl sıxma ilə həyata keçirilir. Üç tərəfli əl sıxma zamanı klient əvvəlcə serverə SYN bayrağı olan paket göndərir və bu da əlaqə qurmaq istədiyini göstərir. Klientdən sorğu aldıqdan sonra server klientə SYN və ACK bayrağı olan paketi cavablandırır və bu da bağlantı sorğusunun qəbul edildiyini göstərir və özünün ilkin ardıcıllıq nömrəsini göndərir. Nəhayət, klient serverə ACK bayrağı ilə cavab verərək bağlantının uğurla qurulduğunu göstərir. Beləliklə, iki tərəf QURULUB vəziyyətdədir və bir-birinə məlumat göndərməyə başlaya bilərlər.

Ümumiyyətlə, TCP bağlantısının qurulması üçün üçtərəfli əl sıxma prosesi bağlantının sabitliyini və etibarlılığını təmin etmək, tarixi bağlantılar üzərində qarışıqlığın və resursların israf edilməsinin qarşısını almaq və hər iki tərəfin məlumat ala və göndərə bilməsini təmin etmək üçün hazırlanmışdır.


Yazı vaxtı: 08 Yanvar 2025