Кључне мистерије ТЦП веза брокера мрежних пакета: Демистификована је потреба за троструким руковањем

Подешавање ТЦП везе
Када претражујемо веб, шаљемо е-пошту или играмо онлајн игру, често не размишљамо о сложеној мрежној вези која стоји иза тога. Међутим, ови наизглед мали кораци обезбеђују стабилну комуникацију између нас и сервера. Један од најважнијих корака је подешавање ТЦП везе, а срж овога је тросмерно руковање.

Овај чланак ће детаљно размотрити принцип, процес и важност тросмерног руковања. Корак по корак, објаснићемо зашто је троструко руковање потребно, како обезбеђује стабилност и поузданост везе и колико је важно за пренос података. Са дубљим разумевањем тросмерног руковања, стећи ћемо боље разумевање основних механизама мрежне комуникације и јаснији увид у поузданост ТЦП веза.

ТЦП тросмерни процес руковања и транзиције стања
ТЦП је транспортни протокол оријентисан на везу, који захтева успостављање везе пре преноса података. Овај процес успостављања везе се обавља троструким руковањем.

 ТЦП тросмерно руковање

Хајде да ближе погледамо ТЦП пакете који се шаљу у свакој вези.

У почетку, и клијент и сервер су ЗАТВОРЕНИ. Прво, сервер активно слуша порт и налази се у стању ЛИСТЕН, што значи да сервер мора бити покренут. Затим, клијент је спреман да приступи веб страници. Потребно је да успостави везу са сервером. Формат првог пакета везе је следећи:

 СИН пакет

Када клијент започне везу, генерише насумични почетни редни број (цлиент_исн) и поставља га у поље „Број секвенце“ ТЦП заглавља. Истовремено, клијент поставља позицију СИН заставице на 1 да би означио да је одлазни пакет СИН пакет. Клијент показује да жели да успостави везу са сервером слањем првог СИН пакета на сервер. Овај пакет не садржи податке слоја апликације (тј. послате податке). У овом тренутку, статус клијента је означен као СИН-СЕНТ.

СИН+АЦК пакет

Када сервер прими СИН пакет од клијента, он насумично иницијализује сопствени серијски број (сервер_исн) и затим ставља тај број у поље „Сериал нумбер“ у ТЦП заглављу. Затим сервер уноси цлиент_исн + 1 у поље „Број потврде“ и поставља и СИН и АЦК бит на 1. Коначно, сервер шаље пакет клијенту, који не садржи податке са слоја апликације (као ни податке за сервер послати). У овом тренутку, сервер је у СИН-РЦВД стању.

АЦК Пацкет

Када клијент прими пакет од сервера, мора да изврши следеће оптимизације да би одговорио на коначни пакет одговора: Прво, клијент поставља АЦК бит ТЦП заглавља пакета одговора на 1; Друго, клијент уноси вредност сервер_исн + 1 у поље "Потврди број одговора"; На крају, клијент шаље пакет серверу. Овај пакет може да преноси податке од клијента до сервера. По завршетку ових операција, клијент ће ући у УТВРЂЕНО стање.

Када сервер прими пакет одговора од клијента, он такође прелази у ЕСТАБЛИСХЕД стање.

Као што можете видети из горњег процеса, када се изводи тросмерно руковање, трећем руковању је дозвољено да носи податке, али прва два руковања нису. Ово је питање које се често поставља у интервјуима. Када се тросмерно руковање заврши, обе стране улазе у стање ЕСТАБЛИСХЕД, што указује да је веза успешно успостављена, у ком тренутку клијент и сервер могу да почну да шаљу податке један другом.

Зашто три руковања? Не два пута, четири пута?
Уобичајени одговор је: "Зато што троструко руковање гарантује могућност примања и слања." Овај одговор је тачан, али то је само површински разлог, не наводи главни разлог. У наставку ћу анализирати разлоге троструког руковања са три аспекта како бих продубио наше разумевање овог питања.

Тросмерно руковање може ефикасно да избегне иницијализацију историјски поновљених веза (главни разлог)
Троструко руковање гарантује да су обе стране добиле поуздан почетни редни број.
Троструко руковање избегава трошење ресурса.

Разлог 1: Избегавајте историјске дупле спојеве
Укратко, главни разлог за тросмерно руковање је избегавање забуне изазване старом иницијализацијом дупле везе. У сложеном мрежном окружењу, пренос пакета података се не шаље увек до одредишног хоста у складу са одређеним временом, а стари пакети података могу прво стићи до одредишног хоста због загушења мреже и других разлога. Да би то избегао, ТЦП користи тросмерно руковање да успостави везу.

тросмерно руковање избегава историјске дупле везе

Када клијент узастопно пошаље више пакета за успостављање СИН везе, у ситуацијама као што је загушење мреже, може се десити следеће:

1- Стари СИН пакети стижу на сервер пре најновијих СИН пакета.
2- Сервер ће одговорити на СИН + АЦК пакет клијенту након што прими стари СИН пакет.
3- Када клијент прими СИН + АЦК пакет, он утврђује да је веза историјска веза (број секвенце је истекао или је истекао) у складу са сопственим контекстом, а затим шаље РСТ пакет серверу да прекине везу.

Са везом са два руковања, не постоји начин да се утврди да ли је тренутна веза историјска веза. Тросмерно руковање омогућава клијенту да одреди да ли је тренутна веза историјска веза на основу контекста када је спремна да пошаље трећи пакет:

1- Ако се ради о историјској вези (број секвенце је истекао или је истекао), пакет послат трећим руковањем је РСТ пакет за прекид историјске везе.
2- Ако није историјска веза, пакет који се шаље по трећи пут је АЦК пакет и две стране у комуникацији успешно успостављају везу.

Стога је главни разлог због којег ТЦП користи тросмерно руковање тај што иницијализује везу како би спречио историјске везе.

Разлог 2: За синхронизацију почетних редоследних бројева обе стране
Обе стране ТЦП протокола морају да одржавају редни број, што је кључни фактор за поуздан пренос. Бројеви секвенци играју важну улогу у ТЦП везама. Они раде следеће:

Пријемник може елиминисати дупле податке и осигурати тачност података.

Пријемник може да прима пакете по редоследу броја да би се обезбедио интегритет података.

● Редни број може да идентификује пакет података који је примила друга страна, омогућавајући поуздан пренос података.

Стога, након успостављања ТЦП везе, клијент шаље СИН пакете са почетним редоследним бројем и захтева од сервера да одговори са АЦК пакетом који указује на успешан пријем клијентовог СИН пакета. Затим, сервер шаље СИН пакет са почетним редоследним бројем клијенту и чека да клијент одговори, једном заувек, како би осигурао да су почетни бројеви секвенце поуздано синхронизовани.

Синхронизујте почетне серијске бројеве обе стране

Иако је четворосмерно руковање такође могуће за поуздано синхронизовање почетних редоследних бројева обе стране, други и трећи корак се могу комбиновати у један корак, што резултира тросмерним руковањем. Међутим, два руковања могу само да гарантују да је почетни редни број једне стране успешно примљен од стране друге стране, али не постоји гаранција да се почетни редни број обе стране може потврдити. Због тога је тросмерно руковање најбољи избор да би се обезбедила стабилност и поузданост ТЦП веза.

Разлог 3: Избегавајте расипање ресурса
Ако постоји само „два руковања“, када је клијентски СИН захтев блокиран у мрежи, клијент не може да прими АЦК пакет који шаље сервер, па ће СИН бити поново послат. Међутим, пошто не постоји треће руковање, сервер не може да утврди да ли је клијент примио АЦК потврду за успостављање везе. Стога, сервер може само проактивно да успостави везу након што прими сваки СИН захтев. Ово доводи до следећег:

Расипање ресурса: Ако је клијентов СИН захтев блокиран, што доводи до поновљеног преноса вишеструких СИН пакета, сервер ће успоставити више редундантних неважећих веза након што прими захтев. Ово доводи до непотребног трошења серверских ресурса.

Задржавање поруке: Због недостатка трећег руковања, сервер нема начина да сазна да ли је клијент исправно примио АЦК потврду за успостављање везе. Као резултат тога, ако се поруке заглаве у мрежи, клијент ће наставити да шаље СИН захтеве изнова и изнова, узрокујући да сервер стално успоставља нове везе. Ово ће повећати загушење мреже и кашњење и негативно утицати на укупне перформансе мреже.

Избегавајте расипање ресурса

Стога, како би се осигурала стабилност и поузданост мрежне везе, ТЦП користи тросмерно руковање да успостави везу како би се избегла појава ових проблема.

Резиме
ТхеБрокер мрежних пакетаУспостављање ТЦП везе врши се тросмерним руковањем. Током тросмерног руковања, клијент прво шаље серверу пакет са СИН заставицом, што указује да жели да успостави везу. Након што прими захтев од клијента, сервер одговара на пакет са СИН и АЦК заставицама клијенту, што указује да је захтев за повезивање прихваћен, и шаље сопствени почетни редни број. На крају, клијент серверу одговара са АЦК заставицом да би указао да је веза успешно успостављена. Дакле, две стране су у ЕСТАБЛИРАНОМ стању и могу да почну да шаљу податке једна другој.

Уопштено говорећи, тросмерни процес руковања за успостављање ТЦП везе је дизајниран да обезбеди стабилност и поузданост везе, избегне забуну и расипање ресурса у вези са историјским везама и обезбеди да обе стране могу да примају и шаљу податке.


Време поста: Јан-08-2025