Tor paket dellaly TCP birikmeleriniň esasy syrlary: Üç gezek elleşmegiň zerurlygyny görkezdi

TCP birikmesini gurmak
Webde gezenimizde, e-poçta iberenimizde ýa-da onlaýn oýun oýnanymyzda, köplenç onuň arkasyndaky çylşyrymly tor baglanyşygy hakda pikir etmeýäris. Şeýle-de bolsa, serweriň arasynda durnukly aragatnaşygy üpjün edýän kiçijik ýaly görünýän ädimler. Iň möhüm ädimleriň biri TCP birikmesini gurmakdyr we munuň özeni üç taraplaýyn el çarpmakdyr.

Bu makalada üç taraplaýyn el çarpmagyň ýörelgesi, prosesi we ähmiýeti jikme-jik ara alnyp maslahatlaşylar. Stepdim-ädim üç taraplaýyn el çarpmagyň näme üçin zerurdygyny, baglanyşygyň durnuklylygyny we ygtybarlylygyny nädip üpjün edýändigini we maglumatlary geçirmegiň nähili möhümdigini düşündireris. Üç taraplaýyn el çarpyşmalara has çuňňur düşünmek bilen, aragatnaşyk aragatnaşygynyň esasy mehanizmlerine has gowy düşüneris we TCP birikmeleriniň ygtybarlylygyna has aýdyň düşüneris.

TCP Üç taraplaýyn el çarpyşma prosesi we döwlet geçişleri
TCP, maglumat geçirmezden ozal birikmäni talap edýän birikmä gönükdirilen transport protokolydyr. Bu baglanyşygy gurmak prosesi üç taraplaýyn el çarpmak arkaly amala aşyrylýar.

 TCP üç taraplaýyn el çarpmak

Her baglanyşykda iberilýän TCP paketlerine has içgin seredeliň.

Ilki bilen müşderi we serwer ýapyk. Ilki bilen, serwer porty işjeň diňleýär we LISTEN ýagdaýynda, bu serweriň işe başlamalydygyny aňladýar. Ondan soň, müşderi web sahypasyna girip başlamaga taýyn. Serwer bilen baglanyşyk gurmaly. Ilkinji baglanyşyk paketiniň formaty aşakdaky ýaly:

 SYN paket

Müşderi baglanyşyk başlanda, tötänleýin başlangyç yzygiderlilik belgisini (müşderi_isn) döredýär we TCP sözbaşysynyň "Yzygiderlilik belgisi" meýdanyna ýerleşdirýär. Şol bir wagtyň özünde, müşderi çykýan paketiň SYN paketidigini görkezmek üçin SYN baýdak ýagdaýyny 1-e belleýär. Müşderi, ilkinji SYN paketini serwere iberip, serwer bilen baglanyşyk gurmak isleýändigini görkezýär. Bu paketde programma gatlagy maglumatlary ýok (ýagny iberilen maglumatlar). Bu pursatda müşderiniň ýagdaýy SYN-SENT diýilýär.

SYN + ACK paketi

Serwer bir müşderiden SYN paketini alanda, öz seriýa belgisini (server_isn) tötänleýin başlaýar we soňra bu belgini TCP sözbaşysynyň "Seriýa belgisi" meýdanyna goýýar. Ondan soň, serwer "Tassyklama belgisi" meýdançasyna müşderi_isn + 1 girýär we SYN we ACK bitlerini 1-e düzýär. Netijede, serwer paketini müşderi üçin iberýär, bu ýerde hiç hili programma gatlagy ýok (we serweriň iberjek maglumatlary ýok). Bu wagt serwer SYN-RCVD ýagdaýynda.

ACK paket

Müşderi bukjany serwerden alandan soň, soňky jogap paketine jogap bermek üçin aşakdaky optimizasiýalary ýerine ýetirmeli: Ilki bilen, müşderi jogap paketiniň TCP sözbaşysynyň ACK bitini 1-e düzýär; Ikinjiden, müşderi "Jogap belgisini tassyklamak" meýdançasyna server_isn + 1 bahasyna girýär; Netijede, müşderi paketini serwere iberýär. Bu paket müşderiden serwere maglumatlary alyp biler. Bu amallar gutarandan soň, müşderi ESTABLISHED ýagdaýyna girer.

Serwer müşderiden jogap paketini alandan soň, ESTABLISHED ýagdaýyna geçýär.

Aboveokardaky amaldan görnüşi ýaly, üç taraplaýyn el çarpyşma geçirilende, üçünji el çarpyşma maglumatlary geçirmäge rugsat berilýär, ýöne ilkinji iki el çarpyşma ýok. Bu, söhbetdeşliklerde köplenç berilýän sorag. Üç taraplaýyn el çarpyşma tamamlanandan soň, iki tarap hem birikmäniň üstünlikli gurlandygyny görkezýän ESTABLISHED ýagdaýyna girýärler, şonda müşderi we serwer biri-birine maglumat iberip bilerler.

Näme üçin üç gezek el çarpmak? Iki gezek däl, dört gezek?
Umumy jogap: "Sebäbi üç taraplaýyn el çarpmak, almak we ibermek ukybyny kepillendirýär." Bu jogap dogry, ýöne diňe esasy sebäp däl, esasy sebäbini öňe sürmeýär. Aşakda, bu meselä düşünişimizi çuňlaşdyrmak üçin üç tarapdan el çarpmagyň sebäplerini seljererin.

Üç taraplaýyn el çarpyşma, taryhy taýdan gaýtalanýan baglanyşyklaryň başlangyjyndan täsirli bolup biler (esasy sebäp)
Üç taraplaýyn el çarpmak iki tarapyň hem ygtybarly başlangyç yzygiderlilik belgisini alandygyny kepillendirýär.
Üç taraplaýyn el çarpmak serişdeleri ýitirmekden saklanýar.

1-nji sebäp: Taryhy dublikat goşulmalardan gaça duruň
Gysgaça aýdylanda, üç taraplaýyn el çarpmagyň esasy sebäbi köne dublikat baglanyşygyň başlangyjy sebäpli dörän bulaşyklykdan gaça durmakdyr. Çylşyrymly tor gurşawynda maglumat paketleriniň iberilmegi hemişe bellenilen wagta laýyklykda ugradylýan ýere iberilmeýär we köne maglumat paketleri ilki bilen tor dyknyşygy we beýleki sebäpler sebäpli barjak ýeriňize gelip biler. Munuň öňüni almak üçin, TCP baglanyşygy gurmak üçin üç taraplaýyn el çarpyşma ulanýar.

üç taraplaýyn el çarpmak taryhy dublikat baglanyşyklardan gaça durýar

Müşderi, ulgam dyknyşygy ýaly ýagdaýlarda yzygiderli köp SYN birikdiriş paketini iberende, aşakdakylar bolup biler:

1- Köne SYN paketleri iň soňky SYN paketlerinden öň serwere gelýär.
2-Serwer, SYN + ACK paketini köne SYN paketini alandan soň müşderä jogap berer.
3- Müşderi SYN + ACK paketini alanda, baglanyşygyň öz kontekstine görä taryhy baglanyşykdygyny (yzygiderlilik belgisiniň möhleti ýa-da wagty gutarandygyny) kesgitleýär we birikmäni ýatyrmak üçin RST paketini serwere iberýär.

Iki el çarpyşma bilen häzirki baglanyşygyň taryhy baglanyşykdygyny ýa-da ýokdugyny kesgitläp bolmaz. Üç taraplaýyn el çarpmak, müşderä üçünji paket ibermäge taýyn bolanda kontekst esasynda häzirki baglanyşygyň taryhy baglanyşykdygyny ýa-da ýokdugyny kesgitlemäge mümkinçilik berýär:

1- Taryhy baglanyşyk bolsa (yzygiderlilik belgisi gutardy ýa-da gutardy), üçünji el çarpyşma bilen iberilen paket, taryhy baglanyşygy ýatyrmak üçin RST paketidir.
2-Taryhy baglanyşyk bolmasa, üçünji gezek iberilen paket ACK paketidir we iki aragatnaşyk edýän tarap bu baglanyşygy üstünlikli ýola goýýar.

Şol sebäpden, TCP-iň üç taraplaýyn el çarpmagy ulanmagynyň esasy sebäbi, taryhy baglanyşyklaryň öňüni almak üçin baglanyşygy başlamagydyr.

2-nji sebäp: Iki tarapyň başlangyç yzygiderlilik sanlaryny sinhronlamak
TCP protokolynyň iki tarapy hem ygtybarly iberilmegini üpjün etmek üçin esasy faktor bolan yzygiderlilik belgisini saklamalydyr. TCP baglanyşyklarynda yzygiderlilik sanlary möhüm rol oýnaýar. Olar aşakdakylary edýärler:

Alyjy dublikat maglumatlary ýok edip we maglumatlaryň takyklygyny üpjün edip biler.

Alyjy maglumatlaryň bitewiligini üpjün etmek üçin yzygiderlilik belgisi boýunça paketleri alyp biler.

● Yzygiderlilik belgisi, ygtybarly maglumat geçirişini üpjün edip, beýleki tarap tarapyndan alnan maglumat paketini kesgitläp biler.

Şonuň üçin TCP birikmesini gurandan soň, müşderi başlangyç yzygiderlilik belgisi bilen SYN paketlerini iberýär we serwerden müşderiniň SYN paketiniň üstünlikli kabul edilendigini görkezýän ACK paket bilen jogap bermegini talap edýär. Soňra, serwer SYN paketini başlangyç yzygiderlilik belgisi bilen müşderä iberýär we başlangyç yzygiderlilik belgileriniň ygtybarly sinhronlanmagyny üpjün etmek üçin müşderiniň bir gezek jogap bermegine garaşýar.

Iki tarapyň başlangyç seriýa belgilerini sinhronlaň

Dört taraplaýyn el çarpyşma iki tarapyň başlangyç yzygiderlilik sanlaryny ygtybarly sinhronlamak mümkin bolsa-da, ikinji we üçünji ädimleri bir ädimde birleşdirip, üç taraplaýyn elleşmegine sebäp bolup biler. Şeýle-de bolsa, iki el çarpyşma diňe bir tarapyň başlangyç yzygiderliliginiň beýleki tarap tarapyndan üstünlikli alynmagyny kepillendirip biler, ýöne iki tarapyň başlangyç yzygiderlilik belgisiniň tassyklanjakdygyna kepillik ýok. Şol sebäpden, TCP birikmeleriniň durnuklylygyny we ygtybarlylygyny üpjün etmek üçin üç taraplaýyn el çarpmak iň gowy saýlawdyr.

3-nji sebäp: Çeşmeleriň isrip edilmeginden gaça duruň
Diňe "iki el çarpmak" bar bolsa, müşderi SYN haýyşy torda petiklense, müşderi serwer tarapyndan iberilen ACK paketini alyp bilmez, şonuň üçin SYN gaharlanar. Şeýle-de bolsa, üçünji el çarpyşma bolmansoň, serwer müşderiniň baglanyşygy ýola goýmak üçin ACK tassyklamasyny alandygyny ýa-da ýokdugyny kesgitläp bilmeýär. Şonuň üçin serwer her SYN haýyşyny alandan soň işjeň ýagdaýda baglanyşyk gurup biler. Bu aşakdakylara alyp barýar:

Çeşmeleriň galyndylary: Müşderiniň SYN haýyşy petiklense, köp SYN paketiniň yzygiderli iberilmegine sebäp bolsa, serwer haýyşy alandan soň köp sanly nädogry birikmeler döreder. Bu serwer çeşmeleriniň gereksiz isrip edilmegine getirýär.

Habary saklamak: Üçünji el çarpyşmanyň ýoklugy sebäpli serwer, baglanyşygy gurmak üçin müşderiniň ACK tassyklamasyny dogry alandygyny ýa-da ýokdugyny bilip bilmeýär. Netijede, habarlar tora ýapyşsa, müşderi SYN haýyşlaryny gaýta-gaýta iberip, serweriň hemişe täze birikmeler gurmagyna sebäp bolar. Bu setdäki dyknyşygy artdyrar we gijikdirer we umumy ulgam işine ýaramaz täsir eder.

Çeşmeleri ýitirmekden gaça duruň

Şol sebäpli, tor birikmesiniň durnuklylygyny we ygtybarlylygyny üpjün etmek üçin TCP, bu problemalaryň ýüze çykmazlygy üçin baglanyşygy ýola goýmak üçin üç taraplaýyn el çarpmagy ulanýar.

Gysgaça mazmun
TheTor paket dellalyTCP birikmesini gurmak üç taraplaýyn el çarpmak bilen amala aşyrylýar. Üç taraplaýyn el çarpyşma wagtynda müşderi ilki bilen SYN baýdagy bilen paket iberip, baglanyşyk gurmak isleýändigini görkezýär. Müşderiden haýyşy alandan soň, serwer müşderä SYN we ACK baýdaklary bilen bir paket jogap berýär, baglanyşyk haýyşynyň kabul edilendigini görkezýär we başlangyç yzygiderlilik belgisini iberýär. Netijede, müşderi baglanyşygyň üstünlikli gurlandygyny görkezmek üçin serwere ACK baýdagy bilen jogap berýär. Şeýlelik bilen, iki tarap ESTABLISHED ýagdaýynda we biri-birine maglumat iberip bilerler.

Umuman aýdanyňda, TCP birikmesini döretmek üçin üç taraplaýyn el çarpyşma prosesi baglanyşygyň durnuklylygyny we ygtybarlylygyny üpjün etmek, taryhy baglanyşyklar sebäpli bulaşyklygyň we çeşmeleriň sarp edilmeginiň öňüni almak we iki tarapyň hem maglumatlary alyp we iberip bilmeklerini üpjün etmek üçin döredildi.


Iş wagty: -anwar-08-2025