虚拟网路间点对点直接互通的通讯协议 【技术领域】
本发明有关一种在网际网路(Internet)上,以传输控制协议(TCP/IP)为基础的通讯协议,特别是关于一种在虚拟网路间点对点(Peer to Peer,P2P)直接互通的通讯协议。
背景技术
由于网际网路快速发展,以致使用第四版网际网路协议(IPV4)的四码寻址空间已不敷使用,为了解决此问题,网路位址转换(Network AddressTranslation,NAT)协议被大量采用于路由器(Router)的设计。
使用NAT路由器时,对外只需要一组真实IP位址,对内却可扩展出无限多的虚拟IP位址,且经由NAT路由器的转换,虚拟IP位址的使用者可以完全对外界的真实IP位址作连线与资料存取,但外界的真实IP位址却无法主动与虚拟IP位址作连线与数据存取,因此NAT路由器除了解决真实IP位址不足的问题外,它同时具有网路安全的防火墙功能,因此超过90%以上的企业均使用NAT路由器,以解决IP位址不足以及网路安全的问题。
再者,随着网路的蓬勃发展与因网的普及,使得传统主从式(client-Server)的网路连线架构渐渐转向点对点(Peer to Peer,P2P)通讯架构,但因为大量使用者均位于虚拟IP环境下,因此虚拟IP环境成为点对点通讯的重大瓶颈,过去两大网路电话通讯协议H.323与SIP均无法有效解决虚拟IP间直接通讯的问题。
在网际网路的通讯协议上,由于虚拟IP位址乃私有且不合法的网址,真实IP位址无法主动连线虚拟IP位址。目前解决虚拟IP位址之间的方式是利用一代理服务器(Proxy Server)来传送封包,但此方式却有频宽限制的缺点;另一方式则是结合代理服务器及NAT路由器,并增设一些软件来处理,但此种技术受限,且有时NAT路由器并不提供外挂代理服务器。这二种方式虽可解决虚拟IP位址的问题,但却无法应用于虚拟网路间地点对点直接通讯;因此,习知并无揭露虚拟网路间点对点直接通讯的相关技术,而本发明即在提出一种虚拟网路间点对点直接互通的通讯协议。
【发明内容】
本发明的主要目的,是在提供一种特殊的网际网路通讯协议,此通讯协议可以使虚拟网路间点对点封包直接互通,完全不需透过第三者或代理服务器转送,以解决目前网路电话标准无法适用于虚拟网路环境的问题。
本发明的另一目的,是在提供一种虚拟网路间点对点直接互通的通讯协议,其是可广泛应用于网路电话、影像电话以及网路电信局等领域。
本发明所揭示的通讯协议实施于网际网路上,其是包含三道程序,分别为:登入程序、测试NAT程序、以及资料直接互通程序,其中,登入程序与测试NAT程序需透过位于真实网际网路的定位服务器协助,并侦测NAT路由器参数程序之后,才能进行资料互通程序,此程序是由两个虚拟IP网路点间直接资料封包互通,完全不需透过代理(ProXy)服务器的协助,即可虚拟点对虚拟点来直接进行通讯。
本发明的技术方案为:一种虚拟网路间点对点直接互通的通讯协议,包括下列程序:
(A)登入程序,虚拟IP使用者是与真实IP的定位服务器保持一连线状态;
(B)测试网路位址转换NAT程序,包含:
(B1)第一虚拟IP的呼叫端是通过该定位服务器,取得其所在地的第一NAT路由器的来源端通讯端口信息,并透过该定位服务器将该第一NAT路由器的来源端通讯端口信息传至第二虚拟IP的被叫端;以及
(B2)该第二虚拟IP的被叫端收到该呼叫端的来源端通讯端口信息后,立刻由该定位服务器取得其所在地的第二NAT路由器的来源端通讯端口信息,并利用该定位服务器将第二NAT路由器的来源端通讯端口信息回传给该第一虚拟IP的呼叫端;以及
(C)资料互通程序,位于该第一虚拟IP与第二虚拟IP的双方互相传送资料封包给对方的NAT路由器,其是包含二种情况:
(C1)若该第一虚拟IP先送出该数据封包,则其将被第二NAT路由器丢弃,且同时该第一NAT路由器的传输通道因而开启,使该第二虚拟IP随后传送的数据封包将透过该传输通道直接进入,以完成数据直接互通程序;以及
(C2)若该第二虚拟IP先送出该数据封包,则其将被该第一NAT路由器丢弃,且同时该第二NAT路由器的传输通道因而开启,使该第一虚拟IP随后传送的数据封包将透过该传输通道直接进入,以完成数据直接互通程序。
本发明的另一方案包括下列程序:
(A)登入程序,虚拟IP使用者是与真实IP的定位服务器保持一连线状态;
(B)测试网路位址转换NAT程序,包含:
(B1)第一虚拟IP的呼叫端是通过第一定位服务器,取得其所在地的第一NAT路由器的来源端通信端口信息;
(B2)该第一虚拟IP是透过该第一定位服务器将该第一NAT路由器的来源端通讯端口信息传至一第二定位服务器;
(B3)该第二虚拟IP的被叫端透过该第二定位服务器收到该呼叫端的来源端通讯端口信息后,立刻由该第二定位服务器取得其所在地的第二NAT路由器的来源端通讯端口信息;以及
(B4)该第二虚拟IP利用该第二定位服务器将第二NAT路由器的来源端通讯端口信息回传给该第一定位服务器,进而传送至该第一虚拟IP的呼叫端;以及
(C)资料互通程序,位于该第一虚拟IP与第二虚拟IP的双方互相传送资料封包给对方的NAT路由器,其是包含二种情况:
(C1)若该第一虚拟IP先送出该数据封包,则其将被第二NAT路由器丢弃,且同时该第一NAT路由器的传输通道因而开启,使该第二虚拟IP随后传送的数据封包将透过该传输信道直接进入,以完成数据直接互通程序;以及
(C2)若该第二虚拟IP先送出该数据封包,则其将被该第一NAT路由器丢弃,且同时该第二NAT路由器的传输通道因而开启,使该第一虚拟IP随后传送的数据封包将透过该传输信道直接进入,以完成数据直接互通程序。
【附图说明】
图1为本发明于虚拟网路间点对点直接互通的示意图。
图2为本发明的虚拟网路间点对点直接互通的通讯协议示意图。
图3为本发明的简化型通讯协议的示意图。
图4为本发明的分散服务器型通讯协议的示意图。
图号说明
10 第一虚拟网路 12 第二虚拟网路
14 第一NAT路由器 16 真实网际网路
18 第二NAT路由器 20 定位服务器
22 第一定位服务器 24 第二定位服务器
【具体实施方式】
本发明是提出一种特殊的网际网路通讯协议,此通讯协议可以让虚拟网路间点对点封包直接互通,完全不需透过第三者或代理服务器(Proxy)转送,故可解决目前网路电话标准无法适用于虚拟网路环境的问题。
图1为本发明于虚拟网路间点对点直接互通的示意图,如图所示,第一虚拟网路10及第二虚拟网路12是分别属于不同的虚拟网路,且第一网路位址转换(NAT)路由器14为第一虚拟网路10与真实网际网路16间转换通讯的桥梁,第二NAT路由器18则为第二虚拟网路12与真实网际网路16间的转换通讯桥梁,其中,第一虚拟网路10与第二虚拟网路12中的A、B两点的封包可以经由网际网路16直接互相传送,此种通讯技术可广泛应用于网路电话、影像电话、点对点通讯系统以及网路电信局等。
本发明所提出的网路通讯协议如图2所示,第一虚拟IP(如图所示的A点,以下称之为A)、第一虚拟IP(如图所示的B点,以下称之为B)代表位于第一虚拟网路10与第二虚拟网路12内的通讯点,第一NAT路由器14与第二NAT路由器18则分别为第一虚拟网路10与第二虚拟网路12对外界真实网际网路16通讯的路由器,一定位服务器(Location Server)20则为一协助建立通讯的服务器。第一虚拟网路10内的A欲主动与第二虚拟网路12内的B直接互通需历经17道步骤,底下将分为:登入程序、测试NAT程序、以及资料互通程序等三大部份,并配合图2所示的流程来详细说明本发明的各个步骤。
一、登入程序:
步骤1:A是使用传输控制协议(Transmission Control Protocol,TCP)或用户数据报协议(User Datagram Protocd,UDP)向定位服务器20建立并保持连线。
步骤2:B是使用TCP或UDP向定位服务器20建立并保持连线。
二、测试NAT程序:
步骤3:A使用UDP向定位服务器20送出测试封包。
步骤4:定位服务器20回复测试封包的来源端通讯端口(Source Port)信息号码x1给A。
步骤5:A使用UDP再度向定位服务器20送出另一组测试封包。
步骤6:定位服务器20再度回复该测试封包的来源端通讯端口信息号码x2给A。
步骤7:A将x2与差异值dx2(=x2-x1)信息送给定位服务器20。
步骤8:定位服务器20将X2与dx2透过登入程序的连线传送给B。
步骤9:接着,B使用UDP向定位服务器20送出一组测试封包。
步骤10:定位服务器20回复测试封包的来源端通讯端口号码叫给B。
步骤11:B使用UDP再度向定位服务器20送出另一组测试封包。
步骤12:定位服务器20再回复测试封包的来源端通讯端口号码y2给B。
步骤13:B将y2与差异值dy2=(y2-y1)信息送给定位服务器20。
步骤14:定位服务器20将y2与dy2透过登入程序的连线传送给A。
三、资料互通程序:
步骤15:B使用目的端通讯端口(Destination Port)为x2+dx2的UDP数据封包送给第一NAT路由器14,此资料封包将被第一NAT路由器14抛弃。
步骤16:A使用目的端通讯端口为y2+dy2的UDP数据封包送给第二NAT路由器18,此资料封包将被第二NAT路由器18直接转送给B,因而完成直接互通程序。
步骤17:B回复A,使A与B双方进行资料直接互通。
由图2所列的通讯协议,在两个虚拟IP点(A与B)直接通讯之前,需经由定位服务器20协助作登入以及侦测NAT路由器14、18参数程序后,始能直接虚拟点对虚拟点通讯。但是,登入程序几乎不占用频宽资源,而侦测NAT路由器14叫参数程序可在极短时间内完成,几乎不占用连线时间,最后两个虚拟IP点之间可长时间大量资料直接通讯,完全不需代理服务器协助作转送,此通讯协议对于点对点(P2P)通讯系统为一重大技术突破。
图2提出的通讯协议乃针对NAT协议的路由器所设计,由于NAT路由器乃将虚拟IP位址所发出的封包,改变其来源端IP位2址(Source IP Address)与来源端通讯端口(Source Port)等两项资料,以便封包资料能在真实网际网路环境下传送,而远程回复的封包资料即可透过NAT路由器作反向转换,以便回复给来源虚拟IP位址。
另外,由于系统设计方便与效率的考量,大多数的NAT路由器对于新封包进行来源端通讯端口更换时,会采用连续且加一的通讯端口编号,因此前述的通讯协议中,dx2与dy2的值通常为1,因此本发明是可采用“简化型通讯协议”,如图3所示,下列将针对简化型通讯协议加以说明。
简化型通讯协议:
此种型式的通讯协议是将图2通讯协议中的步骤3、4、9及10予以省略,且将dx2与dy2设定成1,如图3所示,A仅需向定位服务器20送出一组测试封包,使定位服务器20回复测试封包的来源端通讯端口号码x1给A,无须再送出另一组测试封包;相同地,B亦仅需向定位服务器20送出一组测试封包即可取得其来源端通讯端口号码y1,并利用x1+1(dx2)以及y1+1(dy2)分别为目的端通讯端口,以利A、B两端进行数据直接互通:其余步骤是与前述内容相同,故于此不再赘述。
再者,若虚拟IP内的使用者过多,将造成定位服务器负荷过重,且若虚拟IP使用者分布于全球,长距离通讯,将造成测试封包程序延迟(Delay)时间过长,容易通讯失败,因此本发明亦可采用“分散服务器型通讯协议”,如图4所示,下列将针对分散服务器型通讯协议加以说明。
分散服务器型通讯协议:
此种通讯协议是将图2通讯协议中的定位服务器20分成两个,第一定位服务器22及第二定位服务器24,并增加步骤7-1与13-1,以作不同服务器间资料传送,如图4所示,下列将详细说明分散服务器型通讯协议的流程。
一、登入程序:
步骤1:A是使用TCP或UDP向第一定位服务器22建立并保持连线。
步骤2:B是使用TCP或UDP向第二定位服务器24建立并保持连线。
二、测试NAT程序:
步骤3:A使用UDP向第一定位服务器22送出测试封包。
步骤4:第一定位服务器22回复测试封包的来源端通讯端口信息号码x1给A。
步骤5:A使用UDP再度向第一定位服务器22送出另一组测试封包。
步骤6:第一定位服务器22再度回复该测试封包的来源端通讯端口号码x2给A。
步骤7:A将X2与差异值dx2(=x2-x1)信息送给第一定位服务器22。
步骤7-1:第一定位服务器22将A送来的x2与dx2信息转送给第二定位服务器24。
步骤8:第二定位服务器24将x2与dx2透过登入程序的连线传送给B。
步骤9:B使用UDP向第二定位服务器24送出一组测试封包。
步骤10:第二定位服务器24回复测试封包的来源端通讯端口号码传送给B。
步骤11:B使用UDP再度向第二定位服务器24送出另一组测试封包。
步骤12:第二定位服务器24再回复测试封包的来源端通讯端口号码y2给B。
步骤13:B将y2与差异值dy2(=y2-y1)信息送给第二定位服务器24。
步骤13-1:第二定位服务器24将B送来的y2与dy2信息转送给第一定位服务器22。
步骤14:第一定位服务器22将y2与dy2透过登入程序的连线传送给A。
三、资料互通程序:
步骤15:B使用目的端通讯端口为x2+dx2的UDP数据封包送给第一NAT路由器14,此资料封包将被第一NAT路由器14抛弃。
步骤16:A使用目的端通讯端口为y2+dy2的UDP数据封包送给第二NAT路由器18,此资料封包将被第二NAT路由器18直接转送给B,因而完成直接互通程序。
步骤17:B回复A,使A与B双方进行资料直接互通。
由于NAT路由器内的虚拟IP使用者可能非常多,封包流量亦可能非常多,在图2、图3及图4所示的通讯协议中,A端作步骤5与步骤16中间若被其它虚拟IP使用者插队送出新封包将造成A、B两端直接通讯失败,同样地,若B端作步骤11与步骤15中间被其它虚拟IP使用者插队送出新封包亦将造成A、B两端直接通讯失败,为解决此可能出现的问题,本发明是采用“改良型通讯协议”,其详细资料如下列表一所列,其中表一的“A端的来源端通讯端口非连续状况”是表示A端在步骤5与16中间被其它虚拟IP使用者插队送出新封包的状况,0代表没有被插队,2代表被两组其它虚拟IP的新封包插队;而“B端的来源端通讯端口非连续状况”则表示B端在步骤11与15中间被其它虚拟IP使用者插队送出新封包的状况,0代表没有被插队,2代表被两组其它虚拟IP的新封包插队。由于A端在步骤5与16间的时间差比B端在步骤5与16间的时间差长了许多,因此A端较容易被插队,本发明可根据需求调整表一的k值以及“A端来源端通讯端口非连续状况”的内容,以增加通讯成功的机率。
表一UDP封包顺序编号 A端送出UDP的目的 端通信端口 B端送出UDP的目的 端通信端口A端来源端通信端口非连续状 况B端来源端通信端口非连续状 况1 y2+dy2 x2+dx2 0 02 y2+2*dy2 x2+3*dx2 1 03 y2+4*dy2 x2+3*dx2 0 14 y2+5*dy2 x2+5*dx2 1 15 y2+5*dy2 x2+7*dx2 2 06 y2+8*dy2 x2+6*dx2 0 2... ... ... ... ...K y2+(k+k2)dy2 x2+(k+k1)dx2 k1 k2
改良型通讯协议:
在图2、图3以及图4所示的通讯协议中,将步骤15与16改为连续发送k笔不同目的端通讯端口的UDP封包至对方的NAT路由器上,而A与B所送的k笔UDP封包的目的端通讯端口号码如表一所示,A端于步骤16发送的k笔UDP封包,其中将只有一笔会成功送达B端,因而完成直接通讯程序。
因此,本发明提出一种“虚拟网路间点对点直接互通的通讯协议”是一种全新的协议,且此通讯协议可以使虚拟网路间点对点封包直接互通,完全不需透过第三者或代理服务器转送,以解决目前网路电话标准无法适用于虚拟网路环境的问题,并有效应用于网路电话、影像电话以及网路电信局等领域中。
以上所述的实施例仅是为说明本发明的技术思想及特点,其目的在使熟习此项技艺的人士能够了解本发明的内容并据以实施,当不能以此限定本发明的专利范围,即大凡依本发明所揭示的精神所作的均等变化或修饰,仍应涵盖在本发明的专利范围内。