Транспарт надзейнасці TCP
Мы ўсе знаёмыя з пратаколам TCP як надзейным пратаколам транспарту, але як ён забяспечвае надзейнасць транспарту?
Для дасягнення надзейнай перадачы неабходна ўлічваць шмат фактараў, такіх як карупцыя дадзеных, страты, дубліраванне і заказы па-за парадкам. Калі гэтыя праблемы немагчыма вырашыць, надзейную перадачу немагчыма дасягнуць.
Такім чынам, TCP выкарыстоўвае такія механізмы, як нумар паслядоўнасці, адказ пацверджання, кантроль аднаўлення, кіраванне злучэннямі і кантроль вокнаў для дасягнення надзейнай перадачы.
У гэтым артыкуле мы спынімся на рассоўным акне, кіраванні патокам і кіраванні перагрузкай TCP. У наступным раздзеле механізм паўторнай перадачы пакрыты асобна.
Кантроль сеткі патоку
Кантроль патоку сеткі альбо ведае, як кантроль сеткавага руху на самай справе з'яўляецца праявай тонкіх адносін паміж вытворцамі і спажыўцамі. Вы, напэўна, шмат сутыкнуліся з гэтым сцэнарыям на працы ці ў інтэрв'ю. Калі здольнасць вытворцы вырабляць значна перавысіць здольнасць спажыўца спажываць, гэта прывядзе да росту чаргі бясконца. У больш сур'ёзным выпадку вы можаце ведаць, што, калі паведамленні RabbitMQ занадта моцна назапашваюць, гэта можа прывесці да дэградацыі прадукцыйнасці ўсяго сервера MQ. Тое ж самае і для TCP; Калі застанецца без праверкі, у сетку будзе змешчана занадта шмат паведамленняў, і спажыўцы перавысілі іх магутнасць, у той час як вытворцы будуць працягваць адпраўляць дублікаты паведамленняў, што значна паўплывае на прадукцыйнасць сеткі.
Для вырашэння гэтай з'явы, TCP забяспечвае механізм адпраўніка для кантролю колькасці дадзеных, накіраваных на аснове фактычнай прыёмнай магутнасці прыёмніка, які вядомы як кантроль патоку. Прыёмнік падтрымлівае акно прыёму, у той час як адпраўшчык падтрымлівае акно адпраўкі. Варта адзначыць, што гэтыя вокны прызначаны толькі для аднаго злучэння TCP, і не ўсе злучэнні падзяляюць акно.
TCP забяспечвае кіраванне патокам, выкарыстоўваючы зменную для акна прыёму. Акно прыёму дае адпраўніку ўказанне на тое, колькі месца кэша ўсё яшчэ даступна. Адпраўшчык кантралюе колькасць дадзеных, накіраваных у адпаведнасці з фактычнай магутнасцю прыёму прыёмніка.
Гаспадар прыёмніка паведамляе адпраўшчыка аб памерах дадзеных, якія яны могуць атрымаць, і адпраўшчык адпраўляе да гэтай мяжы. Гэты ліміт - памер акна, памятаеце загаловак TCP? Існуе поле прыёму акна, якое выкарыстоўваецца для абазначэння колькасці байтаў, якія прымача здольны альбо гатовы атрымаць.
Хост адпраўніка перыядычна адпраўляе пакет зонда з акном, які выкарыстоўваецца для выяўлення, ці можа хост прыёмніка прыняць дадзеныя. Калі буфер прыёмніка пагражае перапоўнена, памер акна ўсталёўваецца на меншае значэнне, каб даручыць адпраўніку кантраляваць колькасць адпраўленых дадзеных.
Вось схема кіравання сеткавым патокам:
Кантроль перагрузкі сеткі
Перш чым увесці кантроль перагрузкі, мы павінны разумець, што ў дадатак да акна прыёму і акна адпраўкі, ёсць таксама акно перагрузкі, якое ў асноўным выкарыстоўваецца для вырашэння праблемы, з якой хуткасцю адпраўшчык пачынае адпраўляць дадзеныя ў акно прыёму. Такім чынам, акно перагрузкі таксама падтрымліваецца адпраўшчыкам TCP. Нам патрэбны алгарытм, каб вызначыць, колькі дадзеных падыходзіць для адпраўкі, бо адпраўка занадта мала ці занадта шмат дадзеных не з'яўляецца ідэальнай, адсюль і канцэпцыя акна перагрузкі.
У папярэднім кантролі патоку сеткі мы пазбягалі, што адпраўшчык запаўняе кэш прыёмніка дадзенымі, але мы не ведалі, што адбываецца ў сетцы. Звычайна камп'ютэрныя сеткі знаходзяцца ў агульнай абстаноўцы. У выніку можа паўстаць сеткавыя заторы з -за зносін паміж іншымі гаспадарамі.
Калі сетка перагружана, калі працягваецца вялікая колькасць пакетаў, гэта можа выклікаць такія праблемы, як затрымка і страта пакетаў. У гэты момант TCP будзе перарабляць дадзеныя, але паўторная перадача павялічыць нагрузку на сетку, што прывядзе да вялікіх затрымкі і больш страт пакетаў. Гэта можа ўвайсці ў заганны цыкл і працягваць павялічваць.
Такім чынам, TCP не можа ігнараваць тое, што адбываецца ў сетцы. Калі сетка перагружана, TCP ахвяруе сабе, памяншаючы колькасць дадзеных, якія ён адпраўляе.
Такім чынам, прапануецца кантроль перагрузкі, які накіраваны на тое, каб пазбегнуць запаўнення ўсёй сеткі дадзенымі адпраўніка. Каб рэгуляваць колькасць дадзеных, якія павінен адпраўляць адпраўшчык, TCP вызначае канцэпцыю пад назвай акно перагрузкі. Алгарытм кіравання перагрузкай будзе адрэгуляваць памер акна перагрузкі ў адпаведнасці са ступенню перагружанасці сеткі, каб кантраляваць колькасць дадзеных, адпраўленых адпраўшчыкам.
Што такое акно перагрузкі? Якое гэта звязана з акном адпраўкі?
Акно перагрузкі - гэта стану зменнай, якая падтрымліваецца адпраўшчыкам, якая вызначае колькасць дадзеных, якія можа адпраўляць адпраўшчык. Акно перагрузкі дынамічна мяняецца ў залежнасці ад узроўню перагрузкі сеткі.
Акно для адпраўкі - узгодненае па памеры акна паміж адпраўшчыкам і прыёмнікам, што паказвае на колькасць дадзеных, якія можа атрымаць прыёмнік. Акно перагрузкі і акно адпраўкі звязаны; Акно для адпраўкі звычайна роўна мінімуму затораў і прыёму вокнаў, гэта значыць, swnd = min (CWND, RWND).
Акно перагрузкі CWND змяняецца наступным чынам:
Калі ў сетцы няма перагрузак, гэта значыць, не адбываецца тайм -аўт паўторнай перадачы, акно перагрузкі павялічваецца.
Калі ў сетцы ёсць заторы, акно перагрузкі памяншаецца.
Адпраўшчык вызначае, ці перагружана сетка, назіраючы, ці атрыманы пакет пацверджання ACK на працягу пэўнага часу. Калі адпраўнік не атрымлівае пакет пацверджання ACK у зададзены час, лічыцца, што сетка перагружана.
У дадатак да акна перагрузкі, прыйшоў час абмеркаваць алгарытм кіравання перагрузкай TCP. Алгарытм кіравання перагрузкай TCP складаецца з трох асноўных частак:
Павольны пачатак:Першапачаткова акно перагрузкі CWND адносна невялікае, і адпраўшчык павялічвае акно перагрузкі, каб хутка адаптавацца да ёмістасці сеткі.
Пазбяганне перагрузак:Пасля таго, як акно перагрузкі перавышае пэўны парог, адпраўшчык павялічвае акно перагрузкі лінейна, каб запаволіць хуткасць росту акна перагрузкі і пазбегнуць перагрузкі сеткі.
Хуткае аднаўленне:У выпадку перагрузкі адпраўшчыка ўдвая ў акне перагрузкі і ўваходзіць у стан хуткага аднаўлення, каб вызначыць месцазнаходжанне аднаўлення сеткі праз атрыманы дублікат ACK, а затым працягвае павялічваць акно перагрузкі.
Павольна пачнеце
Калі ўстаноўлена злучэнне TCP, CWND для перагрузкі першапачаткова ўсталёўваецца на мінімальнае значэнне MSS (максімальны памер сегмента). Такім чынам, першапачатковая хуткасць адпраўкі - гэта байты MSS/RTT/секунду. Фактычная даступная прапускная здольнасць звычайна значна большая, чым MSS/RTT, таму TCP хоча знайсці аптымальную хуткасць адпраўкі, якую можна дасягнуць пры дапамозе павольнага старту.
У працэсе павольнага старту значэнне CWND для перагрузкі будзе ініцыялізавана на 1 мс, і кожны раз, калі будзе прызнаны перадача пакета, значэнне CWND будзе павялічана адным MSS, гэта значыць, значэнне CWND стане 2 MSS. Пасля гэтага значэнне CWND павялічваецца ўдвая для кожнай паспяховай перадачы сегмента пакета і гэтак далей. Канкрэтны працэс росту паказаны на наступным малюнку.
Аднак хуткасць адпраўкі не заўсёды не можа расці; Рост павінен скончыцца калі -небудзь. Такім чынам, калі хуткасць адпраўкі павялічваецца? Звычайна павольны старт заканчвае павелічэнне хуткасці адпраўкі адным з некалькіх спосабаў:
Першы спосаб - гэта выпадак страты пакета падчас працэсу адпраўкі павольнага запуску. Калі адбываецца страта пакета, TCP усталёўвае акно перагрузкі адпраўніка на 1 і перазагружае працэс павольнага старту. У гэты момант уводзіцца канцэпцыя павольнага парога SSThresh, чыё першапачатковае значэнне складае палову значэння CWND, што стварае страту пакета. Гэта значыць, калі выяўляецца перагрузка, значэнне SSTresh складае палову значэння акна.
Другі спосаб-непасрэдна карэляваць са значэннем парогавага ўзроўню SSTresh. Паколькі значэнне SSThresh складае палову значэння акна пры выяўленні перагрузак, страта пакета можа адбыцца пры кожным падваенні, калі CWND перавышае SSTresh. Такім чынам, лепш за ўсё ўсталяваць CWND у SSThresh, што прывядзе да пераходу TCP у рэжым кіравання перагрузкай і завяршыць павольны старт.
Апошні спосаб, які павольны запуск можа скончыцца, - калі выяўлены тры залішнія АКК, TCP выконвае хуткую паўторную перадачу і ўводзіць у стан аднаўлення. (Калі незразумела, чаму ёсць тры пакеты ACK, ён будзе растлумачаны асобна ў механізме паўторнай перадачы.)
Ухіленне ад перагрузак
Калі TCP трапляе ў стан кіравання перагрузкай, CWND усталёўваецца ў палову парога перагрузкі SSTresh. Гэта азначае, што значэнне CWND не можа быць падвоена кожны раз, калі паступае сегмент пакета. Замест гэтага прымаецца адносна кансерватыўны падыход, у якім значэнне CWND павялічваецца толькі на адзін MSS (максімальная даўжыня сегмента пакета) пасля завяршэння кожнай перадачы. Напрыклад, нават калі прызнаны 10 сегментаў пакетаў, значэнне CWND павялічыцца толькі на адзін MSS. Гэта лінейная мадэль росту, і яна таксама мае верхнюю мяжу росту. Калі адбываецца страта пакета, значэнне CWND змяняецца на MSS, а значэнне SSThresh усталёўваецца ў палову CWND. Ці гэта таксама спыніць рост MSS, калі атрымаецца 3 залішнія адказы АКК. Калі тры залішнія ACK па -ранейшаму паступаюць пасля ўдвая скарачэння значэння CWND, значэнне SSThresh зафіксавана як палова значэння CWND і ўводзіцца хуткае аднаўленне.
Хуткае выздараўленне
У стане хуткага аднаўлення, значэнне CWND для перагрузкі павялічваецца па адной MSS для кожнага атрыманага ACK, гэта значыць, ACK, які не прыходзіць паслядоўна. Гэта павінна выкарыстоўваць сегменты пакетаў, якія былі паспяхова перададзены ў сетцы, каб максімальна павысіць эфектыўнасць перадачы.
Калі прыходзіць ACK страчанага сегмента пакета, TCP памяншае значэнне CWND, а затым трапляе ў стан пазбягання перагрузак. Гэта павінна кантраляваць памер акна перагрузкі і пазбягаць далейшага павелічэння сеткавых затораў.
Калі тайм-аўт адбываецца пасля стану кіравання перагрузакамі, умова сеткі становіцца больш сур'ёзным, а TCP пераносіцца са стану пазбягання перагрузак да стану павольнага старту. У гэтым выпадку значэнне CWND акна перагрузкі ўсталёўваецца на 1 мсс, максімальная даўжыня сегмента пакета, а значэнне парога SSTresh павольнага старту ўсталёўваецца ў палову CWND. Мэтай гэтага з'яўляецца паўторнае павелічэнне памеру акна перагрузкі пасля таго, як сетка аднаўляецца, каб збалансаваць хуткасць перадачы і ступень сеткавага перагрузкі.
Сціслы пераказ
У якасці надзейнага пратаколу транспарту TCP рэалізуе надзейнае транспарт па нумары паслядоўнасці, пацверджанне, кантроль за паўторнай перадачай, кіраванне злучэннем і кіраванне вокнамі. Сярод іх механізм кіравання патокам кантралюе колькасць дадзеных, якія адпраўляюць адпраўшчыкам у адпаведнасці з фактычнай магчымасцю прыёму прыёмніка, што дазваляе пазбегнуць праблем перагрузкі сеткі і дэградацыі прадукцыйнасці. Механізм кіравання перагрузкай дазваляе пазбегнуць узнікнення сеткавых затораў шляхам карэкціроўкі колькасці дадзеных, дасланых адпраўшчыкам. Канцэпцыі акна перагрузкі і акна адпраўкі звязаны паміж сабой, а колькасць дадзеных у адпраўніка кантралюецца дынамічна рэгуляваннем памеру акна перагрузкі. Павольны старт, пазбяганне перагрузак і хуткае аднаўленне - гэта тры асноўныя часткі алгарытму кіравання перагрузкай TCP, якія рэгулююць памер акна перагрузкі праз розныя стратэгіі адаптацыі да ступені ёмістасці і перагрузкі сеткі.
У наступным раздзеле мы падрабязна разгледзім механізм паўторнай перадачы TCP. Механізм паўторнай перадачы з'яўляецца важнай часткай TCP для дасягнення надзейнай перадачы. Гэта забяспечвае надзейную перадачу дадзеных шляхам паўторнай перадачы страчаных, пашкоджаных або затрымкі. Прынцып рэалізацыі і стратэгія механізму паўторнай перадачы будуць уведзены і падрабязна прааналізаваны ў наступным раздзеле. Сачыце за намі!
Час паведамлення: люты-24-2025