sip服务器和sip客户端之间是否传递RTP语音流?
比如sip客户端c1和c2都注册到同一个sip服务器(c1,c2,sip服务器处于同一个局域网中)
或者在其它不同的场景下(比如c1和c2分别处于不同的nat后, sip服务器位于公网上)
当c1呼叫c2成功后,c1和c2之间开始互发RTP语音流,这样,双方就可以互相听见对方的声音了
那么sip服务器和sip客户端之间是否传递RTP语音流?即服务器是否转发c1和c2之间通信
的语音数据?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
跟是否在局域网没关系 只跟canreinvite的设置有关
呵呵,学习,我也想知道。
谢谢楼上的几个兄弟
我前几天做了一个实验,在同一个局域网内:linux server端用Yate2服务器, windows客户端用了两个软电话
两个软电话注册到Yate2服务器上进行通话实验,并且进行了抓包
抓包发现两个客户端之间的通话RTP数据流通过了服务器进行转发,这个是怎么回事呢?
这两个sip客户端都处在同一个局域网里,为什么两者之间的通话语音流还要通过服务器转发呢??
雖然 Asterisk 有 canreinvite 但仍有一些環境條件限制,請參考這篇
http://itblog.itview.com.tw/index.php?load=read&id=43
如果對 RTP 不需要作控制,例如轉接、錄音等等,或許使用 SIP Proxy Server 可以解決。
SIP Proxy Server 請用 google 搜尋 openser。
同一个NAT后,一般是c1和c2 RTP包直接互传
如果不再同一个NAT后,一般通过专门的RTP server中转,具体不同系统有不同的实现方法
canreinvite=no的话就是强制