Перейти к основному содержимому

TCP

TCP (Transmission Control Protocol) – это транспортный уровень протокола модели OSI, который обеспечивает надёжную передачу данных между двумя хостами через сеть IP. Основные характеристики:

Особенности TCP

  1. Надежность: TCP гарантирует доставку пакетов за счет использования подтверждения приема (ACK), повторной передачи потерянных сегментов и контроля перегрузки сети.
  2. Контроль потока: TCP использует механизм скользящего окна для управления потоком данных, чтобы отправитель не переполнял буфер получателя.
  3. Управление соединением: Перед началом передачи данных устанавливается соединение (три этапа рукопожатия: SYN, SYN+ACK, ACK).
  4. Последовательная передача: Данные передаются последовательно, и TCP следит за тем, чтобы пакеты были собраны в правильном порядке у получателя.
  5. Проверка целостности: Использует контрольные суммы для проверки целостности каждого сегмента.
  6. Поддерживает мультиплексирование: Позволяет нескольким приложениям использовать одно сетевое подключение одновременно благодаря портам.
  7. Протокол работает медленнее, чем UDP, из-за необходимости подтверждений и установления соединения.

Сравнение с UDP (User Datagram Protocol):

  1. Ненадежность: UDP не гарантирует доставку пакетов, так как отсутствует подтверждение получения данных и повторная передача потерянных пакетов.
  2. Отсутствие контроля потока: Нет механизма управления потоком данных, поэтому отправитель может передавать данные быстрее, чем их способен обработать получатель.
  3. Нет установления соединения: Передача данных начинается сразу без предварительного согласования параметров связи.
  4. Быстрота: UDP работает значительно быстрее, поскольку отсутствуют механизмы обеспечения надежности.
  5. Применение: Используется в случаях, когда скорость важнее надежности, например, в потоковом видео, голосовых звонках, онлайн-играх.

Сравнение с ICMP (Internet Control Message Protocol):

  1. Функция: ICMP используется для диагностики состояния сети и обмена сообщениями об ошибках. Например, сообщения о недоступности хоста или невозможности маршрутизации.
  2. Не предназначен для передачи пользовательских данных: В отличие от TCP и UDP, ICMP не передает пользовательские данные, а служит исключительно для служебных целей.
  3. Примеры сообщений: Echo Request/Reply (используется утилитой ping), Destination Unreachable, Time Exceeded.

Использование TCP в стриминге

FFmpeg

В FFmpeg для этого используется параметр rtsp_transport с значением tcp. Вот пример команды для воспроизведения RTSP-потока по TCP:

ffmpeg -rtsp_transport tcp -i rtsp://example.com/live.sdp output.mp4

Здесь:

  • -rtsp_transport tcp: указывает FFmpeg использовать TCP для передачи RTSP-потока.
  • rtsp://example.com/live.sdp: URL источника RTSP-потока.
  • output.mp4: выходной файл, куда будет записан декодированный поток.

GStreamer

В GStreamer для этого также применяется параметр rtsp-config, чтобы задать использование TCP. Пример команды для воспроизведения RTSP-потока по TCP:

gst-launch-1.0 rtspsrc location=rtsp://example.com/live.sdp ! decodebin ! autovideosink

Добавляем параметр rtsp-config=interval=0,latency=0,tcp:

gst-launch-1.0 rtspsrc location=rtsp://example.com/live.sdp rtsp-config=interval=0,latency=0,tcp ! decodebin ! autovideosink

Здесь:

  • rtsp-config=interval=0,latency=0,tcp: указывает GStreamer использовать TCP для передачи RTSP-потока.
  • decodebin: элемент для автоматического выбора подходящего декодера.
  • autovideosink: выводит видеопоток на экран.