TCP тоташтыру
Вебны караганда, электрон почта җибәргәндә яки онлайн уен уйнаганда, без аның артындагы катлаулы челтәр бәйләнеше турында еш уйламыйбыз. Шулай да, безнең белән сервер арасында тотрыклы аралашуны тәэмин итүче бу кечкенә адымнар. Иң мөһим адымнарның берсе - TCP тоташу көйләү, һәм моның асылы - өч яклы кул чабу.
Бу мәкаләдә өч яклы кул чабуның принцибы, процессы һәм мөһимлеге җентекләп тикшереләчәк. Адым саен без ни өчен өч яклы кул чабу кирәклеген, ничек тоташуның тотрыклылыгын һәм ышанычлылыгын тәэмин итүен, һәм мәгълүмат тапшыру өчен никадәр мөһимлеген аңлатырбыз. Өч яклы кул чабуны тирәнрәк аңлап, без челтәр элемтәсенең төп механизмнарын яхшырак аңларбыз һәм TCP тоташуларының ышанычлылыгын тагын да яхшырак күрербез.
TCP Өч яклы кул чабу процессы һәм дәүләт күчү
TCP - тоташуга юнәлтелгән транспорт протоколы, ул мәгълүмат тапшырганчы тоташуны булдыруны таләп итә. Бу бәйләнешне урнаштыру процессы өч яклы кул чабу белән башкарыла.
Eachәрбер бәйләнештә җибәрелгән TCP пакетларын җентекләп карап чыгыйк.
Башта клиент та, сервер да ЯКЫН. Беренчедән, сервер портны актив тыңлый һәм Тыңлау халәтендә, димәк, сервер башланырга тиеш. Алга таба, клиент веб-биткә керә башларга әзер. Бу сервер белән бәйләнеш урнаштырырга тиеш. Беренче тоташу пакетының форматы түбәндәгечә:
Клиент тоташуны башлап җибәргәндә, очраклы башлангыч эзлеклелек саны (клиент_исн) чыгара һәм аны TCP башлыгының "Эзләү номеры" кырына урнаштыра. Шул ук вакытта, клиент SYN флаг позициясен 1гә куя, чыккан пакетның SYN пакеты булуын күрсәтә. Клиент серверга беренче SYN пакетын җибәреп сервер белән бәйләнеш урнаштырырга теләгәнен күрсәтә. Бу пакетта кушымта катламы мәгълүматлары юк (ягъни җибәрелгән мәгълүматлар). Бу вакытта клиент статусы SYN-SENT дип билгеләнә.
Сервер клиенттан SYN пакетын алгач, очраклы рәвештә үзенең серия номерын башлый (server_isn), аннары бу санны TCP башлыгының "Серия номеры" кырына куя. Аннан соң, сервер клиент_исн + 1гә "Рәхмәт номеры" кырына керә һәм SYN һәм ACK битләрен 1гә куя. Ниһаять, сервер пакетка клиентка җибәрә, анда кушымта катламы булмаган мәгълүматлар (һәм сервер өчен мәгълүматлар юк) җибәрергә). Бу вакытта сервер SYN-RCVD хәлендә.
Клиент пакетны сервердан алганнан соң, соңгы җавап пакетына җавап бирү өчен түбәндәге оптимизацияләрне эшләргә тиеш: Беренчедән, клиент җавап пакетының TCP башлыгының ACK битен 1гә куя; Икенчедән, клиент "җавап номерын раслау" кырына server_isn + 1 кыйммәтен кертә; Ниһаять, клиент пакетны серверга җибәрә. Бу пакет клиенттан серверга мәгълүмат йөртә ала. Бу операцияләр тәмамлангач, клиент ESTABLISHED халәтенә керәчәк.
Сервер клиенттан җавап пакетын алгач, ул шулай ук ESTABLISHED халәтенә күчә.
Aboveгарыдагы процесстан күргәнегезчә, өч яклы кул чабу вакытында, өченче кул чабу мәгълүмат алып барырга рөхсәт ителә, ләкин беренче ике кул чабу юк. Бу сорау интервьюда еш бирелә. Өч яклы кул чабу тәмамлангач, ике як та ESTABLISHED халәтенә керәләр, бу бәйләнешнең уңышлы урнашканын күрсәтә, шул вакытта клиент һәм сервер бер-берсенә мәгълүмат җибәрә башлый.
Нигә өч кул чабу? Ике тапкыр түгел, дүрт тапкыр?
Гомуми җавап: "Чөнки өч яклы кул чабу кабул итү һәм җибәрү мөмкинлеген гарантияли." Бу җавап дөрес, ләкин төп сәбәп кенә түгел. Киләсе, мин бу проблеманы аңлавыбызны тирәнәйтү өчен өч аспекттан өч тапкыр кул чабу сәбәпләрен анализлыйм.
Өч яклы кул чабу тарихи кабатланган бәйләнешләрне башлап җибәрүдән эффектив рәвештә сакланырга мөмкин (төп сәбәп)
Өч яклы кул чабу ике якның да ышанычлы башлангыч эзлеклелек номерын алуына гарантия бирә.
Өч яклы кул чабу ресурсларны әрәм итүдән саклый.
Сәбәп 1: Тарихи дубликатка кушылудан сакланыгыз
Кыскасы, өч яклы кул чабуның төп сәбәбе - иске дубликат тоташу инициализациясе аркасында килеп чыккан буталчыклыктан саклану. Катлаулы челтәр мохитендә мәгълүмат пакетларын тапшыру һәрвакыт билгеләнгән вакытка туры килгән хуҗага җибәрелми, һәм иске мәгълүмат пакетлары челтәр тыгызлыгы һәм башка сәбәпләр аркасында башта максат хуҗасына килеп җитә ала. Моны булдырмас өчен, TCP бәйләнешне урнаштыру өчен өч яклы кул чабуны куллана.
Клиент бер-бер артлы берничә SYN тоташтыру пакетларын җибәргәндә, челтәр тыгылуы кебек очракларда түбәндәгеләр булырга мөмкин:
1- Иске SYN пакетлары серверга соңгы SYN пакетлары алдыннан килеп җитәләр.
2- Сервер SYN + ACK пакетына клиентка иске SYN пакетын алганнан соң җавап бирәчәк.
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 тоташу өчен өч яклы кул чабу процессы тоташуның тотрыклылыгын һәм ышанычлылыгын тәэмин итү, тарихи бәйләнешләр аша буталчыклык һәм ресурсларны әрәм итүдән саклану өчен, һәм ике якның да мәгълүмат алу һәм җибәрү мөмкинлеген тәэмин итү өчен эшләнгән.
Пост вакыты: Ян-08-2025