На каком уровне модели OSI работает протокол TCP?

«На каком уровне модели OSI работает протокол TCP?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.