NAT的UDP打洞的时候,端口和RTP以及RTCP之间的关系

shiyunliang 2008-09-18 04:26:43
当用UDP对防火墙打洞的时候,最后会选取一个最优的连接,本地[IP:Port],和远端的[IP:Port],然后交给语音模块,但是最关键的是语音流是RTP和RTCP,有两个端口,RTP的端口是偶数,RTCP是RTP的端口加1,这怎么办?难道要打两次洞,但是协议里好像没对这方面进行特殊说明啊!!
...全文
595 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanghehong 2008-09-19
  • 打赏
  • 举报
回复
最初的RTP协议确实说 RTP/RTCP用一对相邻端口;RTP的端口是偶数,RTCP是RTP的端口加1。(RFC 1889)

后来,这个限制去掉,不一定要这样,可以用信令显式地分别指定RTP和RTCP的端口。(可见RFC 3550)


-千里
shiyunliang 2008-09-19
  • 打赏
  • 举报
回复
那样我岂不是每次打洞都要打两个洞,然后Relay的时候客户端还要分配两个端口,然后Relay服务器还要区分接收到的是RTP包还是RTCP包。但是GTalk里并没有提到这个要求,它只是选了个最优连接,远端和本地的一个地址对,并没有生成两个端口,请问大侠GTalk里是怎么处理的?
yanghehong 2008-09-19
  • 打赏
  • 举报
回复
你如果会打一个,相信你会打2个。

Relay服务器不必去解析RTP包和RTCP包。

其实TURN协议里头的allocation有选项说可以分配偶数奇数端口对,就是可以方便RTP/RTCP用的。只不过Gtalk这个relay server里头没有实现。

4,392

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧