Что такое протокол TCP?

«Что такое протокол TCP?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

TCP (Transmission Control Protocol) — это основной протокол транспортного уровня стека TCP/IP, обеспечивающий надёжную, упорядоченную и проверенную на ошибки доставку потока данных между приложениями, работающими на разных хостах.

Ключевые характеристики:

  • Установка соединения (Connection-oriented): Перед обменом данными происходит «трёхстороннее рукопожатие» (SYN → SYN-ACK → ACK).
  • Надёжность и контроль ошибок: Используются подтверждения (ACK), таймауты и повторная передача потерянных пакетов.
  • Упорядочивание: Каждому байту данных присваивается порядковый номер. Приёмник собирает пакеты в правильном порядке.
  • Контроль потока (Flow Control): Механизм «скользящего окна» предотвращает переполнение буфера приёмника.
  • Управление перегрузкой (Congestion Control): Алгоритмы динамически регулируют скорость отправки данных, чтобы не перегрузить сеть.
Сравнение с UDP: Характеристика TCP UDP
Надёжность Гарантированная Не гарантирована
Установка соединения Требуется (handshake) Не требуется
Скорость Ниже (из-за накладных расходов) Выше
Порядок доставки Гарантирован Не гарантирован
Использование Веб (HTTP), почта (SMTP), файлы (FTP) Видеостриминг, VoIP, DNS

Пример сокета на Python:

# Серверная сторона
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM = TCP
server_socket.bind(('127.0.0.1', 65432))
server_socket.listen()
conn, addr = server_socket.accept()  # Ожидание подключения
with conn:
    data = conn.recv(1024)  # Получение данных
    conn.sendall(b'Reply')  # Отправка ответа