Тајното оружје на TCP: Контрола на проток на мрежа и контрола на метеж на мрежата

Транспорт на сигурност на TCP
Сите сме запознаени со протоколот TCP како сигурен транспорт протокол, но како се обезбедува сигурност на транспортот?

За да се постигне сигурен пренос, треба да се земат предвид многу фактори, како што се корупција на податоци, загуба, дуплирање и ножеви надвор од нарачката. Ако овие проблеми не можат да се решат, не може да се постигне сигурен пренос.

Затоа, TCP користи механизми како што се број на секвенци, одговор на признание, контрола на контрола, управување со врската и контрола на прозорецот за да се постигне сигурен пренос.

Во овој труд, ќе се фокусираме на лизгачкиот прозорец, контролата на протокот и контролата на метежот на TCP. Механизмот за пренасочување е опфатен одделно во следниот дел.

Контрола на проток на мрежа
Контрола на проток на мрежа или познато како контрола на мрежниот сообраќај е всушност манифестација на суптилниот однос помеѓу производителите и потрошувачите. Веројатно наидовте на ова сценарио многу на работа или во интервјуа. Ако капацитетот на производителот да произведе значително го надминува капацитетот на потрошувачот да консумира, тоа ќе предизвика редицата да расте на неодредено време. Во посериозен случај, можеби ќе знаете дека кога пораките за RabbitMQ се натрупаат премногу, може да предизвика деградација на перформансите на целиот сервер MQ. Истото важи и за TCP; Ако останат непроверени, премногу пораки ќе бидат ставени во мрежата, а потрошувачите ќе го надминат својот капацитет, додека производителите ќе продолжат да испраќаат дупликати пораки, што во голема мерка ќе влијаат на перформансите на мрежата.

За решавање на овој феномен, TCP обезбедува механизам за испраќачот да ја контролира количината на податоците испратени врз основа на вистинскиот капацитет на прием на приемникот, кој е познат како контрола на протокот. Примачот одржува прозорец за примање, додека испраќачот одржува прозорец за испраќање. Треба да се напомене дека овие прозорци се само за единствена TCP врска и не сите врски споделуваат прозорец.

TCP обезбедува контрола на проток со употреба на променлива за прозорец за примање. Прозорецот за примање му дава на испраќачот индикација за тоа колку простор за кешот сè уште е достапен. Испраќачот ја контролира количината на податоци испратени според реалниот капацитет за прифаќање на приемникот.

Домаќинот на приемникот го известува испраќачот за големината на податоците што може да ги добие, а испраќачот испраќа до оваа граница. Оваа граница е големината на прозорецот, се сеќавате на заглавието TCP? Постои поле за примање прозорец, кое се користи за да се означи бројот на бајти што приемникот е во состојба или спремен да ги добие.

Домаќинот на испраќачот периодично ќе испраќа пакет сонда за прозорец, кој се користи за да открие дали домаќинот на приемникот сè уште е во состојба да прифати податоци. Кога тампон на приемникот е во опасност од прелевање, големината на прозорецот е поставена на помала вредност за да му наложи на испраќачот да ја контролира количината на испратените податоци.

Еве дијаграм за контрола на проток на мрежа:

Контрола на сообраќајот

Контрола на метеж на мрежата
Пред да воведеме контрола на метежот, треба да разбереме дека покрај прозорецот за примање и прозорецот SEND, има и прозорец за метеж, кој главно се користи за решавање на проблемот со која стапка испраќачот започнува да испраќа податоци до прозорецот за примање. Затоа, прозорецот за метеж го одржува и испраќачот на TCP. Ни треба алгоритам за да одлучиме колку податоци се соодветни за испраќање, бидејќи испраќањето премногу малку или премногу податоци не е идеално, па оттука и концептот на прозорец за метеж.

Во претходната контрола на протокот на мрежата, она што го избегнавме беше испраќачот да го пополнува кешот на приемникот со податоци, но не знаевме што се случува во мрежата. Обично, компјутерските мрежи се во заедничка околина. Како резултат, може да има мрежен метеж заради комуникација помеѓу другите домаќини.

Кога мрежата е зафатена, доколку продолжат да се испраќаат голем број на пакети, може да предизвика проблеми како што се одложување и губење на пакетите. Во овој момент, TCP ќе ги пренасочи податоците, но пренасочувањето ќе го зголеми товарот на мрежата, што резултира во поголеми одложувања и повеќе загуби на пакетите. Ова може да влезе во злобен циклус и да продолжи да станува поголем.

Така, TCP не може да го игнорира она што се случува на мрежата. Кога мрежата е зафатена, TCP се жртвува со намалување на количината на податоци што ги испраќа.

Затоа, се предлага контрола на метежот, кој има за цел да избегне пополнување на целата мрежа со податоци од испраќачот. За регулирање на количината на податоци што треба да ги испрати испраќачот, TCP дефинира концепт наречен прозорец за метеж. Алгоритмот за контрола на метежот ќе ја прилагоди големината на прозорецот за метеж според степенот на метеж на мрежата, со цел да се контролира количината на податоците испратени од испраќачот.

Што е прозорец за метеж? Каква врска има ова со прозорецот за испраќање?

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

Прозорецот за испраќање е договорена големина на прозорецот помеѓу испраќачот и приемникот што укажува на количината на податоци што може да ги добие приемникот. Прозорецот за метеж и прозорецот за испраќање се поврзани; Прозорецот за испраќање обично е еднаков на минимумот на метеж и примање на прозорци, односно swnd = мин (cwnd, rwnd).

Прозорецот за метеж CWND се менува на следниов начин:

Ако нема метеж во мрежата, т.е., не се појавува тајмаут за пренасочување, прозорецот за метеж се зголемува.

Ако има метеж во мрежата, прозорецот за метеж се намалува.

Испраќачот утврдува дали мрежата е зафатена со набудување дали пакетот за признавање на ACK е примена во одредено време. Ако испраќачот не го прими пакетот за признавање на ACK во одредено време, се смета дека мрежата е зафатена.

Покрај прозорецот за метеж, време е да се разговара за алгоритмот за контрола на метежот TCP. Алгоритмот за контрола на конгестијата TCP се состои од три главни делови:

Бавен почеток:Првично, прозорецот CWND конгестија е релативно мал, а испраќачот експоненцијално го зголемува прозорецот за метеж за брзо да се прилагоди на капацитетот на мрежата.
Избегнување на метеж:Откако прозорецот за метеж го надминува одреден праг, испраќачот го зголемува прозорецот за метеж на линеарен начин за да ја забави стапката на раст на прозорецот за метеж и да избегне преоптоварување на мрежата.
Брзо закрепнување:Ако се појави метеж, испраќачот го преполовува прозорецот за метеж и влегува во состојбата за брзо обновување за да ја утврди локацијата на обновувањето на мрежата преку примените дупликати ACKs, а потоа продолжува да го зголемува прозорецот за метеж.

Бавен почеток
Кога е воспоставена TCP врска, прозорецот за метеж CWND првично е поставен на минимална вредност на MSS (максимална големина на сегментот). На овој начин, почетната стапка на испраќање е за MSS/RTT бајти/секунда. Вистинската достапна ширина на опсег е обично многу поголема од MSS/RTT, така што TCP сака да ја пронајде оптималната стапка на испраќање, што може да се постигне со помош на бавен старт.

Во процесот на бавно стартување, вредноста на прозорецот за метеж CWND ќе се иницијализира на 1 mss, и секој пат кога ќе се признае пренесениот пакет сегмент, вредноста на CWND ќе се зголеми за еден MSS, односно вредноста на CWND ќе стане 2 mss. После тоа, вредноста на CWND е двојно зголемена за секој успешен пренос на сегмент на пакет и така натаму. Специфичниот процес на раст е прикажан на следната слика.

 Контрола на метеж на мрежата

Сепак, стапката на испраќање не може секогаш да расте; Растот треба да заврши некаде. Значи, кога се зголемува стапката на испраќање? Започнување со бавно ниво обично завршува зголемувањето на стапката на испраќање на еден од неколку начини:

Првиот начин е случај на загуба на пакетите за време на процесот на испраќање на бавен почеток. Кога се појави загуба на пакет, TCP го поставува прозорецот за метеж на испраќачот CWND на 1 и го рестартира процесот на бавно започнување. Во овој момент, воведен е концепт на бавен почетен праг SSThresh, чија почетна вредност е половина од вредноста на CWND што генерира загуба на пакетот. Тоа е, кога се открива метеж, вредноста на SSThresh е половина од вредноста на прозорецот.

Вториот начин е директно да се корелира со вредноста на прагот на бавен почеток SSThresh. Бидејќи вредноста на SSThresh е половина од вредноста на прозорецот кога се открива метеж, може да се појави загуба на пакетот со секое удвојување кога CWND е поголем од SSThresh. Затоа, најдобро е да се постави CWND на SSThresh, што ќе предизвика TCP да се префрли во режимот за контрола на метежот и да заврши со бавно започнување.

Последниот начин на кој може да заврши бавниот почеток е ако се откриат три вишок АКК, TCP врши брзо пренасочување и влегува во состојбата за обновување. (Ако не е јасно зошто има три пакети ACK, истиот ќе се објасни одделно во механизмот за пренасочување.)

Избегнување на метеж
Кога TCP влегува во состојба на контрола на метежот, CWND е поставен на половина од прагот на метежот SSThresh. Ова значи дека вредноста на 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 mss, максимална должина на сегментот на пакетот, а вредноста на прагот на бавен почеток SSThresh е поставена на половина од CWND. Целта на ова е повторно да ја зголемиме големината на прозорецот за метеж, откако мрежата ќе се опорави за да се балансира стапката на пренос и степенот на мрежно метеж.

Резиме
Како сигурен протокол за транспорт, TCP спроведува сигурен транспорт според број на секвенца, потврда, контрола на пренасочување, управување со врската и контрола на прозорецот. Меѓу нив, механизмот за контрола на протокот ја контролира количината на податоци што ги испраќа испраќачот според реалниот капацитет за примање на приемникот, што ги избегнува проблемите со мрежниот метеж и деградацијата на перформансите. Механизмот за контрола на метежот избегнува појава на мрежна метеж со прилагодување на количината на податоци што ги испраќа испраќачот. Концептите на прозорецот за метеж и прозорецот за испраќање се поврзани едни со други, а количината на податоци кај испраќачот се контролира со динамично прилагодување на големината на прозорецот за метеж. Бавниот почеток, избегнувањето на метежот и брзото закрепнување се трите главни делови на алгоритмот за контрола на конгестијата TCP, кои ја прилагодуваат големината на прозорецот за метеж преку различни стратегии за да се прилагодат на капацитетот и степенот на метеж на мрежата.

Во следниот дел, детално ќе го испитаме механизмот за препраќање на TCP. Механизмот за пренасочување е важен дел од TCP за да се постигне сигурен пренос. Обезбедува сигурен пренос на податоци со препраќање на изгубени, расипани или одложени податоци. Принципот на имплементација и стратегијата на механизмот за пренасочување ќе бидат воведени и анализирани детално во следниот дел. Останете подесени!


Време на објавување: февруари-24-2025 година