1. Протокол рукостискання TCP
У протоколі TCP/IP протокол TCP забезпечує надійні сервіси з'єднання шляхом тристороннього рукостискання для встановлення з'єднання.
Перше рукостискання: Під час встановлення з'єднання клієнт надсилає син-пакет (syn=j) на сервер і переходить у стан SYN_SEND, очікуючи підтвердження сервером.
Друге рукостискання: Коли сервер отримує пакет SYN, він повинен підтвердити SYN клієнта (ack=j+1), а також надіслати пакет SYN (syn=k), тобто пакет SYN+ACK, після чого сервер переходить у стан SYN_RECV.
Третє рукостискання: Клієнт отримує пакет SYN+ACK від сервера і надсилає пакет підтвердження ACK (ack=k+1) на сервер.
Після трьох рукостискань клієнт і сервер починають передавати дані, і в наведеному процесі є кілька важливих понять:
Нез'єднана черга: У протоколі тристороннього рукопотискання сервер підтримує нез'єднану чергу, яка відкриває запис для кожного SYN-пакета клієнта (syn=j), що вказує, що сервер отримав SYN-пакет, і надсилає підтвердження клієнту, очікуючи підтвердження від клієнта. З'єднання, ідентифіковане цими записами, перебуває у стані Syn_RECV на сервері, і коли сервер отримує пакет підтвердження від клієнта, запис видаляється, і сервер переходить у стан ВСТАНОВЛЕНО. Параметр Backlog: Вказує максимальну кількість непідключених черг.
Час повторної передачі SYN-ACK Якщо сервер надсилає пакет SYN-ACK і не отримує пакет підтвердження клієнта, сервер виконує першу повторну передачу, чекає певний час без отримання пакета підтвердження клієнта і виконує другу повторну передачу. Зверніть увагу, що час очікування кожного повторного проходу не обов'язково однаковий.
Час виживання напівз'єднання: означає максимальний час, протягом якого запис у черзі напівз'єднання зберігається, тобто максимальний час від моменту, коли сервіс отримує пакет SYN, до моменту, коли пакет підтверджується як недійсний, а часове значення — це сума максимального часу очікування для всіх пакетів запитів на повторну передачу. Іноді ми також називаємо напівзв'язаний час виживання SYN_RECV часом виживання.
|