CN105187567B - 一种基于sip和ice的音视频通信方法 - Google Patents
一种基于sip和ice的音视频通信方法 Download PDFInfo
- Publication number
- CN105187567B CN105187567B CN201510352773.0A CN201510352773A CN105187567B CN 105187567 B CN105187567 B CN 105187567B CN 201510352773 A CN201510352773 A CN 201510352773A CN 105187567 B CN105187567 B CN 105187567B
- Authority
- CN
- China
- Prior art keywords
- port
- nat
- address
- server
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于SIP和ICE的音视频通信方法,所述方法包括如下步骤:通话开始,客户端向服务器发起端口分配请求,得到服务器中端口分配模块分配的八个内网端口号;启动ICE,并探测本方NAT类型并收集本方候选地址信息;通信双方将各自获取到的NAT类型和候选地址信息进行交换,并将对方的NAT类型和本方的NAT类型合并成一个NAT组合类型,若对方NAT类型为Symmetric NAT或Cone NAT,则计算对方预测端口;根据NAT组合类型选择相应的候选地址信息进行配对,生成检测列表;进行连通性测试,建立通道。本发明实现了对称NAT下的音视频P2P,并减少了ICE谈判时间,提高了音视频的通信效率。
Description
技术领域
本发明涉及一种音视频通信,尤其涉及一种基于SIP和ICE的音视频通信方法。
背景技术
实时网络音视频通信由最早的VoIP(Voice over IP)发展而来,VoIP对语音数据进行压缩、解压处理,然后用IP及其它协议对数据进行打包和拆包,从而实现利用IP网络传输语音数据,实时网络音视频通信能否广泛被应用决定着社交网络发展能否迈向新的台阶,决定着人们的交际方式能否有新的突破,用P2P来进行即时音视频传输是一种有效方式,但随着互联网的快速发展,IPv4地址的枯竭,NAT(Network Address Translation 即网络地址转换)设备和技术应运而生,从实现的技术角度,NAT可以分成如下7类:Full ConeNAT(全锥NAT) 、Restricted Cone NAT(限制性锥NAT)、Port Restricted Cone NAT(端口限制性锥NAT) 、Symmetric NAT (对称NAT)、UDP网络阻塞、位于对称UDP防火墙后和处于公网上,一般只对Full Cone NAT(全锥NAT) 、Restricted Cone NAT(限制性锥NAT)、PortRestricted Cone NAT(端口限制性锥NAT) 和Symmetric NAT (对称NAT)进行研究,其中,Full Cone NAT(全锥NAT) 、Restricted Cone NAT(限制性锥NAT)和Port RestrictedCone NAT(端口限制性锥NAT) 均属于Cone NAT(锥形NAT)这一大类,NAT的使用能够有效缓解互联网快速发展导致IPv4地址不足的问题,并且提高了内部网络的安全性,但却严重影响了音视频的P2P(对等网络)实现,因为NAT设备的存在只允许内部主机主动发送数据包到外部网络,对之前内部主机并没有访问过的外部设备,其意图主动访问内部主机的数据包会被NAT设备直接丢弃,因此使得目前被广泛关注的P2P技术,特别是音视频的P2P发展受到了很大的制约,位于不同NAT或防火墙之后的客户端进行音视频P2P存在困难,特别是Symmetric NAT存在时,使得音视频的P2P更难以实现,使得P2P成功率不高。
ICE(Interactive Connectivity Establishment,交互式连接建立)是一种灵活可靠的方案,综合利用已有的STUN和TURN等协议并对其进行适当的扩展实现NAT穿越的,可以适用于各种网络拓扑下的NAT穿越,对部署了Symmetric NAT的网络,使用TURN进行中转,现有技术中公开了申请号为201210160837.3的中国专利“一种VoIP中基于ICE的快速私网穿越方法”,该方法首先进行NAT 类型检测,检测结果为对称型NAT环境或非对称型NAT环境;对于对称型NAT环境,所述方法只针对主机候选地址和中继候选地址的连通性进行检查;对于非对称型NAT环境,所述方法只针对主机候选地址和服务器反身候选地址(即外网地址)的连通性进行检查,上述这种方法是在传统的ICE协议上进行了改进:即在原RFC5425的基础上,结合其应用场景(即注重语音高效性的VoIP***),对ICE进行了改进,在地址收集前增加了NAT类型检测,这一步骤的增加,使得:非对称NAT环境下,不用进行TURN地址的产生与保活,减少开销,而连通性检查则保证了同一私网环境下的语音高效传输;对称NAT环境下,不用进行STUN返回地址在NAT上的保活,与该地址的连通性检查,减少了开销与媒体连接建立成功时延,实现快速私网穿越,但这种优化后的ICE穿越方式不能在SymmetricNAT中实现P2P,未能在很大程度提高P2P成功率,且在检测列表上的优化程度较小,对减少ICE的谈判时间有限,ICE的谈判时间指的是从ICE检测列表形成到通道形成需要的时间,因此研究一种实用性更好、适用性更强的NAT穿越方式来实现即时网络音视频通信P2P显得非常有意义。
发明内容
本发明要解决的技术问题,在于提供一种基于SIP和ICE的音视频通信方法,提高P2P成功率,减少ICE谈判时间,从而提高音视频通信效率。
本发明是这样实现的:一种基于SIP和ICE的音视频通信方法,所述方法需提供端口分配模块,所述端口分配模块用于为客户端分配规律的内网端口,所述方法包括如下步骤:
步骤10、通话开始,客户端向服务器发起端口分配请求,得到服务器中端口分配模块分配的八个内网端口号,所述八个内网端口号包括4个主机候选地址端口号和4个内网留洞端口号;
步骤20、启动ICE,并探测本方NAT类型并收集本方候选地址信息;
步骤30、通信双方将各自获取到的NAT类型和候选地址信息进行交换,得到对方的NAT类型,将对方的NAT类型和本方的NAT类型合并成一个NAT组合类型,同时,判断对方NAT类型是否为Symmetric NAT或Cone NAT,若是,则计算对方预测端口,所述Cone NAT包括Full cone NAT、Port Restricted Cone NAT和Restricted Cone NAT,否则,直接进入步骤40;
步骤40、根据NAT组合类型选择相应的候选地址信息进行配对,生成检测列表;
步骤50、根据检测列表进行连通性测试,建立通道。
进一步的,所述步骤10具体包括:
步骤11、通话开始,客户端与服务器建立TCP长连接,向服务器中的端口分配模块请求分配客户端所处内网的端口资源;
步骤12、端口分配模块收到请求后,从资源池中查询客户端所处内网中未使用的端口资源号,并选择未使用的端口资源号中最小的端口资源号分配给客户端,所述端口资源号为0~2015之间的整数,每个端口资源号对应32个端口号,即端口资源号num包含的端口范围为。
步骤13、客户端从服务器的响应中取出端口资源号num0,并由该端口资源号num0计算出相应的八个内网端口号port1~port8,计算方式如下:由端口资源号num0,得到对应的32个端口号的范围,将该32个端口号按从大到小的顺序分成8个组a1~a8,每组包括4个连续的端口号,其中前4个组a1~a4依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,后4个组a5~a8作为内网留洞端口,依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,选取8个组a1~a8中每组的最大端口组成八个内网端口port1~port8,在选取的端口被其他程序占用时,则从该组中其余3个端口中选择一个进行替代。
进一步的,所述步骤20中获取本方NAT类型的具体步骤包括:
步骤21、进行测试1,若测试1有响应,则进入步骤22,否则,判为UDP网络阻塞,进入步骤30;
步骤22、判断客户端收到的返回消息中该客户端的外网IP和端口与该客户端的主机IP和端口是否一致,若是,则进入步骤23,否则进入步骤24;
步骤23、进行测试2,若测试2有响应,则判定为位于对称UDP防火墙后,进入步骤30,否则,判为处于公网上,进入步骤30;
步骤24、进行测试2,若测试2有响应,则判定为Full cone NAT,进入步骤30,否则,进入步骤25;
步骤25、进行测试3,判断客户端收到的返回消息中该客户端的外网IP和端口与步骤22中测试1响应后得到的该客户端的外网IP和端口是否一致,若是,则进入步骤26,否则,判为Symmetric NAT,进入步骤30;
步骤26、进行测试4,若测试4有响应,则判为Restricted Cone NAT,进入步骤30,否则,判为Port Restricted Cone NAT,进入步骤30;
上述测试1、测试2、测试3和测试4按NAT类型探测的先后顺序进行定义的。
进一步的,所述测试1为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第一端口进行响应;
所述测试2为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;
所述测试3为:客户端向stun服务器的第二IP和第二端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;
所述测试4为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第二端口进行响应。
进一步的,所述步骤30中通信双方将各自获取到的NAT类型和候选地址信息进行交换的具体方式为:客户端将本方NAT类型与本方候选地址信息封装进SIP的消息体SDP中进行交换,所述候选地址信息包括主机候选地址信息、服务器中继候选地址信息和服务器反身候选地址信息。
进一步的,所述步骤30中计算对方预测端口的具体步骤包括:
A1、设port9~port12为获取到的对方服务器反身候选地址信息中的外网端口,port13~port16为对方留洞端口在Symmetric NAT下映射的端口,判断对方是否为Symmetric NAT,若是,则进入步骤A2;否则进入步骤A3;
A2、判断对方外网端口port9~port12分别与对方内网分配的port1~port4端口是否对应一致,若是,则得到对方预测端口为{p-16,p-20,p-24,p-28},其中,,并设置标志位,进入步骤40,否则,判断对方外网端口port9~port12是否成一公差为h的等差数列,若是,则得到对方预测端口为{port12+h,port12+2h,port12+3h,port12+4h},并设置标志位,进入步骤40,否则,随机给定4个1024到65535之间的整数作为对方预测端口,进入步骤40;
A3、判断对方是否为Cone NAT,若是,则得到对方预测端口为port9~port12,并设置标志位,进入步骤40;否则,不对对方端口进行预测,直接进入步骤40。
进一步的,所述步骤A2中判断对方port9~port12分别与对方内网分配的port1~port4端口是否一致的具体步骤如下:
B1、将port9~port12依次存入数组rem_port[4]中,判断i从0到3,rem_port[i]是否逐渐减小,若是,则计算rem_port[i]对应的端口资源号,并由端口资源号res_num得到第一个端口号,并计算i从0到3时,,进入步骤B2;否则,对方port9~port12分别与对方内网分配的port1~port4端口不一致;
B2、判断是否存在,若是,则对方port9~port12分别与对方内网分配的port1~port4端口一致,否则,对方port9~port12分别与对方内网分配的port1~port4端口不一致。
进一步的,所述步骤40具体为:
步骤41、判断通信双方的外网地址是否相同,若相同,则进入步骤42,否则,进入步骤43;
步骤42、判断通信双方是否处于同一局域网下,若是,则只生成地址对是本方主机地址到对方主机地址的检测列表,进入步骤50;否则,只生成地址对为本方主机地址到对方外网地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;
步骤43、判断NAT组合类型是否为本方Symmetric NAT和对方Symmetric NAT或者为本方Symmetric NAT和对方Cone NAT,若是,则判断是否设有标志位,若已设标志位,则只生成地址对为本方主机地址到对方外网地址的检测列表,并将本方主机地址源端口修改为步骤10中的内网留洞端口,且将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址以及本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤44;
步骤44、判断NAT组合类型是否为本方Cone NAT和对方Symmetric NAT,若是,则判断是否设有标志位,则已设标志位,则只生成地址对为本方主机地址到对方外网地址的检测列表,并将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤45;
步骤45、判断NAT组合类型是否为本方Cone NAT和对方Cone NAT,若是,则判断是否设有标志位,若是,则只生成地址对为本方主机地址到对方外网地址的检测列表,进入步骤50;否则,进入步骤46;
步骤46、生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50。
进一步的,所述方法还包括步骤60、端口分配模块检测到客户端与服务器断开连接时,将端口资源回收到一资源回收缓冲区,并通过一端口回收定时模块,在计时一时间段t后将资源回收缓冲区中的端口资源进行回收,所述时间段t大于或等于NAT的映射维持时间。
进一步的,在进行NAT类型探测以及候选地址信息收集时,若存在多级NAT,则获取的NAT类型为限制型最严格的NAT类型,候选地址信息中的外网地址为最外层NAT地址,所述NAT类型按限制型的严格度从大到小依次为:Symmetric NAT、Port Restricted Cone NAT、Restricted Cone NAT、Full Cone NAT。
本发明具有如下优点:通过端口服务模块为客户端分配有规律的内网端口,再通过获取对方NAT类型以及对对方端口进行预测,有选择的生成检测列表,去除不需要的地址对,大大减少了ICE谈判时间,提高了音视频的通信效率,同时本发明还通过对对方端口进行预测,实现对称NAT下的音视频P2P,大大提高了P2P成功率。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明方法执行流程图。
图2为本发明方法中NAT类型探测流程图。
图3为本发明方法端口预测流程图。
图4为本发明方法中检测列表生成流程图。
图5为端口映射示意图。
图6为通信双方均为Symmetric NAT 时的留洞及点对点路径示意图。
图7为通信双方中一方为Symmetric NAT且另一方为 Cone NAT时的留洞及点对点路径示意图。
具体实施方式
请参阅图1至图4,一种基于SIP和ICE的音视频通信方法,所述方法需提供端口分配模块,所述端口分配模块用于为客户端分配规律的内网端口,所述方法包括如下步骤:
步骤10、通话开始,客户端向服务器发起端口分配请求,得到服务器中端口分配模块分配的八个内网端口号,所述八个内网端口号包括4个主机候选地址端口号和4个内网留洞端口号,所述步骤10进一步包括:
步骤11、通话开始,客户端与服务器建立TCP长连接,向服务器中的端口分配模块请求分配客户端所处内网的端口资源;
步骤12、端口分配模块收到请求后,从资源池中查询客户端所处内网中未使用的端口资源号,并选择未使用的端口资源号中最小的端口资源号分配给客户端,所述端口资源号为0~2015之间的整数,每个端口资源号对应32个端口号,即端口资源号num包含的端口范围为。
步骤13、客户端从服务器的响应中取出端口资源号num0,并由该端口资源号num0计算出相应的八个内网端口号port1~port8,计算方式如下:由端口资源号num0,得到对应的32个端口号的范围,将该32个端口号按从大到小的顺序分成8个组a1~a8,每组包括4个连续的端口号,其中前4个组a1~a4依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,后4个组a5~a8作为内网留洞端口,依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,选取8个组a1~a8中每组的最大端口组成八个内网端口port1~port8,即取port1~port4依次为音频RTP、音频RTCP、视频RTP和视频RTCP的内网端口,并取port5~port8依次为音频RTP、音频RTCP、视频RTP和视频RTCP的内网留洞端口,在选取的端口被其他程序占用时,则从该组中其余3个端口中选择一个进行替代,可以按端口大小定义优先级,比如按从大到小的优先顺序进行选择替换,在端口被占用时,选择剩余端口中较大的进行替换,这样对每组分配4个端口,用于弹性变化,能够在选择的内网端口被客户端其他程序占用时,弹性选择其他端口;
步骤20、启动ICE,并探测本方NAT类型并收集本方候选地址信息,其中,获取本方NAT类型的具体步骤包括:
步骤21、进行测试1,若测试1有响应,则进入步骤步骤22,否则,判为UDP网络阻塞,进入步骤步骤30;
步骤22、判断客户端收到的返回消息中该客户端的外网IP和端口与该客户端的主机IP和端口是否一致,若是,则进入步骤23,否则进入步骤24;
步骤23、进行测试2,若测试2有响应,则判定为位于对称UDP防火墙后,进入步骤30,否则,判为处于公网上,进入步骤30;
步骤24、进行测试2,若测试2有响应,则判定为Full cone NAT,进入步骤30,否则,进入步骤25;
步骤25、进行测试3,判断客户端收到的返回消息中该客户端的外网IP和端口与步骤22中测试1响应后得到的该客户端的外网IP和端口是否一致,若是,则进入步骤26,否则,判为Symmetric NAT,进入步骤30;
步骤26、进行测试4,若测试4有响应,则判为Restricted Cone NAT,进入步骤30,否则,判为Port Restricted Cone NAT,进入步骤30;
所述测试1为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第一端口进行响应;
所述测试2为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;
所述测试3为:客户端向stun服务器的第二IP和第二端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;
所述测试4为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第二端口进行响应;
步骤30、通信双方将各自获取到的NAT类型和候选地址信息进行交换,得到对方的NAT类型,将对方的NAT类型和本方的NAT类型合并成一个NAT组合类型,同时,判断对方NAT类型是否为Symmetric NAT或Cone NAT,若是,则计算对方预测端口,所述Cone NAT包括Full cone NAT、Port Restricted Cone NAT和Restricted Cone NAT,否则,直接进入步骤40;
其中,通信双方将各自获取到的NAT类型和候选地址信息进行交换的具体方式为:客户端将本方NAT类型与本方候选地址信息封装进SIP的消息体SDP中进行交换,即在SIP的消息体SDP中加入关于 NAT 类型的字段,如“a=NAT:类型值”的形式,使得SIP交换候选地址信息的同时,也交换了NAT类型信息,通信双方均可以从接受到的对方SDP中解析出对方的NAT类型,所述候选地址信息包括主机候选地址信息、服务器中继候选地址信息和服务器反身候选地址信息,所述主机候选地址信息中的端口为端口服务器分配给该客户端的主机候选地址端口号;
其中,计算对方预测端口的具体步骤包括:
A1、设port9~port12为获取到的对方服务器反身候选地址信息中的外网端口,port13~port16为对方留洞端口在Symmetric NAT下映射的端口,即port13~port16只在NAT类型为Symmetric NAT时创建的,在NAT类型为Cont NAT或其他类型时均不创建,端口的映射关系如图5所示,并将port9~port16依次存入数组rem_port[4],即rem_port[0]=port9,rem_port[1]=port10,rem_port[2]=port11,rem_port[3]=port12,判断对方是否为Symmetric NAT,若是,则进入步骤A2;否则进入步骤A3;
步骤A2、判断对方外网端口port9~port12分别与对方内网分配的port1~port4端口是否对应一致,若是,则得到对方预测端口为{p-16,p-20,p-24,p-28},其中,,并设置标志位,进入步骤40,否则,判断对方外网端口port9~port12是否成一公差为h的等差数列,即是否存在rem_port[i]-rem_port[i-1]=h(h为常数),若是,则得到对方预测端口为{port12+h,port12+2h,port12+3h,port12+4h},并设置标志位,进入步骤40,否则,随机给定4个1024到65535之间的整数作为对方预测端口;其中,判断对方外网端口port9~port12分别与对方内网分配的port1~port4端口是否对应一致的具体步骤如下:先判断i从0到3,rem_port[i]是否逐渐减小,若是,则计算rem_port[i]对应的端口资源号,并由res_num得到第一个端口号,并计算i从0到3时,;判断是否存在,若是,则判定对方port9~port12分别与对方内网分配的port1~port4端口一致,否则,直接判定对方port9~port12分别与对方内网分配的port1~port4端口不一致;
A3、判断对方是否为Cone NAT,若是,则得到对方预测端口为port9~port12,并设置标志位,进入步骤40;否则,若对方的NAT类型为其他类型或不存在NAT类型的,不对对方端口进行预测,直接进入步骤40;
步骤40、根据NAT组合类型选择相应的候选地址信息进行配对,生成检测列表;所述步骤40具体为:
步骤41、判断通信双方的外网地址是否相同,若相同,则进入步骤42,否则,进入步骤43;
步骤42、判断通信双方是否处于同一局域网下,若是,则选择本方主机地址和对方主机地址,只生成地址对是本方主机地址到对方主机地址的检测列表,进入步骤50;否则,选择本方主机地址、本方服务器中继地址、对方外网地址和对方服务器中继地址,只生成地址对为本方主机地址到对方外网地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;
步骤43、判断NAT组合类型是否为本方Symmetric NAT和对方Symmetric NAT或者为本方Symmetric NAT和对方Cone NAT,若是,则判断是否设有标志位,若已设标志位,则选择本方主机地址和对方外网地址,只生成地址对为本方主机地址到对方外网地址的检测列表,并将本方主机地址源端口修改为相应的内网留洞端口port5~port8,且将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则选择本方主机地址、本方服务器中继地址、对方主机地址、对方外网地址和对方服务器中继地址,生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址以及本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤44;
步骤44、判断NAT组合类型是否为本方Cone NAT和对方Symmetric NAT,若是,则判断是否设有标志位,则已设标志位,则选择本方主机地址和对方外网地址,只生成地址对为本方主机地址到对方外网地址的检测列表,并将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则选择本方主机地址、本方服务器中继地址、对方主机地址、对方外网地址、对方服务器中继地址,生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤45;
步骤45、判断NAT组合类型是否为本方Cone NAT和对方Cone NAT,若是,则判断是否设有标志位,若是,则选择本方主机地址和对方外网地址,只生成地址对为本方主机地址到对方外网地址的检测列表,进入步骤50;否则,进入步骤46;
步骤46、其他任意情况下,均选择本方主机地址、本方服务器中继地址、对方主机地址、对方外网地址和对方服务器中继地址,生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;
步骤50、根据检测列表进行连通性测试,建立通道。
步骤60、端口分配模块检测到客户端与服务器断开连接时,将端口资源回收到一资源回收缓冲区,并通过一端口回收定时模块,在计时一时间段t后将资源回收缓冲区中的端口资源进行回收,所述时间段t大于或等于NAT的映射维持时间。
另外,在进行NAT类型探测以及候选地址信息收集时,若存在多级NAT,则获取的NAT类型为限制型最严格的NAT类型,候选地址信息中的外网地址为最外层NAT地址,所述NAT类型按限制型的严格度从大到小依次为:Symmetric NAT、Port Restricted Cone NAT、Restricted Cone NAT、Full Cone NAT。
另外,在ICE中,将RTP和RTCP分别定义为comp1(组件1)和comp2(组件2),多媒体通道包括通信双方各自的音频RTP、音频RTCP、视频RTP和视频RTCP,即音频通道和视频通道均分别包括comp1(组件1)和comp2(组件2),本发明方法中在Symmetric NAT这种NAT类型下,加入了留洞端口的概念,若将留洞端口的4条通道中的RTP定义为comp3(组件3),RTCP定义为comp4(组件4),只有在Symmetric NAT的情况下才创建组件3和组件4,且本发明只对Symmetric NAT和Cone NAT进行端口的预测,根据本发明方法进行通信,在通信双方均为Symmetric NAT时,可以得到如图6的留洞端口及点对点路径,在通信双方中一方为Symmetric NAT且另一方为Cone NAT时得到如图7的留洞端口及点对点路径。其中,图6及图7中的虚线表示原来的点到点传输通道,在图6和图7中的两种NAT组合中,这些虚线处的传输通道在后面的ICE检测连通环节中是检测不通的,为了在这两种组合下能够实现数据流点到点传输,必须对这些点到点传输通道进行修改。假如Symmetric NAT端口分配有规律,则实线除了表示留洞作用外,还是后面ICE检测列表中本地主机地址到对方外网地址这个地址对要修改成的点到点检测路径。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (7)
1.一种基于SIP和ICE的音视频通信方法,其特征在于:所述方法需提供端口分配模块,所述端口分配模块用于为客户端分配规律的内网端口,所述方法包括如下步骤:步骤10、通话开始,客户端向服务器发起端口分配请求,得到服务器中端口分配模块分配的八个内网端口号,所述八个内网端口号包括4个主机候选地址端口号和4个内网留洞端口号;所述步骤10具体包括:步骤11、通话开始,客户端与服务器建立TCP长连接,向服务器中的端口分配模块请求分配客户端所处内网的端口资源;步骤12、端口分配模块收到请求后,从资源池中查询客户端所处内网中未使用的端口资源号,并选择未使用的端口资源号中最小的端口资源号分配给客户端,所述端口资源号为0~2015之间的整数,每个端口资源号对应32个端口号,即端口资源号num包含的端口号范围为;步骤13、客户端从服务器的响应中取出给定的端口资源号,并由该端口资源号计算出相应的八个内网端口号port1~port8,计算方式如下:由端口资源号,得到对应的32个端口号的范围,将该32个端口号按从大到小的顺序分成8个组a1~a8,每组包括4个连续的端口号,其中前4个组a1~a4依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,后4个组a5~a8作为内网留洞端口,依次分配给音频RTP、音频RTCP、视频RTP和视频RTCP,选取8个组a1~a8中每组的最大端口组成八个内网端口port1~port8,在选取的端口被其他程序占用时,则从该组中其余3个端口中选择一个进行替代;步骤20、启动ICE,并探测本方NAT类型并收集本方候选地址信息;步骤30、通信双方将各自获取到的NAT类型和候选地址信息进行交换,得到对方的NAT类型,将对方的NAT类型和本方的NAT类型合并成一个NAT组合类型,同时,判断对方NAT类型是否为Symmetric NAT或ConeNAT,若是,则计算对方预测端口,所述Cone NAT包括Full cone NAT、Port RestrictedCone NAT和Restricted Cone NAT,否则,直接进入步骤40;所述步骤30中计算对方预测端口的具体步骤包括:A1、设port9~port12为获取到的对方服务器反身候选地址信息中的外网端口,port13~port16为对方留洞端口在Symmetric NAT下映射的端口,判断对方是否为Symmetric NAT,若是,则进入步骤A2;否则进入步骤A3;A2、判断对方外网端口port9~port12分别与对方内网分配的port1~port4端口是否对应一致,若是,则得到对方预测端口为{p-16,p-20,p-24,p-28},其中,,并设置标志位,进入步骤40,否则,判断对方外网端口port9~port12是否成一公差为h的等差数列,若是,则得到对方预测端口为{port12+h,port12+2h,port12+3h,port12+4h},并设置标志位,进入步骤40,否则,随机给定4个1024到65535之间的整数作为对方预测端口,进入步骤40;A3、判断对方是否为Cone NAT,若是,则得到对方预测端口为port9~port12,并设置标志位,进入步骤40;否则,不对对方端口进行预测,直接进入步骤40;步骤40、根据NAT组合类型选择相应的候选地址信息进行配对,生成检测列表;步骤50、根据检测列表进行连通性测试,建立通道。
2.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:所述步骤20中获取本方NAT类型的具体步骤包括:步骤21、进行测试1,若测试1有响应,则进入步骤22,否则,判为UDP网络阻塞,进入步骤30;步骤22、判断客户端收到的返回消息中该客户端的外网IP和端口与该客户端的主机IP和端口是否一致,若是,则进入步骤23,否则进入步骤24;步骤23、进行测试2,若测试2有响应,则判定为位于对称UDP防火墙后,进入步骤30,否则,判为处于公网上,进入步骤30;步骤24、进行测试2,若测试2有响应,则判定为Full coneNAT,进入步骤30,否则,进入步骤25;步骤25、进行测试3,判断客户端收到的返回消息中该客户端的外网IP和端口与步骤22中测试1响应后得到的该客户端的外网IP和端口是否一致,若是,则进入步骤26,否则,判为Symmetric NAT,进入步骤30;步骤26、进行测试4,若测试4有响应,则判为Restricted Cone NAT,进入步骤30,否则,判为Port Restricted ConeNAT,进入步骤30;上述测试1、测试2、测试3和测试4按NAT类型探测的先后顺序进行定义的:所述测试1为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第一端口进行响应;所述测试2为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;所述测试3为:客户端向stun服务器的第二IP和第二端口发送请求,要求stun服务器收到请求后,用第二IP和第二端口进行响应;所述测试4为:客户端向stun服务器的第一IP和第一端口发送请求,要求stun服务器收到请求后,用第一IP和第二端口进行响应。
3.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:所述步骤30中通信双方将各自获取到的NAT类型和候选地址信息进行交换的具体方式为:客户端将本方NAT类型与本方候选地址信息封装进SIP的消息体SDP中进行交换,所述候选地址信息包括主机候选地址信息、服务器中继候选地址信息和服务器反身候选地址信息。
4.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:所述步骤A2中判断对方port9~port12分别与对方内网分配的port1~port4端口是否一致的具体步骤如下:B1、将port9~port12依次存入数组rem_port[4]中,判断i从0到3,rem_port[i]是否逐渐减小,若是,则计算rem_port[i]对应的端口资源号,并由端口资源号res_num得到第一个端口号,并计算i从0到3时,进入步骤B2;否则,对方port9~port12分别与对方内网分配的port1~port4端口不一致;B2、判断是否存在,若是,则对方port9~port12分别与对方内网分配的port1~port4端口一致,否则,对方port9~port12分别与对方内网分配的port1~port4端口不一致。
5.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:所述步骤40具体为:步骤41、判断通信双方的外网地址是否相同,若相同,则进入步骤42,否则,进入步骤43;步骤42、判断通信双方是否处于同一局域网下,若是,则只生成地址对是本方主机地址到对方主机地址的检测列表,进入步骤50;否则,只生成地址对为本方主机地址到对方外网地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;步骤43、判断NAT组合类型是否为本方Symmetric NAT和对方Symmetric NAT或者为本方SymmetricNAT和对方Cone NAT,若是,则判断是否设有标志位,若已设标志位,则只生成地址对为本方主机地址到对方外网地址的检测列表,并将本方主机地址源端口修改为步骤10中的内网留洞端口,且将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址以及本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤44;步骤44、判断NAT组合类型是否为本方Cone NAT和对方Symmetric NAT,若是,则判断是否设有标志位,则已设标志位,则只生成地址对为本方主机地址到对方外网地址的检测列表,并将目标地址端口号修改为步骤30中的对方预测端口,进入步骤50;若未设标志位,则生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50;否则,进入步骤45;步骤45、判断NAT组合类型是否为本方Cone NAT和对方Cone NAT,若是,则判断是否设有标志位,若是,则只生成地址对为本方主机地址到对方外网地址的检测列表,进入步骤50;否则,进入步骤46;步骤46、生成地址对为本方主机地址到对方外网地址、本方主机地址到对方服务器中继地址、本方服务器中继地址到对方外网地址、本方服务器中继地址到对方主机地址和本方服务器中继地址到对方服务器中继地址的检测列表,进入步骤50。
6.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:所述方法还包括步骤60、端口分配模块检测到客户端与服务器断开连接时,将端口资源回收到一资源回收缓冲区,并通过一端口回收定时模块,在计时一时间段t后将资源回收缓冲区中的端口资源进行回收,所述时间段t大于或等于NAT的映射维持时间。
7.根据权利要求1所述的一种基于SIP和ICE的音视频通信方法,其特征在于:在进行NAT类型探测以及候选地址信息收集时,若存在多级NAT,则获取的NAT类型为限制型最严格的NAT类型,候选地址信息中的外网地址为最外层NAT地址,所述NAT类型按限制型的严格度从大到小依次为:Symmetric NAT、Port Restricted Cone NAT、Restricted Cone NAT、Full Cone NAT。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510352773.0A CN105187567B (zh) | 2015-06-24 | 2015-06-24 | 一种基于sip和ice的音视频通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510352773.0A CN105187567B (zh) | 2015-06-24 | 2015-06-24 | 一种基于sip和ice的音视频通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105187567A CN105187567A (zh) | 2015-12-23 |
CN105187567B true CN105187567B (zh) | 2019-01-08 |
Family
ID=54909406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510352773.0A Active CN105187567B (zh) | 2015-06-24 | 2015-06-24 | 一种基于sip和ice的音视频通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105187567B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721570B (zh) * | 2016-02-04 | 2019-06-25 | 福建星网锐捷通讯股份有限公司 | 数据点对点传输方法及装置 |
CN105847343B (zh) * | 2016-03-21 | 2019-01-25 | 福建星网锐捷通讯股份有限公司 | 用于点对点传输的公网信息探测方法、装置及*** |
CN105827748B (zh) * | 2016-05-12 | 2019-03-15 | 东莞市南星电子有限公司 | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 |
CN106411836B (zh) * | 2016-05-30 | 2017-09-19 | 深圳市鼎盛智能科技有限公司 | 通话连接方法及客户端 |
CN108390784B (zh) * | 2018-02-13 | 2019-10-08 | 中国联合网络通信集团有限公司 | 一种资源回收的方法及装置 |
CN111385250B (zh) * | 2018-12-28 | 2022-07-19 | 浙江宇视科技有限公司 | 一种设备端口的安全访问方法及*** |
CN110730203A (zh) * | 2019-09-04 | 2020-01-24 | 华为技术有限公司 | 一种p2p通信方法及装置 |
CN111935333B (zh) * | 2020-08-12 | 2022-09-27 | 杭州萤石软件有限公司 | Nat类型的确定方法、设备、***和存储介质 |
CN115225646A (zh) * | 2021-04-21 | 2022-10-21 | 武汉斗鱼鱼乐网络科技有限公司 | 一种p2p节点推荐方法、终端、介质及计算机设备 |
CN116708358B (zh) * | 2022-10-31 | 2024-04-05 | 荣耀终端有限公司 | P2p穿越方法、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179581A (zh) * | 2007-12-13 | 2008-05-14 | 北京邮电大学 | 一种采用ice中继候选地址进行媒体传输的方法 |
CN101431511A (zh) * | 2007-11-09 | 2009-05-13 | 友讯科技股份有限公司 | 一种穿透防火墙在网络终端装置间建立联机信道的方法 |
CN102685268A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
CN102685141A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于语音可达性的融合穿越方法 |
CN103916382A (zh) * | 2013-12-25 | 2014-07-09 | 三亚中兴软件有限责任公司 | 基于sip媒体能力重协商的nat穿越方法、代理服务器和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9083587B2 (en) * | 2009-08-21 | 2015-07-14 | Cisco Technology, Inc. | Port chunk allocation in network address translation |
US9826044B2 (en) * | 2013-10-23 | 2017-11-21 | Qualcomm Incorporated | Peer-to-peer communication for symmetric NAT |
-
2015
- 2015-06-24 CN CN201510352773.0A patent/CN105187567B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431511A (zh) * | 2007-11-09 | 2009-05-13 | 友讯科技股份有限公司 | 一种穿透防火墙在网络终端装置间建立联机信道的方法 |
CN101179581A (zh) * | 2007-12-13 | 2008-05-14 | 北京邮电大学 | 一种采用ice中继候选地址进行媒体传输的方法 |
CN102685268A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于ICE协议的快速私网穿越方法 |
CN102685141A (zh) * | 2012-05-22 | 2012-09-19 | 北京邮电大学 | 一种VoIP中基于语音可达性的融合穿越方法 |
CN103916382A (zh) * | 2013-12-25 | 2014-07-09 | 三亚中兴软件有限责任公司 | 基于sip媒体能力重协商的nat穿越方法、代理服务器和*** |
Also Published As
Publication number | Publication date |
---|---|
CN105187567A (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105187567B (zh) | 一种基于sip和ice的音视频通信方法 | |
CN105827748B (zh) | 一种基于ICE的SIP穿越Symmetric NAT设备的方法 | |
CN104104742B (zh) | 使用网络地址转换和请求重定向的用户平面业务操控 | |
CN110301126A (zh) | 会议服务器 | |
CN102685268B (zh) | 一种VoIP中基于ICE协议的快速私网穿越方法 | |
CN101557388B (zh) | 一种基于UPnP和STUN技术相结合的NAT穿越方法 | |
CN100521663C (zh) | 点对点通信中穿越网络地址转换的方法 | |
CN107105026B (zh) | 一种ipv4/ipv6交换应用平台 | |
US20170180484A1 (en) | Methods and apparatus for managing the use of ip addresses | |
JP2014511089A (ja) | プライベートアドレスとパブリックアドレスのマッピング | |
CN101945127B (zh) | 一种VoIP***中的语音动态中转方法 | |
CN104852972A (zh) | 基于所发现的nat类型选择主机的方法 | |
RU2011128874A (ru) | Архитектура системы обслуживания политик для сеансов, создаваемых с использованием stun | |
CN106210092A (zh) | 一种融合upnp及stun的p2p穿越方法及其*** | |
US10178015B2 (en) | Methods, systems, and computer readable media for testing network equipment devices using connectionless protocols | |
CN111435922B (zh) | 一种带宽共享方法 | |
CN101895590A (zh) | 基于udt实现nat穿越的***和方法 | |
CN101822026A (zh) | 经由网络地址转换单元在面向分组的通信终端设备之间建立连接的方法和装置 | |
CN101047548A (zh) | 多个nat的私有网络内的通信 | |
CN108293076A (zh) | 网络端点间的媒体会话 | |
WO2012048613A1 (zh) | 支持nat穿越的集中式p2p***、nat穿越的方法 | |
CN111800341B (zh) | 一种跨路由器终端通信方法及装置 | |
CN108306986A (zh) | 多类型媒体数据网络地址转换穿越方法、终端及*** | |
US20100100630A1 (en) | Method for acquiring traversal resource, peer to peer node and peer to peer system | |
CN113542244B (zh) | 微服务调用方法、装置、服务器和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230824 Address after: Room 501, Building 15, No. 7, Keji Avenue, Houjie, Dongguan, Guangdong 523000 Patentee after: Guangdong Enweishi Technology Co.,Ltd. Address before: Dongguan Nanxing Electronics Co., Ltd., Building B, No. 3 Chengtian Road, Mintian Village, Shatian Town, Dongguan City, Guangdong Province, 523000 Patentee before: DONGGUAN SOUTHSTAR ELECTRONICS Ltd. |
|
TR01 | Transfer of patent right |