SIP против прямых сокетов TCP - PullRequest
2 голосов
/ 01 ноября 2011

Я использую приложение для передачи голоса в реальном времени для Android. Я читал, что, как стандарт - пакеты RTP инкапсулируются в SIP и затем отправляются в пункт назначения. В чем преимущество этого?

Моя идея состояла в том, чтобы использовать сервер, просто чтобы получать управляющие сообщения от узлов и открытых сокетов. Все эти узлы будут в 1 группе. Затем я отправляю IP-адреса каждого из этих узлов, чтобы один отправитель мог передать свои пакеты напрямую в пункт назначения.

есть ли здесь фатальный недостаток? (Я не обеспокоен энергопотреблением) Как SIP работает лучше? или это?

Спасибо

Ответы [ 3 ]

3 голосов
/ 03 ноября 2011
  • RTP не «инкапсулирован в пакеты SIP».SIP - это протокол сигнализации.RTP - это протокол медиапотока.SIP используется для согласования и настройки (и снятия) потоков мультимедиа.
  • TCP - ужасный выбор для пакетов мультимедиа (RTP);из ваших писем не ясно, предлагаете ли вы.
  • Многоадресная рассылка вряд ли будет работать для многих сетевых путей / получателей.
  • маршрутизаторы разыгрывают веселый ад с поступающими данными;вам нужно больше, чем просто SIP, чтобы иметь дело с пользователями в открытой сети.См. STUN, TURN, ICE, UPnP и т. Д.
2 голосов
/ 01 ноября 2011

SIP или Session Initiation Protocol - это протокол, разработанный специально для решения проблемы, которую вы пытаетесь решить. Как правило, причина, по которой вы должны повторно использовать (а не изобретать велосипед), заключается в том, что другие люди изучали ту же проблему и, по-видимому, нашли лучшее решение для коллективной группы, чем вы, как для отдельного человека. Конечно, это не всегда так, но в целом это верно!

Если вы хотите узнать о SIP, вы можете изучить спецификацию RFC 3261 или начать с записи Википедии , если хотите получить краткий обзор.

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

SIP - это протокол сигнализации, который обычно работает по TCP (хотя и не обязательно), и если вы внимательно посмотрите на него, вы увидите, что он во многих отношениях очень похож на HTTP. Как и HTTP, он может транспортировать большую часть полезных нагрузок и делает это с текстовыми заголовками, так же как HTTP может использоваться для транспортировки HTML, XML, простого текста или любой произвольной двоичной полезной нагрузки.

0 голосов
/ 08 ноября 2011

В самой простой системе вы можете просто использовать голосовые пакеты через RTP через UDP.

Но у вас не будет возможности отключить звук, и вам придется заранее знать IP-адреса, номера портов, тип кодека и его характеристики.

В слишком простом виде SIP - это способ: 1. найти IP-адрес другой конечной точки из URL.(Может потребоваться STUN, TURN, ICE и т. Д.) 2. договориться о том, какой кодек использовать и его параметры

Существует гораздо больше возможностей для SIP, чем вы, вы можете исследовать функции конференц-связи SIP на основе написанного.

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

Но если вы делаете коммерческий проект, имейте в виду, что телефония - это гораздо больше, чем кажется на первый взгляд.Исходная спецификация SIP была значительно пересмотрена и теперь представляет собой кластер RFC, которые все еще модифицируются и добавляются.Я рекомендую вам воспользоваться этой работой, а не заново изобретать ошибки, допущенные другими.

...