Скачиваний:
0
Добавлен:
04.02.2026
Размер:
221.68 Кб
Скачать

Установление tcp соединения (Three-Way Handshake)

Процесс: Трёхстороннее рукопожатие (TCP 3-way handshake) — это процедура установления надёжного соединения между клиентом и сервером.stormwall+1​youtube​

Три этапа установления соединения

Этап 1: SYN (Synchronize) — клиент → серверhackfrontend+1

text

Клиент инициирует соединение:

- Выбирает случайный начальный порядковый номер (ISN): например, 100

- Отправляет SYN-пакет на сервер

- Флаги: SYN=1, ACK=0

- Номер последовательности: 100

- Размер окна: сообщает, сколько данных может принять

Сервер получает SYN:

- Видит, что это запрос на соединение

- Входит в состояние SYN-RECEIVED

Этап 2: SYN-ACK (Synchronize-Acknowledge) — сервер → клиентstormwall+1

text

Сервер отвечает:

- Подтверждает получение (ACK): 100+1 = 101

- Отправляет свой начальный порядковый номер (ISN): например, 300

- Отправляет SYN-ACK пакет

- Флаги: SYN=1, ACK=1

- Номер последовательности: 300

- Номер подтверждения: 101

- Размер окна: сообщает, сколько данных может принять

Клиент получает SYN-ACK:

- Видит, что сервер согласился на соединение

- Готов передавать данные

Этап 3: ACK (Acknowledge) — клиент → серверhackfrontend+1

text

Клиент отправляет окончательное подтверждение:

- Подтверждает получение: 300+1 = 301

- Отправляет ACK пакет

- Флаги: SYN=0, ACK=1

- Номер последовательности: 101 (следующий после предыдущего)

- Номер подтверждения: 301

- Может содержать первые данные приложения

Сервер получает ACK:

- Теперь уверен, что клиент получил его SYN-ACK

- Соединение УСТАНОВЛЕНО

- Может отправлять данные приложению

Диаграмма трёхстороннего рукопожатия

text

Клиент Сервер

│ │

│ SYN (seq=100) │

├──────────────────────────→ │ (LISTEN)

│ │

│ SYN-ACK (seq=300, │

│ ack=101) │

│ ←──────────────────────────┤ (SYN-RECEIVED)

│ │

│ ACK (seq=101, │

│ ack=301) │

├──────────────────────────→ │ (ESTABLISHED)

│ │

│ ◄─── Соединение установлено → │

│ │

│────── DATA ─────────────→ │ (ESTABLISHED)

│ │

│ ←───── ACK + DATA ─────────┤

Завершение tcp соединения

TCP поддерживает два способа завершения соединения:youtube​crossplatform+1

1. Корректное завершение (fin — Finish)

Процесс: упорядоченное завершение в оба направления.

text

Клиент завершает передачу:

- Отправляет FIN флаг

- Флаги: FIN=1, ACK=1

- После этого клиент не может передавать, но может принимать

Сервер получает FIN:

- Отправляет ACK подтверждение

- Может продолжить отправлять данные

Когда сервер завершает передачу:

- Отправляет FIN флаг (вторая половина)

- Флаги: FIN=1, ACK=1

Клиент получает FIN:

- Отправляет финальное ACK подтверждение

- Соединение полностью закрыто (обе стороны)

Диаграмма корректного завершения:

text

Клиент Сервер

│ (ESTABLISHED) │

│ │

│ FIN (seq=..., ack=...)│

├─────────────────────────→ │

│ (FIN-WAIT-1) │ (CLOSE-WAIT)

│ │

│ ACK │

│ ←─────────────────────────┤

│ (FIN-WAIT-2) │ (CLOSE-WAIT)

│ │

│ FIN │

│ ←─────────────────────────┤

│ (TIME-WAIT) │ (LAST-ACK)

│ │

│ ACK │

├─────────────────────────→ │

│ (CLOSED) │ (CLOSED)

Соседние файлы в предмете Открытые информационные системы и сети