TCP (Transmission Control Protocol) - это протокол транспортного уровня в стеке протоколов TCP/IP, обеспечивающий надежную, ориентированную на соединение доставку потока байтов между приложениями.
Основные характеристики TCP:
- Надежность: Гарантирует доставку всех сегментов данных в правильном порядке, повторно отправляя потерянные или поврежденные сегменты. Использует подтверждения (ACK) и тайм-ауты.
- Ориентированность на соединение: Перед передачей данных устанавливается логическое соединение между отправителем и получателем (трехэтапное рукопожатие). Соединение поддерживается на протяжении всей сессии.
- Управление потоком (Flow Control): Регулирует скорость передачи данных, чтобы отправитель не перегрузил буфер получателя. Использует окно приема.
- Управление перегрузками (Congestion Control): Предотвращает перегрузку сети, динамически регулируя скорость передачи данных в зависимости от условий сети. Использует алгоритмы типа Slow Start, Congestion Avoidance.
- Потоковая передача (Stream-oriented): TCP рассматривает данные как непрерывный поток байтов, а не отдельные пакеты. Гарантирует, что данные будут доставлены в том же порядке, в котором были отправлены.
- Дуплексная связь: Позволяет передавать данные в обоих направлениях одновременно после установления соединения.
Применение TCP:
- HTTP/HTTPS (веб-трафик)
- FTP (передача файлов)
- SMTP (электронная почта)
- SSH (удаленное управление)
Сравнение с UDP:
| Характеристика | TCP | UDP |
|---|
| Надежность | Высокая (гарантия доставки) | Низкая (без гарантии) |
| Ориентация на соединение | Да (установление и поддержание) | Нет (передача без установления) |
| Упорядоченность данных | Да (доставка в порядке отправки) | Нет (возможна доставка не по порядку) |
| Управление потоком | Да | Нет |
| Управление перегрузками | Да | Нет |
| Быстродействие | Ниже (из-за накладных расходов) | Выше |
| Примеры | HTTP, FTP, SSH, SMTP | DNS, DHCP, VoIP, онлайн-игры |