Током ранијих година интернета, Интернет протокол (ИП) је био једини протокол који су људи користили за повезивање на интернет. Проблем са ИП-ом је био тај што сте могли да пошаљете поруку и нисте сигурни да ли ће је прималац примити или не. Из тог разлога је успостављен ТЦП/ИП.
ТЦП/ИП осигурава да сви подаци које пошаљете стигну до примаоца. То ради тако што клијенту и серверу обезбеђује сигурну везу пре слања података. Ова безбедна веза се успоставља кроз процес познат као тросмерно руковање, такође познато као ТЦП/ИП руковање.
Шта је тросмерно руковање?
Тросмерно руковање (ТЦП/ИП руковање) су прве три интеракције између клијента и сервера који покушавају да успоставе ТЦП везу. Ове почетне интеракције су неопходне за стварање безбедне везе. У овој фази, и клијент и сервер ће се договорити о параметрима које ће користити за проверу и верификацију долазних и одлазних пакета података. Ови параметри ће бити у облику ТЦП сегмената.
Шта је ТЦП сегмент?
У ТЦП/ИП вези, сви подаци који се шаљу морају бити исечени и структурирани на оно што је познато као ТЦП сегменти. Ови сегменти садрже информације као што су ИП адресе, портови, битови заставице, бројеви секвенце, бројеви потврде и опциони подаци или корисни терет.
Прве три интеракције (тросмерно руковање) ће садржати само заглавља ТЦП сегмента без корисног оптерећења или приложених података. Ево примера ТЦП сегмента
Имајте на уму да је горња илустрација само за ТЦП. Потпуни ТЦП/ИП сегмент захтева обоје ИП адресе од пошиљаоца и примаоца на врху ТЦП сегмента изнад.
Кад год пошаљете пакет некој особи, служба доставе захтева од вас да попуните формулар са информацијама и затим га приложите уз пакет пре слања. Слично, ТЦП захтева од пошиљаоца да прикачи главу сегмента (формулар са информацијама) подацима (пакет) пре него што почне да шаље сегмент (пакет) примаоцу.
Кад год клијент комуницира са сервером, обе стране ће морати да форматирају своје интеракције у облику ТЦП сегмента. ТЦП сегмент садржи главу ТЦП сегмента прикачену за податке које покушавате да пошаљете. Пошиљалац ће морати да попуни информације које захтева глава сегмента.
За тросмерно руковање, пошиљалац ће морати да попуни следеће:
- Изворни порт: Идентификује порт пошиљаоца
- Одредишна лука: Идентификује порт пријемника
- Редни број: Означава секвенцу сегмента
- Број потврде: Означава да је сегмент потврђен додавањем једног датом редном броју
Поред попуњавања поља главе сегмента, пошиљалац мора да изабере и бит заставице. Укупно има шест битова заставице, али за тросмерно руковање биће вам потребна само следећа два:
- СИН: Даје редни број. Овај редни број ће се користити за бројање редоследа свих долазних сегмената за остатак интеракције.
- АЦК: Означава да прималац СИН броја прихвата захтев за повезивање додавањем једног (1) датом СИН броју.
Сада када знате шта је ТЦП сегмент, да видимо како се користи у тросмерном руковању.
Како функционише тросмерно руковање
Тросмерно руковање је успостављено када су и клијент и домаћин разменили информације и потврдили редни бројеви један другог. Као што назив говори, троструко руковање се обавља у три корака.
Прво, клијент шаље чисти СИН сегмент који указује да жели везу. Друго, сервер одговара СИН-АЦК сегментом, што значи да је потврдио захтев и да шаље сопствени СИН број да би га клијент потврдио. Треће, клијент шаље АЦК сегмент серверу да га обавести да је серверов СИН број потврђен и да ће се користити за даље повезивање.
Тросмерно руковање ће изгледати отприлике овако:
Хајде да то разложимо и погледамо сегменте како бисте знали шта се тачно дешава када клијент и сервер размене и признају секвенце.
Корак 1: Клијент шаље СИН сегмент
Клијент шаље захтев за конекцију тако што шаље СИН сегмент серверу. Клијент користи ИП адресу клијента да лоцира сервер и пошаље ТЦП сегмент.
Да бисмо смањили сложеност сегмента, занемаримо неколико сегментних поља и концентришимо се на оно што је неопходно за тросмерну везу руковања. Ово укључује изворни порт, одредишни порт, редни број, број потврде и који тип бита заставице се користи.
И уз то, сегмент СИН/захтев би требао изгледати овако:
Порт клијента је насумични број између 49152 и 65536. Овај опсег портова је договорени опсег који јавни уређаји могу динамички да користе за повезивање на интернет. Опсези портова од 1024 до 49151 су приватни. Мораће да их региструје ентитет да би користио порт унутар наведеног опсега. Бројеви портова испод 1024 су портови резервисани за различите функције и интернет протоколе као што су ФТП (порт 20), СМТП (порт 25), ДНС (порт 53) и ХТТП (порт 80).
У стварном животу, редни број је случајни број. За пример, користили смо 0000000000 да бисмо олакшали визуелизацију.
Узмите у обзир редни број док напредујемо кроз кораке. Тренутно је 000000000. Тренутно не постоји број потврде јер нема шта да се потврди.
Корак 2: Сервер одговори са СИН-АЦК сегментом
Када сервер прими СИН сегмент, он ће одговорити слањем АЦК сегмента који садржи број потврде. Број потврде ће бити редоследни број клијента плус један (1).
Погледајте изворни порт. Показује да је сегмент са порта 20, што указује да је дошао са сервера као одговор.
Сада погледајте број потврде. То је 0000000001, што је редни број клијента (0000000000) плус један (1). Овако се прати сегмент. Рецимо да је клијент примио одговор АЦК сегмента где је број потврде 0000000002. Ово би указивало клијенту да сегмент 0000000001 недостаје и да ће клијент морати да сачека док не стигне тако да не доживите губитак пакета.
Као што видите, два бита заставице су активирана—СИН и АЦК.
Осим што потврђује редоследни број клијента, сервер ће такође послати сопствени редни број како би клијент потврдио редни број сервера плус један (1). У нашем примеру користили смо 1111111111 као редни број сервера. Опет, у стварном свету, овај број је случајан.
Имајте на уму да редни бројеви клијента и сервера не морају да се подударају. Све док обе стране међусобно признају јединствени редни број, веза ће бити поуздана.
Корак 3: Клијент одговара са АЦК сегментом
На крају, клијент потврђује редни број сервера.
Последњи сегмент је АЦК сегмент од клијента.
Као што можете, клијент ће потврдити редни број сервера тако што ће одговорити са серверовим редним бројем (1111111111) плус један (1), који је 1111111112.
Клијент и сервер више неће слати редни број пошто је почетак секвенце већ потврђен. Обе стране ће, међутим, очекивати сегменте потврде који настављају редне бројеве плус један (1) и број бајтова током интеракције. У овом случају, клијент очекује да следећи одговор сервера има АЦК од 0000000002 (ако нема приложених података).
Након тога се успоставља троструко руковање!
Разумевање како мрежне везе функционишу
Сада када сте научили како функционише тросмерно руковање, такође ћете лакше разумети како ТЦП функционише након руковања. Клијент и сервер ће почети да шаљу податке када се успостави руковање. Овај пут ће се користити цео формат сегмента, плус опциони подаци или корисни терет.
Подаци се обично сегментирају/секу на мање делове ради лакшег преноса. Сваки сегмент података има своју главу сегмента која садржи редни број и број потврде. Разлог за редни број је да се зна редослед сегмената када ће се на крају поново саставити. Бројеви потврде су ту да верификују са пошиљаоцем да је њихов сегмент примљен и да ли одговара редоследу долазних сегмената.
Узимање броја секвенци и њихово верификовање са потврдом је начин на који ТЦП може поуздано да преноси огромне комаде података без икаквих пакета података који недостају.
Уз то, требало би да имате прилично добру представу о томе како ТЦП функционише.