Использует ли Viber TCP для VoIP?

Вопрос или проблема

В настоящее время я нахожусь в гостевой сети WiFi, где все порты, кроме тех, которые используются для веб-серфинга (80, 443, 8080) и почты (25, 110, 143, 465, 587, 993, 995), заблокированы (3128, кажется, тоже работает).

Я попытался сделать звонок по Facetime на своем iPhone, но это не сработало, что заставило меня предположить, что UDP тоже заблокирован.

Тем не менее, приложение Viber смогло успешно подключиться и начать видеозвонок с приемлемым качеством/задержкой.

Мой вопрос теперь в том, использует ли Viber TCP для VoIP или как это возможно?

Использует ли Viber TCP для VoIP?

Viber использует UDP, а не TCP для VoIP-трафика. TCP используется для текстовых сообщений.

Viber использует RTPSRTP при шифровании). RTP в основном реализуется на UDP, так как это протокол реального времени.

Поток RTP аудио или аудио/видеозвонка преобразуется в SRTP и шифруется с помощью алгоритма Salsa20 с использованием ключа сессии.

Источник Viber Encryption Overview

Использование как TCP, так и UDP подтверждается в Viber Communication Security unscramble the scrambled Contents, где использовалась команда tcpdump для генерации файлов .pcap для анализа трафика данных Viber:

Это казалось хорошей отправной точкой для получения некоторых результатов, поэтому мы отфильтровали данные, чтобы получить однонаправленный голосовой поток, используя следующую команду:

tshark -r long-call.pcap -w long-call-oneway.pcap udp.dstport == 5243

Здесь мы выбираем только пакеты UDP с портом назначения для службы Viber, чтобы это был только исходящий голосовой трафик.

Помимо голосовых звонков, которые Viber позволяет пользователю совершать, он также позволяет отправлять и получать текстовые сообщения. Эта функция использует некоторый специализированный протокол на основе tcp для подключения к серверу и обмена сообщениями. Декодирование этого потока не было приоритетом в рамках этого проекта, и времени на дальнейшее исследование этого не осталось.


Какие порты использует Viber?

Для того чтобы Viber Desktop работал на вашем компьютере, следующие порты должны быть открыты для всех адресов для TCP и UDP:

  • 5242
  • 4244
  • 5243
  • 9785
  • 80
  • 443

Источник Opening ports for Viber Desktop

Ответ или решение

Viber — это популярное приложение для обмена мгновенными сообщениями и совершения VoIP-вызовов, которое широко используется благодаря своей простоте и функциональности. Когда речь идет о его сетевых протоколах, важно понимать, как приложение обрабатывает передачу данных и какой тип соединения используется.

Теория

Сначала обсудим протоколы TCP и UDP и их назначение в контексте голосовой связи. TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это основные транспортные протоколы, которые действуют на третьем уровне модели OSI.

TCP — это протокол, который обеспечивает надежную передачу данных, в которой все пакеты гарантированно доставляются получателю в правильном порядке. Он использует механизм подтверждения получения данных и пересылки пакетов в случае их потери. TCP идеально подходит для текстовых сообщений и передачи данных, где важна точность и целостность каждой части отправленных данных.

UDP, с другой стороны, это облегченный протокол, который не предоставляет гарантий доставки, но обеспечивает меньшую задержку. Он не требует установления соединения и идеален для приложений, где важнее скорость и минимальная задержка, чем полная надежность, таких как потоковая передача аудио и видео в реальном времени, включая VoIP.

Пример

Рассматривая работу Viber, мы видим, что это приложение использует комбинированный подход для обмена данными. Согласно официальным источникам, когда дело доходит до голосовых и видеозвонков, Viber использует протоколы RTP (Real-time Transport Protocol) и SRTP (Secure Real-time Transport Protocol), которые обычно работают на основе UDP. Это позволяет обеспечивать передачу аудио и видеопотоков с минимальной задержкой.

Для текстовых сообщений и соединений с серверами Viber использует TCP. Это подтверждено исследованием, в котором использовалась утилита tcpdump для анализа трафика Viber, где TCP служил в первую очередь для обмена текстовыми данными.

Применение

Теперь перейдем к ситуации, описанной в вопросе. Вы находитесь в сети, где разрешены только некоторые порты, такие как 80, 443 и 8080, которые обычно используются для HTTP и HTTPS трафика. Порты, необходимые для полноценной работы UDP в стандартных условиях, такие как те, что используются FaceTime, могут быть заблокированы, что объясняет, почему ваше приложение FaceTime не работает для совершения звонков.

Однако Viber способен обойти такие ограничения благодаря гибкости своих протоколов. Один из возможных сценариев: приложение Viber может использовать доступные порты TCP, такие как 443, для установления соединения и инициации вызовов, что особенно полезно в условиях ограниченных сетей, как в случае гостевой Wi-Fi. Хотя это менее эффективно по сравнению с UDP, TCP на портах 80 и 443 дает возможность инициировать соединение и передавать данные, что объясняет, почему ваши вызовы через Viber все еще могли функционировать, несмотря на ограничения сети.

Таким образом, Viber эффективно использует как UDP для VoIP в условиях, когда это возможно, так и TCP для обхода сетевых ограничений, что делает его весьма гибким инструментом для связи в различных сетевых условиях. Это пример того, как гибкость в выборе транспортного протокола может повысить успешность соединения и качество сервиса даже в условиях строгих сетевых ограничений.

Оцените материал
Добавить комментарий

Капча загружается...