Назад к вопросам
Junior
70
questionbank
Как работает TCP?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
TCP обеспечивает надёжную, ориентированную на соединение доставку данных в IP-сетях.
Ключевые стадии и механизмы:
-
Установка соединения (Three-way Handshake):
- Клиент отправляет SYN-пакет с предлагаемым начальным порядковым номером (ISN).
- Сервер отвечает SYN-ACK-пакетом, подтверждая получение SYN и отправляя свой ISN.
- Клиент отправляет ACK-пакет, подтверждая получение SYN-ACK.
-
Передача данных:
- Данные разбиваются на сегменты.
- Каждый сегмент имеет заголовок с порядковым номером и контрольной суммой.
- Получатель отправляет подтверждение (ACK) о получении сегмента с номером следующего ожидаемого сегмента.
-
Контроль потока (Flow Control):
- Получатель сообщает отправителю о размере свободного буфера (размер окна).
- Отправитель не посылает больше данных, чем указано в окне получателя. Предотвращает переполнение буфера получателя.
-
Контроль ошибок (Error Control):
- Используются контрольные суммы для проверки целостности сегментов.
- Если сегмент потерян или повреждён, получатель не отправляет ACK для этого сегмента. Отправитель, не получив своевременного ACK, повторно передаёт сегмент (таймаут).
-
Контроль перегрузки (Congestion Control):
- Механизмы для предотвращения перегрузки сети (например, Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery).
- Размер окна отправки динамически изменяется в зависимости от условий сети (потери пакетов, RTT).
-
Завершение соединения (Four-way Handshake):
- Одна сторона отправляет FIN-пакет, указывая, что больше не будет отправлять данные.
- Другая сторона подтверждает FIN (ACK) и может продолжать передавать свои данные.
- Когда другая сторона также готова, она отправляет свой FIN-пакет.
- Первая сторона подтверждает FIN второй стороны (ACK).
Отличия от UDP:
| Характеристика | TCP | UDP |
|---|---|---|
| Ориентация | С установлением соединения | Без установления соединения |
| Надёжность | Высокая (гарантия доставки, порядок) | Низкая (без гарантий) |
| Контроль ошибок | Да | Нет |
| Контроль потока | Да | Нет |
| Контроль перегрузки | Да | Нет |
| Скорость | Ниже | Выше |
| Размер заголовка | Больше (20-60 байт) | Меньше (8 байт) |