Ответ
TCP — это протокол транспортного уровня, и термин "синхронный" к нему применяется некорректно в классическом понимании (как в синхронном/асинхронном программировании).
Ключевые характеристики TCP:
- Установка соединения (handshake): TCP использует трёхэтапное рукопожатие (
SYN,SYN-ACK,ACK) для установки логического, двунаправленного соединения перед обменом данными. Это можно считать синхронной фазой установки. - Передача данных: После установки соединения передача данных происходит в дуплексном режиме. Отправитель и получатель обмениваются сегментами, используя подтверждения (
ACK) и механизмы контроля потока и перегрузок. Это не блокирующая операция на уровне сети — узел может продолжать работу, ожидаяACK. - На уровне сокетов: При работе с TCP-сокетами в коде, вызовы вроде
read()илиaccept()могут быть блокирующими (синхронными) или неблокирующими (асинхронными) в зависимости от настроек сокета.
Вывод: TCP сам по себе — протокол с установкой соединения и гарантированной доставкой. Его «синхронность» — это характеристика этапа установки соединения и часто — модель программирования сокетов, а не внутреннего протокола передачи данных.