Şəbəkə paketi brokerinin əsas sirləri TCP əlaqələri: Üçlü əl sıxma ehtiyacı azaldı

TCP bağlantısı quraşdırma
İnternetə baxanda bir e-poçt göndərin və ya onlayn oyun oynayarkən, tez-tez arxasında mürəkkəb şəbəkə bağlantısı haqqında düşünmürük. Bununla birlikdə, bu və server arasındakı sabit ünsiyyəti təmin edən bu görünən kiçik addımlardır. Ən vacib addımlardan biri TCP bağlantısı qurğusudur və bunun nüvəsi üç tərəfli əl sıxmaqdır.

Bu məqalə, üç tərəfli əl sıxma prinsipi, prosesi və əhəmiyyətini ətraflı müzakirə edəcəkdir. Addım-addım, üç tərəfli əl sıxışının niyə lazım olduğunu, əlaqənin sabitliyini və etibarlılığını necə 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ıxma haqqında daha dərin bir anlayışla, şəbəkə ünsiyyətinin əsas mexanizmlərini və TCP əlaqələrinin etibarlılığının daha aydın görünməsi barədə daha yaxşı bir məlumat əldə edəcəyik.

TCP üç tərəfli əl sıxma prosesi və dövlət keçidləri
TCP, məlumat ötürülməmişdən əvvəl əlaqə qurulması tələb edən bir əlaqə yönümlü nəqliyyat protokoludur. Bu əlaqə yaradılması prosesi üç tərəfli əl sıxmaq yolu ilə aparılır.

 TCP Üç tərəfli əl sıxma

Hər birləşməyə göndərilən TCP paketlərinə daha yaxından baxın.

Əvvəlcə həm müştəri, həm də server bağlıdır. Birincisi, server bir portda fəal dinləyir və din dinlədir, yəni serverin başlaması deməkdir. Sonrakı, müştəri veb səhifəyə daxil olmağa başlamağa hazırdır. Server ilə əlaqə qurmaq lazımdır. Birinci əlaqə paketinin formatı aşağıdakı kimidir:

 Syn paketi

Bir müştəri bir əlaqə yaratdıqda, təsadüfi bir ilkin ardıcıllıq nömrəsi (Client_isn) yaradır və TCP başlığının "ardıcıl nömrəsi" sahəsində yerləşdirir. Eyni zamanda, müştəri, gedən paketin sincetin bir sintet olduğunu göstərmək üçün 1-ci bayraq mövqeyini 1-ə təyin edir. Müştəri, ilk Syn paketini serverə göndərərək serverlə əlaqə qurmağı arzuladığını göstərir. Bu paketdə tətbiq laylı məlumatları yoxdur (yəni məlumat göndərilir). Bu anda müştərinin vəziyyəti sinkə göndərilmiş kimi qeyd olunur.

Sin + Ack Paketi

Bir server bir müştəridən bir sintet aldıqda, təsadüfi öz seriya nömrəsini (Server_isn) işə salır və sonra bu nömrəni TCP başlığının "seriya nömrəsi" sahəsinə qoyur. Sonrakı, server, "Təqdimetmə nömrəsi" sahəsində müştəri_isn + 1 daxil edir və həm sinir, həm də Ack bitləri 1-ə daxil edir. Nəhayət, server nömrəni ərizə qatar məlumatları olmayan müştəriyə göndərir (və serveri göndərmək üçün heç bir məlumat yoxdur). Bu zaman server sin-rcvd vəziyyətindədir.

Ack paketi

Müştəri paketi serverdən aldıqdan sonra, son cavab paketinə cavab vermək üçün aşağıdakı optimallaşdırmaları yerinə yetirmək lazımdır: Əvvəlcə 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əyin" sahəsində server_isn + 1-ə daxil olur; Nəhayət, müştəri paketi serverə göndərir. Bu paket müştəridən serverə məlumat verə bilər. Bu əməliyyatları başa çatdıqdan sonra müştəri qurulmuş dövlətə girəcəkdir.

Server cavab paketini müştəridən aldıqdan sonra da müəyyən edilmiş vəziyyətə keçir.

Yuxarıdakı prosesdən gördüyünüz kimi, üç tərəfli əl sıxma edərkən, üçüncü əl sıxma məlumatların verilməsinə icazə verilir, ancaq ilk iki əl sıxma deyil. Bu, tez-tez müsahibələrdə soruşulduğu bir sualdır. Üç tərəfli əl sıxışdırıldıqdan sonra hər iki tərəf müəyyən edilmiş dövlətə, qoşulmanın müvəffəqiyyətlə qurulduğunu göstərən, müştəri və server bir-birinə məlumat göndərməyə başlaya biləcəyini göstərir.

Niyə üç əl işi? İki dəfə deyil, dörd dəfə?
Ümumi cavab "Çünki üç tərəfli əl sıxma almaq və göndərmək qabiliyyətinə zəmanət verir." Bu cavab düzgündür, ancaq yalnız səth səbəbidir, əsas səbəbi irəli sürmür. Aşağıdakılarda, üç tərəfdən üç tərəfdən bu məsələni başa düşməyimizi dərinləşdirmək üçün səbəbləri təhlil edəcəyəm.

Üç tərəfli əl sıxma tarixən təkrar bağlantıların başlanğıcından səmərəli şəkildə qarşısını 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ığına zəmanət verir.
Üç tərəfli əl sıxma mənbələri israf etməkdən çəkinir.

Səbəb 1: Tarixi dublikatdan çəkinin
Bir sözlə, üç tərəfli əl sıxma üçün əsas səbəb köhnə dublikat bağlantısı başlanğıcının yaranmasının qarşısını almaqdır. Mürəkkəb bir şəbəkə mühitində, məlumat paketlərinin ötürülməsi həmişə müəyyən edilmiş vaxta uyğun olaraq təyinat aparıcısına göndərilmir və köhnə məlumat paketləri şəbəkə tıkanıklığı və digər səbəblərə görə təyinat aparıcısına gələ bilər. Bunun qarşısını almaq üçün TCP bağlantı qurmaq üçün üç tərəfli əl sıxmaqdan istifadə edir.

Üç tərəfli əl sıxma tarixi dublikat əlaqələrini qaçırır

Bir müştəri, şəbəkə tıkanıklığı kimi vəziyyətlərdə birdən çox sink bağlantısı qurma paketləri göndərdikdə, aşağıdakılar kimi vəziyyətlərdə aşağıdakılar yarana bilər:

1- Köhnə Sin Paketləri ən son Syn paketləri əvvəl serverə gəlir.
2- Server köhnə sin paketini aldıqdan sonra müştəriyə bir sin + ACK paketinə cavab verəcəkdir.
3- Müştəri sin + ACK paketini aldıqda, əlaqə öz kontekstinə uyğun olaraq, əlaqənin tarixi bir əlaqə (ardıcıllıqların müddəti bitmiş və ya fasiləsi) olduğunu müəyyənləşdirir və sonra əlaqəi ləğv etmək üçün serverə göndərir.

İki əl sıxma bağlantısı ilə cari əlaqənin tarixi bir əlaqə olub olmadığını müəyyən etmək üçün bir yol yoxdur. Üç tərəfli əl sıxma müştəriyə cari əlaqənin üçüncü paketi göndərməyə hazır olduqda kontekstə əsaslanan tarixi bir əlaqə olduğunu müəyyənləşdirməyə imkan verir:

1- Tarixi bir əlaqə (ardıcıllıq nömrəsi müddəti bitmiş və ya fasiləsiz), üçüncü əl sıxma ilə göndərilən paket tarixi əlaqəni ləğv etmək üçün bir RST paketidir.
2- Tarixi bir əlaqə deyilsə, üçüncü dəfə göndərilən paket ACK paketidir və iki ünsiyyətçi tərəfi uğurla bağlanır.

Buna görə TCP üç tərəfli əl sıxışmasının əsas səbəbi, tarixi əlaqələrin qarşısını almaq üçün əlaqəni işə salmasıdır.

Səbəb 2: Hər iki tərəfin ilkin ardıcıllıqla nömrələrini sinxronizasiya etmək
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 qorumalıdır. Sequence Nömrələr TCP bağlantısında mühüm rol oynayır. Bu aşağıdakıları edin:

Alıcı dublikat məlumatları aradan qaldıra və məlumatların düzgünlüyünü təmin edə bilər.

Alıcı, məlumatların bütövlüyünü təmin etmək üçün ardıcıllıq nömrəsi qaydasında paket ala bilər.

● Ardıcıllıq nömrəsi, etibarlı məlumat ötürülməsinə imkan verən digər tərəf tərəfindən alınan məlumat paketini müəyyənləşdirə bilər.

Buna görə, bir TCP bağlantısı yaratdıqdan sonra, müştəri ilkin ardıcıllıq nömrəsi ilə sink paketləri göndərir və serverin müştərinin sincetinin uğurla qəbulunu göstərən bir ACK paketi ilə cavab verməsini tələb edir. Sonra, server, müştəri üçün ilkin ardıcıllıq nömrəsi ilə sink paketini göndərir və müştərinin bir dəfə və hamısının cavab verməsini, ilkin ardıcıllıqla nömrələrin etibarlı şəkildə sinxronizasiya olunmasını təmin etməsini gözləyir.

Hər iki tərəfin ilkin seriya nömrələrini sinxronizasiya edin

Dörd tərəfli bir əl sıxma, hər iki tərəfin ilkin ardıcıllıq nömrələrini etibarlı şəkildə sinxronizasiya etmək mümkün olmasına baxmayaraq, ikinci və üçüncü addımlar üç tərəfli əl sıxma ilə nəticələnə bilər. Bununla birlikdə, iki əl sıxma yalnız bir partiyanın ilkin ardıcıllığının digər tərəf tərəfindən uğurla alınmasına zəmanət verə bilər, lakin hər iki tərəfin ilkin ardıcıllığının təsdiqlənə biləcəyinə zəmanət yoxdur. Buna görə, üç 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
Yalnız bir "iki əl sıxma" varsa, müştəri sinəsi 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ə sinəcə söküləcək. Bununla birlikdə, üçüncü əl sıxma olmadığı üçün, müştəri bağlantı yaratmaq üçün bir ACK tanınması aldığını müəyyənləşdirə bilməz. Buna görə, server yalnız hər bir singili tələbi aldıqdan sonra bir əlaqə qura bilər. Bu, aşağıdakılara səbəb olur:

Resursların israfı: Müştərinin Syn Lorc bloklandığı təqdirdə, birdən çox sink paketinin təkrar ötürülməsi ilə nəticələnsə, server tələbi aldıqdan sonra çox sayda etibarsız əlaqə quracaqdır. Bu, server resurslarının lazımsız bir tullantıya səbəb olur.

Mesajın tutulması: Üçüncü bir əl sıxma olmaması səbəbindən, serverin müştərinin bağlantı qurmaq üçün ACK etirafını düzgün qəbul edib-etmədiyini bilmək üçün bir yol yoxdur. Nəticədə, mesajlar şəbəkəyə yapışırsa, müştəri, serverin daim yeni əlaqələr qurmasına səbəb olan Syn İstəklərini təkrar-təkrar göndərməyə davam edəcəkdir. Bu, şəbəkə tıkanıklığını artıracaq və ümumi şəbəkə performansına gecikdirir və mənfi təsir göstərəcəkdir.

Resursları israf etməkdən çəkinin

Buna görə, şə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 qoşulma üçün üç tərəfli əl sıxmaqdan istifadə edir.

Xülasə
BuŞəbəkə paketi brokeriTCP bağlantısı quruluşu üç tərəfli əl sıxma ilə aparılır. Üç tərəfli əl sıxma zamanı müştəri əvvəlcə bir əlaqə qurmaq istədiyini göstərən serverə sinfəti ilə bir paket göndərir. Müştəridən sorğu aldıqdan sonra server, əlaqə tələbinin qəbul edildiyini və öz ilkin ardıcıllıq nömrəsini göstərərək müştəriyə sinirə və ACK bayraqları olan bir paketi cavablandırır. Nəhayət, müştəri, bağlantının uğurla qurulduğunu göstərmək üçün serverə bir ACK bayrağı ilə cavab verir. Beləliklə, iki tərəf qurulmuş vəziyyətdədir və məlumatların bir-birinə göndərməyə başlaya bilər.

Ümumiyyətlə, TCP bağlantısı quruculuğu üçün üç tərəfli əl sıxma prosesi, bağlantı sabitliyini və etibarlılığını təmin etmək, tarixi əlaqələrin qarışıqlığını və tullantılarının qarşısını almaq və hər iki tərəfin məlumat ala və göndərə biləcəyini təmin etmək üçün hazırlanmışdır.


Time: Jan-08-2025
  • alice
  • alice2025-04-18 15:37:10
    Hello, I am intelligent customer service. My name is Alice. If you have any questions, you can ask me. I will answer your questions online 24 hours a day!

Ctrl+Enter Wrap,Enter Send

  • FAQ
Please leave your contact information and chat
Hello, I am intelligent customer service. My name is Alice. If you have any questions, you can ask me. I will answer your questions online 24 hours a day!
chat now
chat now