用于建立VoIP呼叫的方法和系统的利记博彩app
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种用于建立VoIP呼叫的方法和系统。
【背景技术】
[0002]VoIP是互联网上非常流行的一种应用。由于NAT设备的广泛存在,一般采用ICE (Interactive Connect1n Establishment, IETF RFC5245)技术。该技术需要通信双方客户端分别执行以下过程:
[0003]1.收集客户端本地地址和在公网上的映射地址;
[0004]2.向中转服务器请求媒体中转服务并获得中转地址;
[0005]3.上述三个候选地址通过信令交互,主被叫两端分别形成3x3的候选地址对进行有效性验证;
[0006]4.选择能够互通的地址对作为媒体通路,建立起呼叫。
[0007]上述基于ICE的呼叫建立过程可以很好地穿越全部四种NAT:Full Cone NAT, IPRestricted NAT7Port Restricted NAT以及对称型NAT,但操作步骤多,导致呼叫建立的时间比较长。经过深入分析发现,其中的有些步骤其实是冗余的。只有当主叫和被叫双方同时处于对称型NAT类型时才需要执行申请媒体中转服务和获得中转地址的相关步骤。这一操作非常费时间而且容易因中转资源不足等原因而导致呼叫失败。
[0008]通过上述分析可知,ICE流程不考虑通话双方所处的防火墙类型,导致有些步骤存在冗余,呼叫建立时间长而且有时候会因为冗余步骤的失败导致整个呼叫建立的失败。
[0009]目前在IETF研究中的Trickle ICE技术,要解决的问题是加快呼叫建立过程,但Trickle ICE采用的方式是把ICE的各个步骤并行起来,边探测地址边进行地址交换。这样做带来的一个显著缺陷就是渐进式地反复地址交换会带来大量的信令交互,产生大量信令流量,这对于移动互联网应用而言是致命的缺陷。
【发明内容】
[0010]本发明实施例提供一种用于建立VoIP呼叫的方法和系统。通过根据主叫用户终端和被叫用户终端的NAT类型选择相应的呼叫流程,从而可省略冗余的步骤,大大加快呼叫建立的速度。
[0011]根据本发明的一个方面,提供一种用于建立VoIP呼叫的方法,包括:
[0012]主叫用户终端向被叫用户终端发起呼叫时,判断自身是否为对称型NAT类型;
[0013]若主叫用户终端自身为对称型NAT类型,则主叫用户终端向呼叫服务器发送类型查询请求,以查询被叫用户终端的NAT类型;
[0014]主叫用户终端在接收到呼叫服务器发送的查询响应后,判断被叫用户终端是否为对称型NAT类型;
[0015]若被叫用户终端不为对称型NAT类型,则主叫用户终端向被叫用户终端发送第一呼叫请求,其中第一呼叫请求中包括第一候选地址,第一候选地址为主叫用户终端的本地地址和公网地址;
[0016]被叫用户终端接收到第一呼叫请求后,向主叫用户终端发送第一呼叫应答,其中第一呼叫应答包括第二候选地址,第二候选地址为被叫用户终端的本地地址和公网地址;
[0017]主叫用户终端和被叫用户终端分别利用第一候选地址和第二候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫。
[0018]在一个实施例中,主叫用户终端向被叫用户终端发送第一呼叫请求的步骤包括:
[0019]主叫用户终端查询自身的本地地址;
[0020]主叫用户终端通过STUN服务器获取自身的公网地址;
[0021]主叫用户终端将自身的本地地址和公网地址组装为第一候选地址,并向被叫用户终端发送第一呼叫请求。
[0022]在一个实施例中,被叫用户终端接收到第一呼叫请求后,向主叫用户终端发送第一呼叫应答的步骤包括:
[0023]被叫用户终端接收到第一呼叫请求后,查询自身的本地地址;
[0024]被叫用户终端通过STUN服务器获取自身的公网地址;
[0025]被叫用户终端将自身的本地地址和公网地址组装为第二候选地址,并向主叫用户终端发送第一呼叫应答。
[0026]在一个实施例中,若主叫用户终端自身不为对称型NAT类型,则执行主叫用户终端向被叫用户终端发送第一呼叫请求的步骤。
[0027]在一个实施例中,若被叫用户终端为对称型MT类型,则主叫用户终端向被叫用户终端发送第二呼叫请求,其中第二呼叫请求中包括第三候选地址,第三候选地址为主叫用户终端的本地地址和中转服务器为主叫用户终端分配的中转地址;
[0028]被叫用户终端接收到第二呼叫请求后,向主叫用户终端发送第二呼叫应答,其中第二呼叫应答包括第四候选地址,第四候选地址为被叫用户终端的本地地址和公网地址;
[0029]主叫用户终端和被叫用户终端分别利用第三候选地址和第四候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫。
[0030]在一个实施例中,主叫用户终端向被叫用户终端发送第二呼叫请求的步骤包括:[0031 ] 主叫用户终端查询自身的本地地址;
[0032]主叫用户终端向中转服务器发送媒体中转服务请求,以便中转服务器为主叫用户终端分配中转资源,并将分配的中转地址发送给主叫用户终端;
[0033]主叫用户终端在接收到中转服务器提供的中转地址时,将自身的本地地址和中转服务器为主叫用户终端分配的中转地址组装为第三候选地址,并向被叫用户终端发送第三呼叫请求。
[0034]在一个实施例中,被叫用户终端接收到第二呼叫请求后,向主叫用户终端发送第二呼叫应答的步骤包括:
[0035]被叫用户终端接收到第二呼叫请求后,查询自身的本地地址;
[0036]被叫用户终端通过STUN服务器获取自身的公网地址;
[0037]被叫用户终端将自身的本地地址和公网地址组装为第四候选地址,并向主叫用户终端发送第四呼叫应答。
[0038]在一个实施例中,若被叫用户终端为对称型MT类型,则主叫用户终端向被叫用户终端发送第二呼叫请求,其中第二呼叫请求中包括第五候选地址,第五候选地址为主叫用户终端的本地地址和公网地址;
[0039]被叫用户终端接收到第二呼叫请求后,向主叫用户终端发送第二呼叫应答,其中第二呼叫应答包括第六候选地址,第六候选地址为被叫用户终端的本地地址和中转服务器为被叫用户终端分配的中转地址;
[0040]主叫用户终端和被叫用户终端分别利用第五候选地址和第六候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫。
[0041]根据本发明的另一方面,提供一种用于建立VoIP呼叫的系统,包括主叫终端、呼叫服务器和被叫终端,其中:
[0042]主叫用户终端,用于在向被叫用户终端发起呼叫时,判断自身是否为对称型NAT类型;若自身为对称型NAT类型,则向呼叫服务器发送类型查询请求;在接收到呼叫服务器发送的查询响应后,判断被叫用户终端是否为对称型NAT类型;若被叫用户终端不为对称型NAT类型,则向被叫用户终端发送第一呼叫请求,其中第一呼叫请求中包括第一候选地址,第一候选地址为主叫用户终端的本地地址和公网地址;在接收到被叫用户终端发送的第一呼叫应答后,利用第一候选地址和第二候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫;
[0043]呼叫服务器,用于在接收到类型查询请求后,查询被叫用户终端的NAT类型,并向主叫用户终端发送查询响应,查询响应中包括查询结果;
[0044]被叫用户终端,用于在接收到第一呼叫请求后,向主叫用户终端发送第一呼叫应答,其中第一呼叫应答包括第二候选地址,第二候选地址为被叫用户终端的本地地址和公网地址;利用第一候选地址和第二候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫。
[0045]在一个实施例中,系统还包括STUN服务器,其中:
[0046]主叫用户终端具体在向被叫用户终端发送第一呼叫请求时,查询自身的本地地址;通过STUN服务器获取自身的公网地址;将自身的本地地址和公网地址组装为第一候选地址,并向被叫用户终端发送第一呼叫请求;
[0047]STUN服务器,用于向主叫用户终端提供主叫用户终端的公网地址。
[0048]在一个实施例中,被叫用户终端具体在接收到第一呼叫请求后,查询自身的本地地址;通过STUN服务器获取自身的公网地址;将自身的本地地址和公网地址组装为第二候选地址,并向主叫用户终端发送第一呼叫应答;
[0049]STUN服务器还用于向被叫用户终端提供被叫用户终端的公网地址。
[0050]在一个实施例中,主叫用户终端还用于在自身不为对称型NAT类型时,执行向被叫用户终端发送第一呼叫请求的操作。
[0051]在一个实施例中,主叫用户终端还用于在被叫用户终端为对称型NAT类型时,向被叫用户终端发送第二呼叫请求,其中第二呼叫请求中包括第三候选地址,第三候选地址为主叫用户终端的本地地址和中转服务器为主叫用户终端分配的中转地址;当接收到被叫用户终端发送的第二呼叫应答后,用第三候选地址和第四候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫;
[0052]被叫用户终端还用于在接收到第二呼叫请求后,向主叫用户终端发送第二呼叫应答,其中第二呼叫应答包括第四候选地址,第四候选地址为被叫用户终端的本地地址和公网地址;利用第三候选地址和第四候选地址进行有效性验证,以便选择能够互通的地址对作为媒体通路以建立呼叫。
[0053]在一个实施例中,系统还包括中转服务器,其中:
[0054]主叫用户终端具体在向被叫用户终端发送第二呼叫请求时,查询自身的本地地址,向中转服务器发送媒体中转服务请求;在接收到中转服务器提供的中转地址时,将自身的本地地址和中转服务器分配的中转地址组装为第三候选地址,并向被叫用户终端发送第三呼叫请求;
[0055]中转服务器,用于在接收到媒体中转服