3-Х етапне рукостискання tcp

3-Х етапне рукостискання tcp
Процес початку сеансу TCP. також званий «рукостискання» (англ. handshake), що складається з трьох кроків:

1. Клієнт, який має намір встановити з'єднання, посилає серверу сегмент з номером послідовності і прапором SYN.

Сервер отримує сегмент, запам'ятовує номер послідовності і намагається створити сокет (буфери і керуючі структури пам'яті) для обслуговування нового клієнта;

У разі успіху сервер посилає клієнтові сегмент з номером послідовності і прапорами SYN і ACK, і переходить в стан SYN-RECEIVED;

  • У разі невдачі сервер посилає клієнтові сегмент з прапором RST.
  • 2. Якщо клієнт отримує сегмент з прапором SYN, то він запам'ятовує номер послідовності і посилає сегмент з прапором ACK.

    Якщо він одночасно отримує і прапор ACK (що зазвичай і відбувається), то він переходить в стан ESTABLISHED;

    Якщо клієнт отримує сегмент з прапором RST, то він припиняє спроби з'єднатися;

    Якщо клієнт не отримує відповіді протягом 10 секунд, то він повторює процес з'єднання заново.

    3. Якщо сервер в стані SYN-RECEIVED отримує сегмент з прапором ACK, то він переходить в стан ESTABLISHED.

    В іншому випадку після тайм-ауту він закриває сокет і переходить в стан CLOSED.

    Процес називається «трьохетапну рукостисканням» (англ. Three way handshake), оскільки не дивлячись на те що можливий процес встановлення з'єднання з використанням чотирьох сегментів (SYN в сторону сервера, ACK в сторону клієнта, SYN в сторону клієнта, ACK в сторону сервера), на практиці для економії часу використовується три сегменти.