Назад к вопросам
Junior
68
questionbank
Как работает TCP?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
TCP (Transmission Control Protocol) — протокол транспортного уровня, обеспечивающий надежную, ориентированную на установление соединения, двунаправленную передачу данных.
Основные этапы работы:
-
Установление соединения (Three-way handshake):
- Клиент отправляет пакет SYN (Synchronize) с начальным порядковым номером.
- Сервер отвечает пакетом SYN-ACK (Synchronize-Acknowledgement), подтверждая получение SYN клиента и отправляя свой начальный порядковый номер.
- Клиент отправляет пакет ACK (Acknowledgement), подтверждая получение SYN-ACK сервера.
- Соединение установлено.
// Клиент -> Сервер SYN (Seq=X) // Сервер -> Клиент SYN-ACK (Seq=Y, ACK=X+1) // Клиент -> Сервер ACK (ACK=Y+1) -
Передача данных:
- Данные разбиваются на сегменты.
- Каждый сегмент нумеруется для контроля порядка.
- Получатель отправляет подтверждение (ACK) для каждого успешно принятого сегмента.
- Если сегмент не подтвержден в течение таймаута, отправитель повторно передает его.
- Применяется управление потоком (sliding window) для предотвращения переполнения буфера получателя.
- Используются механизмы управления перегрузками для адаптации скорости передачи к состоянию сети.
-
Завершение соединения (Four-way handshake или Three-way при одновременном закрытии):
- Одна сторона (инициатор) отправляет пакет FIN (Finish) после отправки всех своих данных.
- Другая сторона подтверждает получение FIN пакетом ACK.
- Другая сторона (когда готова) отправляет свой пакет FIN.
- Инициатор подтверждает получение FIN второй стороны пакетом ACK.
- Обе стороны переходят в состояние TIME_WAIT для обеспечения надежного завершения.
// Сторона 1 -> Сторона 2 FIN (Seq=A) // Сторона 2 -> Сторона 1 ACK (ACK=A+1) // (Состояние CLOSE_WAIT на Стороне 2, может передавать оставшиеся данные) // Сторона 2 -> Сторона 1 FIN (Seq=B) // Сторона 1 -> Сторона 2 ACK (ACK=B+1)
Ключевые особенности:
- Надежность: Гарантия доставки данных в правильном порядке без потерь и дубликатов за счет подтверждений и повторных передач.
- Потоковая передача: Данные рассматриваются как непрерывный поток байт.
- Ориентированность на соединение: Требует установления и завершения сессии.
- Управление потоком: Предотвращает перегрузку буфера получателя.
- Контроль перегрузок: Адаптирует скорость передачи к пропускной способности сети.