实现点对点通话 turn stun ice kamailio 的关系

   研究了将近几个月的voip,总结出来一下相关概念的知识,特此分享一下。如果有错误还请大家多多指教。

我们先说为什么要讲 turn stun ice kamailio之间的关系,因为点对点通话是基于ip的音频流通信,而由于上网设备的增多,ipv4无法满足给每一个设备分配一个ip,所以就出现了nat这个概念。而stun、stun、ice、kamailio有些模块都是为nat穿透而准备的(具体的nat穿透可以网上搜索)。为什么要准备这么多呢?因为nat有很多类型,由于我在实际测试中只遇到过两种类型:一种是完全开放型的、一种是对称型的(具体可以搜索nat类型)。如果你的上网设备是在公网上,则完全没有必要往下看了。但是大多数上网设备都是在nat后的。

stun

stun是一个正对stun协议的单独的服务器,你使用stun协议访问他时他会返回你上网设备的公网ip,stun和sip协议没有关系,你如果用到stun的话sip客户端会吧stun返回的公网ip作为自己的sip本机ip,这样别人就可以找到你了,音频数据流就可以直接通过该ip地址和你点对点通话

turn

turn服务器相当于把自己的ip租给你使用,应为turn服务器在公网。当对方找你的时候就像找到turn分配给你的ip,然后通过他给你发送音频流。其实turn相当于服务器中转,与之类似的比如rtpproxy、mediaproxy等等

ice

ice其实是一种算法,因为对称型nat中上网设备每次数据的出口和入口端口都是随机的,这时候stun是没有办法获取到能够让另一个终端的公共ip和端口,ice通过算法来预测让对方数据流进来的

kamailio

voip常用的协议是sip协议(类似于http协议),kamailio是sip协议的服务器(类似于http协议的apache)。只负责处理sip协议,当然它有很多模块实现很多功能, 经过一段时间的官方文档阅读发现他有一个stun.so和outbound 模块好像是作为代理模式可以充当stun的功能,但是由于项目时间原因就没有仔细阅读

你可能感兴趣的:(实现点对点通话 turn stun ice kamailio 的关系)