Ответ
TCP (Transmission Control Protocol) работает на транспортном уровне (4-й уровень) модели OSI. Его основная задача — обеспечить надежную, упорядоченную и проверенную доставку потока данных между приложениями, работающими на разных хостах, поверх ненадежного IP-протокола (сетевой уровень).
Ключевые функции TCP:
- Установка соединения: Использует трехэтапное рукопожатие (SYN, SYN-ACK, ACK).
- Надежная доставка: Подтверждение получения (ACK), повторная передача потерянных пакетов и контрольная сумма.
- Управление потоком: Механизм скользящего окна предотвращает переполнение буфера получателя.
- Управление перегрузкой: Динамически регулирует скорость отправки данных на основе состояния сети.
Пример использования (создание TCP-сокета):
import socket
# Создание TCP-сокета (SOCK_STREAM)
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Установка соединения с сервером
tcp_socket.connect(('example.com', 80))
# Отправка HTTP-запроса
request = b"GET / HTTP/1.1rnHost: example.comrnrn"
tcp_socket.sendall(request)
# Получение ответа
response = tcp_socket.recv(4096)
print(response.decode())
tcp_socket.close()
TCP является основой для многих критичных к надежности протоколов прикладного уровня: HTTP/HTTPS, FTP, SMTP, SSH, а также для взаимодействия с базами данных (например, PostgreSQL). Для задач, где важнее низкая задержка, а не гарантированная доставка (стриминг, онлайн-игры), часто используют UDP.