Şəbəkə Paket Brokeri TCP Əlaqələrinin əsas sirləri: Üçqat əl sıxma ehtiyacını aydınlaşdırdı

TCP Bağlantı Quraşdırma
İnternetdə gəzəndə, e-poçt göndərəndə və ya onlayn oyun oynayanda biz çox vaxt bunun arxasındakı mürəkkəb şəbəkə bağlantısı haqqında düşünmürük. Bununla belə, bizimlə server arasında sabit əlaqəni təmin edən bu kiçik görünən 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ıxma prinsipi, prosesi və əhəmiyyəti ətraflı müzakirə olunacaq. Addım-addım üçtərəfli əl sıxışmasının nə üçün lazım olduğunu, onun əlaqənin sabitliyini və etibarlılığını necə təmin etdiyini və məlumatların ötürülməsi üçün nə qədər vacib olduğunu izah edəcəyik. Üçtərəfli əl sıxma prosesini daha dərindən başa düşməklə, biz şə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 baxış əldə edəcəyik.

TCP Üçtərəfli Əl sıxma Prosesi və Dövlət Keçidləri
TCP əlaqə yönümlü nəqliyyat protokoludur və məlumat ötürülməzdən əvvəl əlaqə qurulmasını tələb edir. Bu əlaqənin qurulması prosesi üçtərəfli əl sıxma ilə həyata keçirilir.

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

Gəlin hər bir əlaqədə göndərilən TCP paketlərinə daha yaxından nəzər salaq.

Əvvəlcə həm müştəri, həm də server QAPALI olur. Birincisi, server portu aktiv şəkildə dinləyir və DİNLƏMƏ vəziyyətindədir, yəni server işə salınmalıdır. Bundan sonra müştəri veb səhifəyə daxil olmağa hazırdır. O, serverlə əlaqə yaratmalıdır. Birinci əlaqə paketinin formatı aşağıdakı kimidir:

 SYN Paketi

Müştəri əlaqəni başlatdıqda, təsadüfi ilkin ardıcıllıq nömrəsini (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 gedən paketin SYN paketi olduğunu göstərmək üçün SYN bayraq mövqeyini 1-ə təyin edir. Müştəri serverə ilk SYN paketini göndərməklə serverlə əlaqə yaratmaq istədiyini bildirir. Bu paket proqram səviyyəsi məlumatlarını (yəni göndərilən məlumat) ehtiva etmir. Bu nöqtədə müştərinin statusu SYN-SENT kimi qeyd olunur.

SYN+ACK Paketi

Server müştəridən SYN paketi qəbul etdikdə 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 nömrəsi" sahəsinə qoyur. Sonra, server "Təqdimat nömrəsi" 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 paketi heç bir proqram səviyyəsi məlumatından (və server üçün heç bir məlumatdan) ibarət olmayan müştəriyə göndərir. göndərmək). Hazırda 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əsdiq et" sahəsinə server_isn + 1 dəyərini daxil edir; Nəhayət, müştəri paketi serverə göndərir. Bu paket məlumatı müştəridən serverə daşıya bilər. Bu əməliyyatlar başa çatdıqdan sonra müştəri QURULMUŞ vəziyyətə daxil olacaq.

Server müştəridən cavab paketini qəbul etdikdən sonra o, həm də ESABLISHED vəziyyətinə keçir.

Yuxarıdakı prosesdən göründüyü kimi, üçtərəfli əl sıxma zamanı üçüncü əl sıxma məlumat daşımağa icazə verilir, lakin ilk iki əl sıxma yoxdur. 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 əlaqənin uğurla qurulduğunu göstərməklə ESABLISHED vəziyyətinə daxil olur və bu zaman müştəri və server bir-birinə məlumat göndərməyə başlaya bilər.

Niyə üç əl sıxma? İki dəfə yox, dörd dəfə?
Ümumi cavab belədir: “Çünki üçtərəfli əl sıxma qəbul və göndərmə qabiliyyətinə zəmanət verir”. Bu cavab doğrudur, ancaq 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 dərk etmək üçün üç aspektdən əl sıxma səbəblərini təhlil edəcəyəm.

Üçtərəfli əl sıxma tarixən təkrarlanan əlaqələrin başlanğıcından effektiv şəkildə qaça 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əsini almasına zəmanət verir.
Üçtərəfli əl sıxma resursları israf etmənin qarşısını alır.

Səbəb 1: Tarixi dublikat birləşmələrdən çəkinin
Bir sözlə, üçtərəfli əl sıxışmasının əsas səbəbi köhnə dublikat əlaqənin işə salınması nəticəsində yaranan çaşqınlığın qarşısını almaqdır. Mürəkkəb bir şəbəkə mühitində verilənlər paketlərinin ötürülməsi həmişə təyin olunmuş vaxta uyğun olaraq təyinat hostuna göndərilmir və köhnə məlumat paketləri şəbəkə sıxlığı və digər səbəblərdən ilk növbədə təyinat hostuna gələ bilər. Bunun qarşısını almaq üçün TCP əlaqə yaratmaq üçün üçtərəfli əl sıxışdırmadan istifadə edir.

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

Müştəri ardıcıl olaraq çoxsaylı SYN əlaqə qurma paketləri göndərdikdə, şəbəkə sıxlığı kimi hallarda aşağıdakılar baş verə bilər:

1- Köhnə SYN paketləri serverə ən son SYN paketlərindən əvvəl gəlir.
2- Server köhnə SYN paketini aldıqdan sonra müştəriyə SYN + ACK paketinə cavab verəcək.
3- Müştəri SYN + ACK paketini aldıqda, öz kontekstinə uyğun olaraq əlaqənin tarixi bir əlaqə olduğunu (ardıcıllıq nömrəsi bitmiş və ya vaxt aşımı) müəyyən edir və sonra əlaqəni dayandırmaq üçün RST paketini serverə göndərir.

İki əl sıxma əlaqəsi ilə cari əlaqənin tarixi əlaqə olub-olmadığını müəyyən etmək üçün heç bir yol yoxdur. Üçtərəfli əl sıxma müştəriyə üçüncü paketi göndərməyə hazır olduqda kontekst əsasında cari əlaqənin tarixi əlaqə olub-olmadığını müəyyən etməyə imkan verir:

1- Əgər bu, tarixi bir əlaqədirsə (ardıcıllıq nömrəsi başa çatıb və ya vaxt aşımı), üçüncü əl sıxma ilə göndərilən paket tarixi əlaqəni dayandırmaq üçün RST paketidir.
2- Tarixi bir əlaqə deyilsə, üçüncü dəfə göndərilən paket ACK paketidir və əlaqə quran iki tərəf müvəffəqiyyətlə ə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 əlaqəni 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ürmə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 bağlantılarında mühüm rol oynayır. Onlar aşağıdakıları edir:

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

Alıcı verilənlərin bütövlüyünü təmin etmək üçün paketləri sıra nömrəsinə görə 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ə etibarlı məlumat ötürülməsinə imkan verir.

Buna görə də, TCP bağlantısı qurduqdan sonra müştəri SYN paketlərini ilkin ardıcıllıq nömrəsi ilə göndərir və serverdən müştərinin SYN paketinin uğurla qəbul edildiyini göstərən ACK paketi ilə cavab verməsini tələb edir. Sonra server ilkin ardıcıllıq nömrəsi ilə SYN paketini müştəriyə göndərir və ilkin ardıcıllıq nömrələrinin etibarlı şəkildə sinxronlaşdırılmasını təmin etmək üçün müştərinin 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

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

Səbəb 3: Resursları israf etməyin
Yalnız "iki əl sıxma" olarsa, müştəri SYN sorğusu şəbəkədə bloklandıqda, müştəri server tərəfindən göndərilən ACK paketini qəbul edə bilməz, ona görə də SYN yenidən göndəriləcək. Bununla belə, üçüncü əl sıxma olmadığı üçün server müştərinin əlaqə yaratmaq üçün ACK təsdiqi alıb-almadığını müəyyən edə bilmir. Buna görə də, server yalnız hər SYN sorğusunu aldıqdan sonra aktiv şəkildə əlaqə yarada bilər. Bu, aşağıdakılara gətirib çıxarır:

Resursların israfı: Müştərinin SYN sorğusu bloklanırsa və nəticədə çoxsaylı SYN paketlərinin təkrar ötürülməsi baş verirsə, server sorğunu qəbul etdikdən sonra çoxsaylı lazımsız etibarsız bağlantılar yaradacaq. Bu, server resurslarının lazımsız israfına səbəb olur.

Mesajın saxlanması: Üçüncü əl sıxışmasının olmaması səbəbindən serverin müştərinin əlaqə yaratmaq üçün ACK təsdiqini düzgün qəbul edib-etmədiyini bilmək imkanı yoxdur. Nəticədə, mesajlar şəbəkədə ilişib qalarsa, müştəri SYN sorğularını təkrar-təkrar göndərməyə davam edəcək və bu da serverin daim yeni bağlantılar yaratmasına səbəb olacaq. Bu, şəbəkə sıxlığını və gecikməni 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 dayanıqlığını və etibarlılığını təmin etmək üçün TCP bu problemlərin baş verməməsi üçün əlaqə yaratmaq üçün üçtərəfli əl sıxma üsulundan 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ı müştəri əvvəlcə serverə SYN bayrağı ilə paket göndərir ki, bu da onun əlaqə yaratmaq istədiyini göstərir. Müştəridən sorğu aldıqdan sonra server müştəriyə SYN və ACK bayraqları olan paketi cavablandırır və bu, əlaqə sorğusunun qəbul edildiyini bildirir və özünün ilkin ardıcıl nömrəsini göndərir. Nəhayət, müştəri əlaqənin uğurla qurulduğunu bildirmək üçün serverə ACK bayrağı ilə cavab verir. Beləliklə, hər iki tərəf QURULMUŞ vəziyyətdədir və bir-birinə məlumat göndərməyə başlaya bilər.

Ümumilikdə, TCP bağlantısının qurulması üçün üçtərəfli əl sıxma prosesi əlaqənin sabitliyini və etibarlılığını təmin etmək, tarixi əlaqələrdə qarışıqlıq və resursların israf edilməsinin qarşısını almaq və hər iki tərəfin məlumatları qəbul edib göndərə bilməsini təmin etmək üçün nəzərdə tutulmuşdur.


Göndərmə vaxtı: 08 yanvar 2025-ci il