Работа в мрежа

Какви са стъпките в TCP ръкостискане?

Какви са стъпките в TCP ръкостискане?

TCP или Transmission Control Protocol е стандартен протокол за транспортен слой, който Интернет използва за предаване на данни. Искане за коментари (RFC) 793 определя TCP като надежден и ориентиран към свързване протокол. Тъй като е ориентиран към връзка, трябва да се установи път или връзка преди предаване на каквито и да е данни. TCP използва трипосочен механизъм за ръкостискане за установяване на връзка между две устройства. В това ръководство ще видим как работи трипосочният механизъм за ръкостискане. Нека първо видим проблемите с двупосочния модел на ръкостискане.

Проблеми с двупосочния модел на ръкостискане

Двупосочният модел на ръкостискане се провали поради стар проблем с дублиращи се пакети. Да предположим, че стар дублиран пакет пристига на сървърната машина. Този стар пакет е пристигнал от по-рано затворена връзка и съдържа пореден номер 'z'. По някое време по време на новата връзка сървърът приема пакет с пореден номер 'z'. Когато получи този стар пакет със същия пореден номер 'z', той несъзнателно приема този стар пакет и изхвърля действителния пакет от новата връзка.

В горния случай, ако не се осъществява връзка между клиент и сървър, пристигането на стар дублиран пакет за заявка за връзка все още причинява проблеми. Ако сървърът получи такъв пакет, той ще отговори със SYN + ACK пакет. Този пакет ще бъде изпуснат от клиента, тъй като не възнамерява да се свърже. Но сървърът ще влезе в състояние на блокиране, изчаквайки клиентът да изпрати данните.

Друг проблем е, че ако хост С изпрати заявка за връзка до сървъра, като се представя за клиента, сървърът ще отговори обратно с ACK на клиента. Клиентът ще отхвърли този пакет „ACK“ и ще каже на сървъра да прекрати връзката. По време на този интервал от събития, хост С може да предприеме атака за подправяне чрез изпращане на много пакети.

Трипосочният модел на ръкостискане в TCP / IP

Моделът за трипосочно ръкостискане е много важен. Ако не го използваме и директно започнем да изпращаме данни, получаващото приложение може да започне да получава дублирани пакети. Атакуващият може да получи шанс да стартира атаки (като DDoS) между връзката. Процедурата за трипосочно ръкостискане се стартира от една машина, а другата страна реагира на нея. Следващата конвенция се използва за обяснение на тази процедура:

„Ако даден сайт получи пакет с пореден номер„ x “, той ще отговори с ACK номер„ x + 1 “.”

Нека обобщим стъпките, извършени в трипосочното ръкостискане между клиентска машина и сървърна машина:

Етап 1. При първото ръкостискане клиентът изпраща пакет със заявка за SYN връзка с произволен начален номер на последователност ('x') до сървъра.

Стъпка 2. При второто ръкостискане сървърът отговаря със SYN пакет, който има произволен номер на последователност ('y') и ACK пакет с номер на последователност ('x + 1'), за да потвърди изпратения първоначален номер на последователност ('x') от клиента.

Стъпка 3. При третото ръкостискане клиентът ще изпрати ACK пакет с пореден номер ('y + 1') до сървъра за потвърждаване на SYN ('y') пакета, изпратен от сървъра.

Стъпка 4. Двата края са синхронизирани сега и могат да започнат да предават данни независимо. [1]

Процедурата за трипосочно ръкостискане TCP все още е валидна, ако и двете страни едновременно стартират процеса на инициализация. В такава ситуация всяка машина, след изпращане на пакет „SYN“, ще получи сегмент „SYN“ без потвърждение. Ако на приемника пристигне стар дублиран пакет „SYN“, на приемника може да изглежда, че процесът на иницииране на връзка протича едновременно. Можем да използваме пакетите „нулиране“, за да премахнем тази неяснота.

Прекратяване на TCP връзка

Всяка от двете страни може да прекрати TCP връзка. За това всяка страна може да предава TCP сегмент с зададен бит FIN. Това ще означава, че изпращащата страна няма повече данни за изпращане. Получаващата страна ще потвърди този FIN пакет, като изпрати пакет за потвърждение. Това ще затвори връзката от едната страна (страната на подателя). Сега получателят ще използва същите стъпки, за да прекрати връзката от негово име. Това напълно ще затвори връзката.

Проблеми с трипосочния модел на ръкостискане

В случай, че ACK от клиент към сървър бъде загубен или блокиран в третия етап на ръкостискане, клиентът няма да знае за тази ситуация. Клиентът ще приеме, че връзката е установена и ще започне да изпраща данни. Сървърът все още чака ACK, който вече е загубен, така че ще отхвърли данните, получени от клиента. [2]

Заключение

В това ръководство научихме за процедурите за TCP връзка, използвайки трипосочно ръкостискане. Виждали сме и проблема с дублиращите се пакети, свързани с двупосочната процедура за ръкостискане и как той е решен с трипосочен модел на ръкостискане. Много изследователи са допринесли с различни изследователски статии за подобряване на трипосочния модел на ръкостискане и преодоляване на свързаните с него проблеми.

Препратки

  1. Hsu, F., Hwang, Y., Цай, С., Cai, W., Лий, С., & Чанг, К. (2016). TRAP: Трипосочен сървър за ръкостискане за установяване на TCP връзка. Приложни науки, 6 (11), 358. https: // doi.org / 10.3390 / ап6110358
  1. Чин-Мин Ма, Шо-Ин Лиу, Сяо-юн Уен. (2016). TCP протокол за трипосочно ръкостискане, базиран на квантово заплитане. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004
Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...