3

我开发了一个 VOIP 应用程序,它使用 PJSip 通过 SIP 通道进行通信。我想要做的是创建一个 HTTP 隧道,以便系统即使在 VOIP 被阻止的区域也能正常工作。使用 PJSip 实现此目的的方法是什么,或者如果有一些外部方法,那么它如何与 PJSip 合并?

4

2 回答 2

0

没有简单的方法可以做到这一点。您必须在 pjsip 中编写另一个传输协议或修改当前传输以支持 tcp/udp over http 隧道。您还可以如何通过 HTTP “隧道”传输流量。您可能必须确保您使用的 HTTP 服务器也支持 HTTP 隧道。

这可能会为您提供 SIP 信令,但您可能会遇到 RTP 媒体流量问题。

在 pjsip 代码中实现 TURN 支持可能会更好。pjsip 已经支持 RTP 媒体的 TURN,因此使其支持主要 SIP 信令流量的 TURN 将减少工作量。

尽管如此,这假设您可以安装 TURN 服务器?如果您无法安装 TURN 服务器并且您的 HTTP 服务器不支持 HTTP 隧道,那么您可能不走运。

于 2014-03-09T05:24:11.150 回答
0

当局通过捕获您的 sip 和 RTP 数据包来检测您的 VoIP 应用程序。您可以调整您的 pjsip 并强制通过一个网关发送所有数据(目前,pjsip 为 sip/RTP/rtcp 等打开不同的端口)。您还必须更改每个传出的数据包,以便当局无法知道该数据包是 sip 还是 RTP 数据包(他们通过查看标头的结构知道数据包的类型)。您还需要实现一个隧道类型的系统,每个数据包在到达服务器之前都要经过该系统。该隧道应具有将数据包重组为其原始状态的能力。这样,您将能够将数据包发送到服务器而不会被阻止。

于 2016-07-13T06:16:33.727 回答