Челтәр пакет брокеры TCP тоташуларының төп серләре: Өчләтә кул кысу ихтыяҗын ачыклау

TCP тоташуын көйләү
Без веб-сайтларда йөргәндә, электрон почта җибәргәндә яки онлайн уен уйнаганда, еш кына аның артындагы катлаулы челтәр тоташуы турында уйламыйбыз. Ләкин нәкъ менә шушы кечкенә адымнар безнең һәм сервер арасындагы тотрыклы элемтәне тәэмин итә. Иң мөһим адымнарның берсе - TCP тоташуын урнаштыру, һәм моның төп өлеше - өч яклы кул алышу.

Бу мәкаләдә өч яклы элемтә принцибы, процессы һәм әһәмияте җентекләп каралачак. Адым саен без өч яклы элемтәнең ни өчен кирәклеген, аның тоташуның тотрыклылыгын һәм ышанычлылыгын ничек тәэмин итүен, һәм мәгълүмат тапшыру өчен аның ни дәрәҗәдә мөһим булуын аңлатырбыз. Өч яклы элемтәне тирәнтен аңлау белән, без челтәр элемтәсенең төп механизмнарын яхшырак аңларбыз һәм TCP тоташуларының ышанычлылыгы турында ачыграк күзаллау алырбыз.

TCP өч яклы кул алышу процессы һәм халәт күчүләре
TCP - мәгълүмат тапшыру алдыннан тоташуны урнаштыруны таләп итә торган тоташуга юнәлтелгән транспорт протоколы. Бу тоташу урнаштыру процессы өч яклы кул кысу юлы белән башкарыла.

 TCP өч яклы кул алышу

Әйдәгез, һәр тоташу вакытында җибәрелгән TCP пакетларын җентекләбрәк карап чыгыйк.

Башта клиент та, сервер да ЯБЫК була. Башта сервер портны актив рәвештә тыңлый һәм ТЫҢЛАУ халәтендә була, бу серверны эшләтеп җибәрергә кирәклеген аңлата. Аннары клиент веб-биткә керә башларга әзер. Аңа сервер белән тоташу урнаштырырга кирәк. Беренче тоташу пакетының форматы түбәндәгечә:

 SYN пакеты

Клиент тоташуны башлагач, ул очраклы башлангыч эзлеклелек номерын (client_isn) булдыра һәм аны TCP башлыгының "Эзлеклелек номеры" кырына урнаштыра. Шул ук вакытта, клиент SYN флаг позициясен 1гә куя, бу чыгучы пакетның SYN пакеты булуын күрсәтә. Клиент серверга беренче SYN пакетын җибәреп, сервер белән тоташу урнаштырырга теләвен күрсәтә. Бу пакетта кушымта катламы мәгълүматлары (ягъни җибәрелгән мәгълүматлар) юк. Бу ноктада клиентның статусы SYN-SENT дип билгеләнә.

SYN+ACK пакеты

Сервер клиенттан SYN пакетын алгач, очраклы рәвештә үзенең серия номерын (server_isn) инициализацияли һәм аннары бу санны TCP башлыгының "Серия номеры" кырына урнаштыра. Аннары, сервер "Раслау номеры" кырына client_isn + 1 кертеп, SYN һәм ACK битларын 1гә куя. Ниһаять, сервер пакетны клиентка җибәрә, анда кушымта катламы мәгълүматлары юк (һәм сервер җибәрер өчен мәгълүмат юк). Бу вакытта сервер SYN-RCVD хәлендә була.

ACK пакеты

Клиент сервердан пакетны алгач, соңгы җавап пакетына җавап бирү өчен түбәндәге оптимизацияләрне башкарырга тиеш: Беренчедән, клиент җавап пакетының TCP башлыгының ACK битын 1гә куя; Икенчедән, клиент "Җавап номерын раслау" кырына server_isn + 1 кыйммәтен кертә; Ниһаять, клиент пакетны серверга җибәрә. Бу пакет клиенттан серверга мәгълүмат ташый ала. Бу операцияләр тәмамлангач, клиент STABLISHED халәтенә керәчәк.

Сервер клиенттан җавап пакетын алгач, ул шулай ук ​​STABLISHED хәленә күчә.

Югарыдагы процесстан күренгәнчә, өч яклы кул бирешү башкарганда, өченче кул бирешү мәгълүматны ташырга рөхсәт ителә, ләкин беренче ике кул бирешү юк. Бу сорау интервьюларда еш бирелә. Өч яклы кул бирешү тәмамлангач, ике як та СТАБЛИШЕД хәленә керә, бу тоташуның уңышлы урнаштырылганлыгын күрсәтә, бу вакытта клиент һәм сервер бер-берсенә мәгълүмат җибәрә башлый ала.

Ни өчен өч тапкыр кул кысу? Ике түгел, дүрт тапкыр?
Гадәттәге җавап: "Чөнки өч яклы кул кысу алу һәм җибәрү мөмкинлеген гарантияли." Бу җавап дөрес, ләкин ул өске сәбәп кенә, төп сәбәпне күрсәтми. Түбәндә мин бу мәсьәләне тирәнтен аңлау өчен өч яклы кул кысу сәбәпләрен анализлаячакмын.

Өч яклы кул кысу тарихи яктан кабатланган бәйләнешләрнең башлангыч формалашуын нәтиҗәле рәвештә булдырмаска ярдәм итә (төп сәбәп)
Өч яклы кул кысу ике якның да ышанычлы башлангыч эзлеклелек номерын алуын гарантияли.
Өч яклы кул кысу ресурсларны әрәм итүдән саклый.

1 нче сәбәп: Тарихи кабатланган кушылулардан сакланыгыз
Кыскасы, өч яклы элемтәнең төп сәбәбе - иске кабатланган тоташу инициализациясе аркасында килеп чыккан буталчыклыкны булдырмас өчен. Катлаулы челтәр мохитендә мәгълүмат пакетларын тапшыру һәрвакыт билгеләнгән вакытка туры китереп максатлы хостка җибәрелми, һәм иске мәгълүмат пакетлары челтәр тыгызлыгы һәм башка сәбәпләр аркасында максатлы хостка беренче булып килеп җитәргә мөмкин. Моңа юл куймас өчен, TCP тоташуны урнаштыру өчен өч яклы элемтә куллана.

өч яклы кул кысу тарихи кабатланган бәйләнешләрдән котыла

Клиент бер-бер артлы берничә SYN тоташу урнаштыру пакетларын җибәргәндә, мәсәлән, челтәр тыгызлыгы, түбәндәге очракларда килеп чыгарга мөмкин:

1- Иске SYN пакетлары серверга соңгы SYN пакетларыннан алдарак килә.
2- Сервер иске SYN пакетын алганнан соң клиентка SYN + ACK пакетына җавап бирәчәк.
3- Клиент SYN + ACK пакетын алгач, үз контекстына туры китереп, тоташуның тарихи тоташу булуын (эзлеклелек номеры беткән яки вакыты чыккан) билгели, аннары тоташуны өзү өчен RST пакетын серверга җибәрә.

Ике кул кысу тоташуы белән, хәзерге тоташуның тарихи тоташу булуын ачыклау мөмкин түгел. Өч яклы кул кысу клиентка өченче пакетны җибәрергә әзер булганда контекст нигезендә хәзерге тоташуның тарихи тоташу булуын билгеләргә мөмкинлек бирә:

1- Әгәр бу тарихи тоташу булса (эзлеклелек номеры чыккан яки вакыты чыккан), өченче кул кысу белән җибәрелгән пакет - тарихи тоташуны өзү өчен RST пакеты.
2- Әгәр бу тарихи тоташу булмаса, өченче тапкыр җибәрелгән пакет ACK пакеты була, һәм ике аралашучы як тоташуны уңышлы урнаштыра.

Шуңа күрә, TCP өч яклы кул алышуны куллануының төп сәбәбе - ул тарихи тоташуларны булдырмас өчен тоташуны инициализацияли.

2 нче сәбәп: Ике якның да башлангыч эзлеклелек номерларын синхронлаштыру
TCP протоколының ике ягы да ышанычлы тапшыруны тәэмин итү өчен төп фактор булып торган эзлеклелек номерын сакларга тиеш. Эзлеклелек номерлары TCP тоташуларында мөһим роль уйный. Алар түбәндәгеләрне эшлиләр:

Алучы кабатланган мәгълүматларны бетерә һәм мәгълүматларның дөреслеген тәэмин итә ала.

Алучы мәгълүматларның бөтенлеген тәэмин итү өчен пакетларны эзлеклелек номеры тәртибендә кабул итә ала.

● Эзлеклелек номеры икенче як тарафыннан алынган мәгълүмат пакетын билгели ала, бу ышанычлы мәгълүмат тапшыруны тәэмин итә.

Шуңа күрә, TCP тоташуы урнаштырылганнан соң, клиент башлангыч эзлеклелек номеры белән SYN пакетларын җибәрә һәм сервердан клиентның SYN пакетын уңышлы кабул итүне күрсәтүче ACK пакеты белән җавап бирүен таләп итә. Аннары сервер клиентка башлангыч эзлеклелек номеры белән SYN пакетын җибәрә һәм клиентның бер тапкыр һәм мәңгегә җавап бирүен көтә, башлангыч эзлеклелек номерларының ышанычлы синхронлаштырылганлыгын тәэмин итү өчен.

Ике якның да башлангыч серия номерларын синхронлаштырыгыз

Дүрт яклы кул бирешү ике якның да башлангыч эзлеклелек номерларын ышанычлы синхронлаштыру өчен мөмкин булса да, икенче һәм өченче адымнарны бер адымга берләштерергә мөмкин, нәтиҗәдә өч яклы кул бирешү барлыкка килә. Ләкин, ике кул бирешү бер якның башлангыч эзлеклелек номерын икенче як уңышлы кабул итүен генә гарантияли ала, ләкин ике якның да башлангыч эзлеклелек номерын раслауга гарантия юк. Шуңа күрә, TCP тоташуларының тотрыклылыгын һәм ышанычлылыгын тәэмин итү өчен өч яклы кул бирешү иң яхшы сайлау булып тора.

3 нче сәбәп: Ресурсларны әрәм итүдән сакланыгыз
Әгәр "ике кул кысу" гына булса, клиентның SYN соравы челтәрдә блокланганда, клиент сервер җибәргән ACK пакетын ала алмый, шуңа күрә SYN кабат җибәреләчәк. Ләкин, өченче кул кысу булмаганлыктан, сервер клиентның тоташу урнаштыру өчен ACK раславын алганмы-юкмы икәнен ачыклый алмый. Шуңа күрә, сервер һәр SYN соравын алганнан соң гына алдан ук тоташу урнаштыра ала. Бу түбәндәгеләргә китерә:

Ресурсларны әрәм итү: Әгәр клиентның SYN соравы блокланса, нәтиҗәдә берничә SYN пакеты кабат-кабат тапшырылса, сервер сорауны алганнан соң берничә артык яраксыз тоташу урнаштырачак. Бу сервер ресурсларының кирәксез әрәм итүенә китерә.

Хәбәрләрне саклау: Өченче кул кысу булмау сәбәпле, сервер клиентның тоташу урнаштыру өчен ACK раславын дөрес алганмы-юкмы икәнен белә алмый. Нәтиҗәдә, хәбәрләр челтәрдә калып калса, клиент SYN сорауларын кат-кат җибәрә, бу серверның даими рәвештә яңа тоташулар урнаштыруына китерә. Бу челтәр тыгызлыгын һәм тоткарлануны арттырачак һәм челтәрнең гомуми эшчәнлегенә тискәре йогынты ясаячак.

Ресурсларны әрәм итүдән сакланыгыз

Шуңа күрә, челтәр тоташуының тотрыклылыгын һәм ышанычлылыгын тәэмин итү өчен, TCP бу проблемалар килеп чыкмасын өчен тоташуны урнаштыру өчен өч яклы кул алышуны куллана.

Кыскача мәгълүмат
...Челтәр пакет брокерыTCP тоташуын урнаштыру өч яклы кул кысу белән башкарыла. Өч яклы кул кысу вакытында клиент башта серверга SYN флагы белән пакет җибәрә, бу аның тоташу урнаштырырга теләвен күрсәтә. Клиенттан сорау алганнан соң, сервер клиентка SYN һәм ACK флаглары белән пакетка җавап бирә, бу тоташу соравы кабул ителгәнлеген күрсәтә һәм үзенең башлангыч эзлеклелек номерын җибәрә. Ниһаять, клиент серверга ACK флагы белән җавап бирә, бу тоташу уңышлы урнаштырылганлыгын күрсәтә. Шулай итеп, ике як та УРНАШТЫРЫЛГАН халәттә була һәм бер-берсенә мәгълүмат җибәрә башлый ала.

Гомумән алганда, TCP тоташуын урнаштыру өчен өч яклы кул кысу процессы тоташуның тотрыклылыгын һәм ышанычлылыгын тәэмин итү, тарихи тоташулар аркасында буталчыклыкларны һәм ресурсларны әрәм итүдән саклану, һәм ике якның да мәгълүмат ала һәм җибәрә алуын тәэмин итү өчен эшләнгән.


Бастырып чыгару вакыты: 2025 елның 8 гыйнвары