TCP-ның яшерен коралы: Челтәр агымын контрольдә тоту һәм челтәр тыгызлыгын контрольдә тоту

TCP ышанычлы транспорт
Без барыбыз да ышанычлы транспорт протоколы буларак TCP протоколы белән таныш, ләкин ул транспортның ышанычлылыгын ничек тәэмин итә?

Ышанычлы тапшыруга ирешү өчен, күп факторларны исәпкә алырга кирәк, мәсәлән, мәгълүмат коррупциясе, югалту, кабатлау, тәртиптән тыш шардлар. Әгәр дә бу проблемаларны чишеп булмаса, ышанычлы тапшыруга ирешеп булмый.

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

Бу кәгазьдә без сикерү тәрәзәсенә, агымны контрольдә тотуга һәм TCP тыгызлыгын контрольдә тотарбыз. Тапшыру механизмы киләсе бүлектә аерым яктыртылган.

Челтәр агымын контрольдә тоту
Челтәр агымын контрольдә тоту яки челтәр трафик контроле дип белү - чынлыкта җитештерүчеләр һәм кулланучылар арасындагы нечкә мөнәсәбәтнең чагылышы. Сез, мөгаен, бу сценарийны эштә яки интервьюда очраткансыз. Әгәр җитештерүченең җитештерү сәләте кулланучының куллану сәләтеннән күпкә артса, бу чиратның чиксез үсүенә китерәчәк. Moreитдирәк очракта, сез белә аласыз, RabbitMQ хәбәрләре артык күп җыелгач, бу бөтен MQ серверның эш бозылуына китерергә мөмкин. TCP өчен дә шулай; тикшерелмәсә, челтәргә бик күп хәбәр кертеләчәк, һәм кулланучылар мөмкинлекләреннән артып китәчәк, җитештерүчеләр икеләтә хәбәр җибәрүне дәвам итәрләр, бу челтәр эшенә зур йогынты ясар.

Бу күренешне чишү өчен, TCP җибәрүчегә кабул итүченең реаль кабул итү сыйфаты нигезендә җибәрелгән мәгълүмат күләмен контрольдә тоту механизмы тәкъдим итә, ул агым белән идарә итү дип атала. Алучы кабул итү тәрәзәсен, җибәрүче җибәрү тәрәзәсен саклый. Әйтергә кирәк, бу Windows бер TCP тоташуы өчен генә, һәм барлык тоташулар да тәрәзәне бүлешми.

TCP кабул итү тәрәзәсе өчен үзгәрүчене кулланып агым белән идарә итә. Кабул итү тәрәзәсе җибәрүчегә күпме кэш мәйданы барлыгын күрсәтә. Enderибәрүче кабул итүченең фактик кабул итү сыйфаты буенча җибәрелгән мәгълүмат күләмен контрольдә тота.

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

Enderибәрүче хуҗа вакыт-вакыт тәрәзә тикшерү пакетын җибәрәчәк, бу кабул итүченең әле дә мәгълүматны кабул итә алуын ачыклау өчен кулланыла. Кабул алучының буферы ташып китү куркынычы астында булганда, тәрәзә күләме кечерәк кыйммәткә куела, җибәрүчегә җибәрелгән мәгълүмат күләмен контрольдә тотарга.

Менә челтәр агымын контрольдә тоту схемасы:

Traffл хәрәкәте белән идарә итү

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

Элеккеге челтәр агымын контрольдә тоту өчен, җибәрүче кабул итүченең кэшын мәгълүмат белән тутырган, ләкин без челтәрдә нәрсә булганын белми идек. Гадәттә, компьютер челтәрләре уртак мохиттә. Нәтиҗәдә, башка хуҗалар арасындагы аралашу аркасында челтәр тыгызлыгы булырга мөмкин.

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

Шулай итеп, TCP челтәрдә булганны санга сукмый. Челтәр тыгыз булганда, TCP җибәргән мәгълүмат күләмен киметеп үзен корбан итә.

Шуңа күрә тыгызлыкны контрольдә тоту тәкъдим ителә, ул бөтен челтәрне җибәрүче мәгълүматлары белән тутырмаска тиеш. Enderибәрүче җибәрергә тиеш булган мәгълүмат күләмен көйләү өчен, TCP тыгылу тәрәзәсе дигән төшенчәне билгели. Тотышны контрольдә тоту алгоритмы челтәрнең тыгызлык дәрәҗәсенә карап, тыгызлык тәрәзәсенең зурлыгын көйләячәк, шулай итеп җибәрүче җибәргән мәгълүмат күләмен контрольдә тотачак.

Нәрсә ул тыгызлык тәрәзәсе? Бу җибәрү тәрәзәсе белән нинди бәйләнеш бар?

Тыю тәрәзәсе - җибәрүче җибәрә алган дәүләт үзгәрүчесе, ул җибәрүче җибәрә алган мәгълүмат күләмен билгели. Тыгын тәрәзәсе челтәрнең тыгызлык дәрәҗәсенә карап динамик үзгәрә.

Sendибәрү тәрәзәсе - җибәрүче белән кабул итүче арасында килешенгән тәрәзә күләме, бу кабул итүченең ала алган мәгълүмат күләмен күрсәтә. Тыгынлык тәрәзәсе һәм җибәрү тәрәзәсе бәйләнгән; җибәрү тәрәзәсе гадәттә тыгызлыкның минимумына тигез һәм Windows кабул итү, ягъни swnd = min (cwnd, rwnd).

Cwnd тыгызлыгы тәрәзәсе түбәндәгечә үзгәрә:

Әгәр дә челтәрдә тыгылу булмаса, ягъни җибәрү вакыты бетмәсә, тыгылу тәрәзәсе арта.

Әгәр дә челтәрдә тыгылу булса, тыгылу тәрәзәсе кими.

Enderибәрүче челтәрнең тыгыз булуын, ACK тану пакетының билгеләнгән вакыт эчендә алынганын күзәтеп билгели. Әгәр җибәрүче билгеләнгән вакыт эчендә ACK тану пакетын алмаса, челтәр тыгыз дип санала.

Тыгынлык тәрәзәсенә өстәп, TCP тыгызлыгын контрольдә тоту алгоритмы турында сөйләшергә вакыт. TCP тыгызлыгын контрольдә тоту алгоритмы өч төп өлештән тора:

Акрын башлау:Башта, cwnd тыгылу тәрәзәсе чагыштырмача кечкенә, һәм җибәрүче челтәр куәтенә тиз яраклашу өчен тыгызлык тәрәзәсен тизләтә.
Тыюдан саклану:Тыгынлык тәрәзәсе билгеле бер бусагадан артканнан соң, җибәрүче тыгызлык тәрәзәсен сызыклы рәвештә арттыра, тыгызлык тәрәзәсенең үсеш темпын әкренләтә һәм челтәрне артык йөкләмәсен өчен.
Тиз торгызу:Әгәр дә тыгылу килеп чыкса, җибәрүче тыгызлык тәрәзәсен яртыга калдыра һәм кабул ителгән дубликатлар аша челтәрнең торгызылу урынын билгеләү өчен тиз торгызу халәтенә керә, аннары тыгызлык тәрәзәсен арттыруны дәвам итә.

Акрын башлау
TCP тоташуы урнашкач, cwnd тыгылу тәрәзәсе башта минималь MSS (максималь сегмент зурлыгы) кыйммәтенә куела. Шул рәвешле, җибәрүнең башлангыч ставкасы MSS / RTT байт / секунд турында. Фактта булган киңлек киңлеге гадәттә MSS / RTT белән чагыштырганда күпкә зуррак, шуңа күрә TCP оптималь җибәрү тизлеген табарга тели, бу әкрен башлау ярдәмендә ирешеп була.

Акрын башлау процессында cwnd тыгылу тәрәзәсенең бәясе 1 MSS инициализацияләнәчәк, һәм тапшырылган пакет сегменты танылган саен, cwnd бәясе бер MSS артачак, ягъни cwnd бәясе 2 MSS булачак. Аннан соң, пакет сегментының һәр уңышлы тапшыруы өчен cwnd бәясе икеләтә арта һ.б. Конкрет үсеш процессы түбәндәге рәсемдә күрсәтелгән.

 Челтәр тыгыннарын контрольдә тоту

Ләкин җибәрү ставкасы һәрвакыт үсә алмый; үсеш кайчандыр бетәргә тиеш. Алайса, җибәрү ставкасы кайчан бетә? Акрын башлау гадәттә җибәрү ставкасының үсешен берничә ысулның берсе белән тәмамлый:

Беренче ысул - әкрен башлау процессында пакет югалу очрагы. Пакет югалу килеп чыккач, TCP җибәрүченең тыгызлык тәрәзәсен cwnd 1гә куя һәм әкрен башлау процессын яңадан башлый. Бу вакытта әкрен старт бусагасы төшенчәсе кертелә, аның башлангыч бәясе пакет югалтуына китерә торган cwnd кыйммәтенең яртысы. Ягъни, тыгызлык ачыклангач, ssthresh бәясе тәрәзә бәясенең яртысы.

Икенче ысул - әкрен-әкрен бусага сстрешының кыйммәте белән турыдан-туры бәйләнеш. Ssthresh кыйммәте тыгызлык ачыклангач тәрәзә кыйммәтенең яртысы булганлыктан, cwnd сстрештан зуррак булганда пакет югалту һәр тапкыр икеләтә булырга мөмкин. Шуңа күрә, cwnd-ны ssthresh-ка кую яхшырак, бу TCP-ның тыгызлыкны контрольдә тоту режимына күчә һәм әкрен-әкрен башлануга китерәчәк.

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

Тыюлыктан саклану
TCP тыгызлыкны контрольдә тоту халәтенә кергәч, cwnd тыгызлык бусагасының яртысына куела. Димәк, пакет сегменты алынган саен cwnd бәясе икеләтә артмый. Киресенчә, чагыштырмача консерватив алым кабул ителә, анда cwnd бәясе бер тапшыру тәмамланганнан соң бер MSS (максималь пакет сегмент озынлыгы) арта. Мәсәлән, 10 пакет сегмент танылса да, cwnd бәясе бер MSS белән артачак. Бу сызыклы үсеш моделе һәм аның үсешкә дә югары бәйләнеше бар. Пакет югалу килеп чыккач, cwnd кыйммәте MSS итеп үзгәртелә, һәм ssthresh бәясе cwnd яртысына куела. Яисә ул шулай ук ​​3 артык ACK җавап алгач, MSS үсешен туктатачак. Әгәр дә cwnd кыйммәтен ике тапкыр арттырганнан соң өч артык кирәк булса, ssthresh бәясе cwnd кыйммәтенең яртысы итеп языла һәм тиз торгызу торышы кертелә.

Тиз торгызу
Тиз торгызу халәтендә, cwnd тыгылу тәрәзәсенең бәясе, алынган артык кирәк булмаган ACK өчен, ягъни эзлеклелектә килмәгән ACK өчен бер MSS белән арттырыла. Бу челтәрдә уңышлы тапшырылган пакет сегментларын куллану, тапшыру эффективлыгын мөмкин кадәр яхшырту.

Lostгалтылган пакет сегментының ACK килгәч, TCP cwnd кыйммәтен киметә, аннары тыгызлыктан саклану халәтенә керә. Бу тыгызлык тәрәзәсенең зурлыгын контрольдә тоту һәм челтәр тыгызлыгын тагын да арттыру.

Әгәр дә тыгызлык контроле торышыннан соң килеп чыкса, челтәр торышы тагын да җитдиләшә һәм TCP тыгызлыктан саклану халәтеннән әкрен башлау халәтенә күчә. Бу очракта, cwnd тыгылу тәрәзәсенең бәясе 1 MSS, пакет сегментының максималь озынлыгы, ә әкрен старт бусагасы бәясе cwnd яртысына куелган. Моның максаты - челтәр тапшыру тизлеген һәм челтәр тыгылу дәрәҗәсен тигезләү өчен челтәр торгызылганнан соң, тыгызлык тәрәзәсенең күләмен әкренләп арттыру.

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

Киләсе бүлектә без TCP-ның җибәрү механизмын җентекләп тикшерәчәкбез. Ретрансмиссия механизмы ышанычлы тапшыруга ирешү өчен TCPның мөһим өлеше. Lostгалтылган, бозылган яки тоткарланган мәгълүматны кире җибәреп, мәгълүматны ышанычлы тапшыруны тәэмин итә. Киләсе бүлектә тормышка ашыру принцибы һәм стратегиясе кертеләчәк һәм җентекләп анализланачак. Тыңлагыз!


Пост вакыты: 24-2025 февраль