Мережа

Що таке кроки у рукостисканні 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" надходить до приймача, приймачеві може здатися, що одночасно триває процес встановлення з'єднання. Ми можемо використовувати пакети “reset”, щоб усунути цю неоднозначність.

Припинення підключення TCP

Кожна з двох сторін може розірвати з'єднання TCP. Для цього будь-яка сторона може передавати сегмент TCP із встановленим бітом FIN. Це означатиме, що сторона, що надсилає, не має більше даних для надсилання. Приймаюча сторона підтвердить цей FIN пакет, надіславши пакет підтвердження. Це закриє з'єднання з одного боку (зі сторони відправника). Тепер приймач буде використовувати ті самі дії, щоб розірвати з'єднання від його імені. Це повністю закриє зв’язок.

Проблеми з моделлю тристороннього рукостискання

У разі втрати або блокування ACK від клієнта до сервера на третьому етапі рукостискання, клієнт не знатиме про цю ситуацію. Клієнт припустить, що з'єднання встановлено, і почне надсилати дані. Сервер все ще чекає ACK, який уже був загублений, тому він відкине дані, отримані від клієнта. [2]

Висновок

У цьому посібнику ми дізналися про процедури з'єднання TCP за допомогою тристороннього рукостискання. Ми також бачили проблему дублікатів пакетів, пов’язану з двосторонньою процедурою рукостискання, і те, як вона була вирішена за допомогою тристоронньої моделі рукостискання. Багато дослідників внесли різні наукові праці для вдосконалення тристоронньої моделі рукостискання та подолання пов'язаних з нею проблем.

Список літератури

  1. Хсу, Ф., Хванг, Ю., Цай, С., Цай, В., Лі, Сі., & Чанг, К. (2016). TRAP: Тристоронній сервер рукостискання для встановлення TCP-з'єднання. Прикладні науки, 6 (11), 358. https: // doi.орг / 10.3390 / app6110358
  1. Цінь-Мін Ма, Шо-Інь Лю, Сяо-цзюнь Вень. (2016). Протокол тристороннього рукостискання TCP на основі квантового заплутування. Journal of Computers, 27 (3), 33-40, doi: 10.3966/199115592016102703004
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...