背景技术
由于公共IP地址缺少,并且由于网络安全的原因,NAT技术被大量使用。NAT能让很多台计算机共享同一公网IP地址,无障碍的访问网络。为了能让处于私有网络的计算机访问外网,NAT需要将私网的IP地址和端口号映射到公网的一个IP和端口,而且这个映射将保留一段时间。NAT建立映射时将设置定时器。如果在定时器超时时,没有任何数据活动,这个映射绑定关系将被取消。如果在定时器超时前,有数据包的传递,定时器将被重新刷新。一旦绑定关系取消,从公网侧,数据包将无法发往到私网内的计算机。
因为NAT的特性,对于需要保持实时数据链接的数据应用(如IP电话),处于私网下的客户端软件需要定时的与处于公网的服务器交换数据包,以刷新NAT的绑定。否则,服务器无法将IP包发往客户端,而引起服务中断。
在无线通讯环境下,定时发送数据包到公网的服务器需要消耗相当的带宽和电池。因此本专利提出一种新的方式来保持NAT的映射,而最大程度上减少移动终端的带宽和电池的消耗。
图1显示了现有的移动终端上网的系统图,移动终端10通过各类无线网络11与互联网(包括NAT0 12、INET网13、NATN 14、INET网15及计算设备16)链接,然后通过互联网与处于公网下的计算设备进行IP数据交换。在移动终端10与公网下的计算设备16之间会存在一个或多个NAT设备,比如NAT 0和NAT N。
处于私网下的移动终端10如果要与公网下的计算设备进行IP数据包(分组)的交换,移动终端10必须主动发起链接请求,建立起IP链路。NAT设备将建立起IP地址和端口的映射关系。为简单起见,下面将IP地址和端口号统一称为地址。假设移动终端的私有地址是IP-p、Port-p,NAT 0映射出的地址为IP-0、Port-0,NAT N映射的地址为IP-n、Port-n.从计算设备来看,移动终端的IP地址为IP-n、Port-n;从NAT N来看,移动终端的地址为IP-0、Port-0;从NAT 0来看,移动终端的地址为IP-p、Port-p。
当NAT 0建立起IP-p,Port-p与IP-0,Port-p的映射后,NAT N建立起IP-0,Port-0与IP-n,Port-n的映射关系后,移动终端与计算设备之间可以自由的交换在某一特定端口号的IP包或数据包。但是为了减小资源的消耗,每个NAT设备对于这个映射关系是做了时间限制的。如果在指定的时间(假设为T0)内没有任何数据活动,这个映射关系将被取消。这个T0的设置没有国际标准,随厂商而异。一般来说,对于UDP包,T0在60秒左右,对于TCP包,T0稍长一点。一旦IP链路上任何一个NAT设备将IP地址映射解除,计算设备将无法主动把IP包发到移动终端,从此数据交换将被终止。
在NAT存在的情况下,移动终端10与计算设备16之间要不停的有数据包的交换,这对于VoIP,IM等实时数据通讯而言十分重要。如果是使用UDP/IP来传输,两者之间需要60秒内交换一次IP包;如果使用TCP/IP来传输,两者之间交换包的时间间隔可以稍长一点,但计算设备使用TCP来传输,将耗费很大的资源。
TTL(Time to Live,生存时间):在IP头(或数据包头)中,存在TTL这个域。当路由器或NAT接收到一个IP包,转发时,总将TTL减一。如果网络设备收到一个IP包,TTL值为0,该设备将会把该IP包扔弃,不继续转发。
按照现有已知的方法,如果要保持NAT映射,移动终端与计算设备之间需要不断的交换数据包。对于PC而言,这不是问题。但对于移动终端而言,将消耗移动终端宝贵的电池、带宽以及宝贵的空中无线资源。因为每次接收或发送IP包,移动终端都需要打开射频模块,激活天线,申请空中无线资源。
发明内容
本发明的目的是提供一种保持网络NAT绑定的方法,通过保持网络NAT绑定来维持移动终端与IP网络如互联网的计算设备的数据链路。
本发明所称的保持网络NAT绑定是指通过由互联网方的计算设备发送心跳包来绑定NAT的地址映射。
本发明的保持网络NAT绑定的方法包括以下步骤:
移动终端通过主动发起连接请求建立经由无线网、连接无线网的边缘NAT路由器、一个或多个其他路由器至计算设备的链路;
所述边缘NAT路由器把来自移动终端的数据包源地址映射成边缘NAT路由器的源地址以及把来自计算设备的数据包的目的地址映射成移动终端的目的地址,并在第一时段内保持所述两个地址映射;
所述计算设备按照其时段小于所述第一时间段的时间间隔向所述计算设备发送一个心跳包,使所述心跳包中的生存时间TTL设定值到达所述边缘NAT路由器时递减为0,以便利用计算设备发送的心跳包保持边缘NAT路由器的地址映射,从而维持从所述移动终端至计算设备的所述链路;
其中,所述心跳包的生存时间TTL设定值为来自移动终端的数据包到达所述计算设备所经过的包括边缘NAT路由器在内的所有路由器的跳数(Hops)。
其中所述计算设备通过以下步骤设置心跳包生存时间TTL设定值:
当收到来自移动终端的移动终端数据包时,解析出其当前TTL值V1;
将移动终端数据包的TTL标称值V0减去所述当前TTL值V1得到跳数;
然后,把所述跳数设为心跳包的TTL设定值。
其中当所述心跳包经过所述链路上的每个路由器转发时,该路由器将心跳包中的生存时间TTL设定值递减一,以致数据包到达所述边缘NAT路由器时,所述心跳包因为其生存时间TTL设定值被递减为0而被丢弃,使得所述心跳包仅起到保持所述边缘NAT路由器地址映射的(数据活动)作用,但数据包不会下发到移动终端,而减少对移动终端电池和空中资源的消耗。
其中所述计算设备通过以下步骤设置心跳包生存时间TTL的设定值:
当收到来自移动终端的移动终端数据包时,解析出其中的当前TTL值V1;
将移动终端数据包的TTL标称值V0减去所述当前TTL值V1得到跳数V;
把跳数V+调整值D设为心跳包的TTL初始值ttl;
然后通过与移动终端进行发送-响应通信,调整心跳包TTL初始值ttl,直至获得移动终端1不能响应的TTL值,以作为心跳包的TTL设定值。
其中所述发送-响应通信包括:计算设备向移动终端发送包含TTL初始值(ttl)的心跳包,移动终端响应后回送响应包;计算设备收到移动终端回送的响应包后,将心跳包的TTL初始值减一;然后计算设备把TTL初始值减一的心跳包发送给移动终端,移动终端响应后再回送响应包;此后,重复计算设备将TTL减一后发送心跳包及移动终端响应回送响应包的操作,直至计算设备把TTL初始值递减到移动终端不能响应回送响应包时的数值。
其中所述移动终端设有响应并回送响应包的响应模块。
其中所述移动终端通过光盘或网络下载方式安装所述响应模块。
根据本发明的第一实例,本发明的保持网络NAT绑定的方法可以包括以下步骤:
移动终端通过主动发起连接请求建立经由无线网、连接无线网的边缘NAT路由器、一个或多个其他路由器至计算设备的链路;
所述边缘NAT路由器把来自移动终端的数据包源地址映射成本机源地址以及把来自计算设备的数据包的目的地址映射成移动终端的目的地址,并在第一时段内保持所述两个地址映射;
所述计算设备按照其时段小于所述第一时间段的时间间隔向所述计算设备发送一个心跳包,使所述心跳包中的生存时间TTL设定值到达所述边缘NAT路由器时递减为0,以便利用计算设备发送的心跳包保持边缘NAT路由器的地址映射,从而维持从所述移动终端至计算设备的所述链路,但心跳包又不会被下发到移动终端;
其中所述计算设备按以下步骤设置所述生存时间TTL设定值:
当收到来自移动终端的移动终端数据包时,解析出其当前TTL值V1;
将移动终端数据包的TTL标称值V0减去所述当前TTL值V1得到跳数;
然后,把所述跳数设为心跳包的TTL设定值。
根据本发明的第一实例,本发明的保持网络NAT绑定的方法可以包括以下步骤:移动终端通过主动发起连接请求建立经由无线网、连接无线网的边缘NAT路由器、一个或多个其他路由器达到计算设备的链路;所述边缘NAT路由器把来自移动终端的数据包源地址映射成本机源地址以及把来自计算设备的数据包的目的地址映射成移动终端的目的地址,并在第一时段内保持所述两个地址映射;所述计算设备按照其时段小于所述第一时间段的时间间隔向所述计算设备发送一个心跳包,使所述心跳包中的生存时间TTL设定值到达所述边缘NAT路由器时递减为0,以便利用计算设备发送的心跳包保持边缘NAT路由器的地址映射,从而维持从所述移动终端至计算设备的所述链路;其中所述计算设备按以下步骤设置所述生存时间TTL设定值:
当收到来自移动终端的移动终端数据包时,解析出其中的当前TTL值V1;
将移动终端数据包的TTL标称值V0减去所述当前TTL值V1得到跳数V;
把跳数V+调整值D设为心跳包的TTL初始值ttl;
然后通过与移动终端进行发送-响应通信,调整心跳包TTL初始值ttl,直至获得移动终端不能响应时的TTL值,以作为心跳包TTL的设定值。
其中所述发送-响应通信包括:计算设备向移动终端发送包含TTL初始值ttl的心跳包,移动终端响应后回送响应包;计算设备收到移动终端回送的响应包后,将心跳包的TTL初始值减一;然后计算设备把TTL初始值减一的心跳包发送给移动终端,移动终端响应后再回送响应包;此后,重复计算设备将TTL减一后发送心跳包及移动终端响应回送响应包的操作,直至计算设备把TTL初始值递减到移动终端不能响应回送响应包时的数值。
在上述方法中,所述移动终端按照其时段大于所述第一时段的间隔向所述计算设备发送数据包,以便计算设备利用该数据包获得适应链路中断、路由改变等意外事件的TTL值。
采用本发明的上述方法可以保持NAT地址映射,从而解决了现有技术中存在的移动终端需要频繁收发IP包的技术问题。
下面结合附图对本发明进行详细说明。
具体实施方式
本发明的原理是,在移动终端与计算设备之间的IP链路建立后,计算设备每隔一定的时间(Tp)发送特定的IP包(以下称之为“心跳包”)给移动终端,这个Tp小于移动终端与计算设备之间所有NAT设备的T1。而且这个特定的心跳包里的TTL值设为一特殊量,为移动终端与计算设备之间的跳数(hops)。这样当NAT 0收到计算设备的这个特殊的心跳时,TTL值已经为1,减一后,TTL值为零,因此NAT 0将会扔弃这个心跳包,而不会把这个心跳包发送到移动终端,从而保证移动终端的无线资源没有被激活,而节省了移动终端的电池、带宽以及空中无线资源。但是因为在NAT的T1定时器超时之前,NAT设备收到来自计算设备发往移动终端的心跳包,连接无线网的NAT以及链路上所有的其他NAT设备将仍然保留移动终端的IP映射,因此计算设备仍然能够将正常的IP包(数据包)发往移动终端。
本发明的心跳包也可以称作NAT绑定包,除了TTL设定值由计算设备根据跳数设定外,其格式遵从移动终端或移动终端与网络计算设备之间传输的数据包格式。此外,在心跳包或NAT绑定包还可以设置一个表示用于绑定PAT的绑定标识符。
本发明对移动终端与计算设备之间正常交换的IP包的TTL值不做任何特殊处理。
本发明可以通过以下方法获取跳数:
计算设备发送心跳包时,需要知道计算设备与移动终端之间的跳数,包括以下步骤:
1、当移动终端发IP包到计算设备时,应用数据里面(非IP、或TCP、UDP头)包含一个新的数据域,TTL值V0。也就是移动终端发出的这个IP包里TTL的数值(如64)。
2、当计算设备收到移动终端的IP包后,检测IP头,从中找出其当前TTL数值V1。
3、移动终端与计算设备之间的跳数为V0-V1.计算设备的心跳包的TTL值将设为ttl=V0-V1。
因为各大NAT设备厂商没有统一的标准,心跳包的TTL值设为V0-V1不完全可靠。因而可以还可以采取以下步骤获得跳数:
1、当计算设备第一次发包到计算设备时(如注册时),计算设备将心跳包的TTL值初始化为ttl=V0-V1+D,D可以设为5左右,比如2~7。
2、移动终端收到计算设备的心跳包后,将回送一个心跳包,TTL为正常值(如64)。
3、如果计算设备收到来自移动终端的心跳包,将把下一个心跳包的ttl值减一。
4、通过几个来回,计算设备在心跳包里将设置精确的ttl值,以保证这个心跳包到达NAT 0时,TTL值已经变为1,从而被NAT 0扔弃。
对于VoIP,IM或其他实时消息服务,在NAT存在的情况下,移动终端需要在60秒内主动发一IP包到计算设备以维持NAT设备里的映射关系。这相当于每隔60秒发起一次主动呼叫,空中资源以及手机的电池将被大大的消耗。
利用本发明的方法,移动终端或移动设备将无需每隔一定时间发送IP包来保持NAT设备里的映射关系。但是因为无线数据链路的复杂性,移动终端的的无线连接完全可以被中断,而计算设备无法探测到,因此移动终端仍然需要每隔一定的时间(T1)发送IP包给计算设备,以刷新IP链路。这个时间间隔T1远远大于计算设备的心跳包的时间间隔Tp.对于UDP/IP连接,Tp为20秒量级,但T1可以是20分钟量级。具体数字由实施者自行决定。
图2显示了解释本发明方法的系统,下面结合图2对本发明的方法进行详细说明。
在图2中,移动终端1可以是GPRS手机、TD-SCDMA手机、WCDMA手机、CDMA2000手机,也可以是WIFI手机或WiWAX手机。无线网2可以是适应上述手机的无线网络。计算设备5可以使IP网络中的服务器或计算机,移动终端1通过向计算设备5主动发起连接请求,建立从移动终端至计算设备5的数据链路。边缘NAT路由器3是连接无线网2的带有NAT程序或模块的路由器,该路由器可以将移动终端1发送给计算设备5的数据包的源地址转换成它自己的源地址,并且把来自计算设备5的数据包的目的地址转换成移动终端的目的地址,例如把来自移动终端1的数据包(分组)的源IP地址:TCP源端口192.168.0.3:30000映射成它自己的源IP地址:TCP源端口172.28.1.5:40001,以及把来自计算设备5的数据包的172.28.1.5:40001目的IP地址:TCP目的端口映射成移动终端1的目的IP地址:TCP目的端口192.168.0.3:30000,并在一定时间内比如60秒内保持这种地址映射,如果超过这个时间没有收到来自移动终端1或者计算设备5的数据包,则NAT程序或模块将解除这种地址映射,从而中断从移动终端1至计算设备5的数据链路。数据链路可能经由多个路由器或NAT路由器4建立,因此图2中示出了n-1个其他路由器。下面根据图2所示的系统详细说明本发明的保持网络NAT绑定的方法:
首先移动终端1通过主动发起连接请求建立经由无线网2、连接无线网2的边缘NAT路由器3、一个或多个其他路由器4至计算设备5的链路;
边缘NAT路由器3把来自移动终端1的数据包的源地址(例如包括源IP地址和TCP源端口)映射成NAT路由器3的源地址以及把来自计算设备5的数据包的目的地址映(例如包括的IP地址:TCP目的端口)射成移动终端的目的地址,并在第一时段T1例如60秒内保持两个地址映射;
计算设备5按照其时段小于第一时间段T1的时间间隔T2(例如55)秒向计算设备1发送一个心跳包,使心跳包中的生存时间TTL设定值到达边缘NAT路由器3时递减为0,以便利用计算设备5发送的心跳包保持边缘NAT路由器3的地址映射,从而维持从移动终端1至计算设备5的链路。
计算设备5可以把心跳包的生存时间TTL的设定值确定为来自移动终端的数据包到达计算设备5所经过的包括边缘NAT路由器3在内的所有路由器4的跳数(Hops),如图2所示,由于数据包经过n个路由器才能到达计算设备5,因此计算设备5可以把TTL的值设置为n,例如若n等于10,则TTL设定值为10。
需要说明的是,计算设备5设定的TTL设定值是指计算设备最终确定的TTL值,而下文所述的计算设备5设定的TTL初始值则是初步设定的TTL值。
计算设备5可以通过以下步骤设置心跳包生存时间TTL的值:
当收到来自移动终端1的移动终端数据包时,解析该数据包头部中的当前TTL值V1(例如为54);
将移动终端数据包的TTL标称值V0(例如64)减去当前TTL值V1(54)得到跳数(例如10);
然后,把跳数设为心跳包的TTL设定值(例如10)。
当心跳包经过链路上的每个路由器转发时,该路由器将心跳包中的生存时间TTL设定值递减一,以致数据包到达边缘NAT路由器3时,心跳包因为其生存时间TTL设定值被递减为0而被丢弃,使得心跳包仅起到保持边缘NAT路由器3地址映射的数据活动作用。如上所述,当经由10个路由器建立从移动终端1至计算设备5的数据链路时,计算设备5发送的心跳包的TTL设定值为10,该心跳包到达边缘NAT路由器3时,其TTL设定值被递减为0,从而被路由器3丢弃,但是心跳包在路由器3中的数据活动即路由器3对其处理,使得NAT路由器3的地址映射又延长了第一时段T1的时间如60秒。
计算设备5还可以通过以下步骤设置心跳包生存时间TTL的设定值:
当收到来自移动终端1的移动终端数据包时,解析出其中的当前TTL值V1(比如54);
将移动终端数据包的TTL标称值V0(比如64)减去当前TTL值V1(比如54)得到跳数V(比如10);
把跳数V+调整值D(例如3)设为心跳包的TTL初始值ttl(比如13);
然后通过与移动终端1进行发送-响应通信,调整心跳包TTL初始值ttl,直至获得移动终端1不能响应的心跳包TTL值,并将其作为TTL设定值。
具体地说,计算设备5与移动终端1之间的发送-响应通信操作包括:
计算设备5向移动终端1发送包含TTL初始值ttl(比如13)的心跳包,移动终端1对该心跳包响应后向计算设备5回送响应包;
计算设备5收到移动终端1回送的响应包后,将心跳包的TTL初始值减一(13-1=12);
然后计算设备5把TTL初始值减一的心跳包(其TTL=12)发送给移动终端1,移动终端1响应后再回送响应包;
接着,重复上述计算设备5将TTL减一后发送心跳包以及移动终端1响应回送响应包的操作,直至计算设备5把TTL初始值递减到移动终端1不能响应回送响应包时的数值(例如,计算设备5通过对心跳包TTL值的多次递减,把TTL初始值13递减到10,使得心跳包到达NAT路由器3并进行减一操作时,该心跳包的TTL=0,从而不能转发给移动终端1,致使移动终端1不能响应并回送响应包)。
为了使移动终端1能够响应并回送计算设备发送的心跳包,移动终端1应当设有响应并回送响应包的响应模块(图中未显示),移动终端1可以通过光盘或网络下载方式安装该响应模块。
下面通过结合图3和图4所示的实现本发明的方法的两个具体实例,说明本发明的保持网络NAT绑定的两个具体实施方法:
在图3所示的第一实例中,移动终端1首先通过主动发起连接请求建立经由无线网2、连接无线网2的边缘NAT路由器3、一个或多个其他路由器4至计算设备5的链路;接着,边缘NAT路由器3把来自移动终端1的数据包源地址映射成本机源地址以及把来自计算设备5的数据包的目的地址映射成移动终端的目的地址,并在第一时段T1内保持两个地址映射;然后,计算设备5按照其时段小于第一时间段T1的时间间隔T2向计算设备1发送一个心跳包,使心跳包中的生存时间TTL的值到达边缘NAT路由器3时递减为0,以便利用计算设备5发送的心跳包保持边缘NAT路由器3的地址映射,从而维持从移动终端1至计算设备5的链路;其中计算设备5按以下步骤设置生存时间TTL的值:
当收到来自移动终端1的移动终端数据包时,解析出其当前TTL值V1;
将移动终端数据包的TTL标称值V0减去当前TTL值V1得到跳数;
然后,把跳数设为心跳包的TTL的值。
例如,在图3所示的第一实例中,假定移动终端1发送的数据包的TTL的标称值V0=64,该数据包(数据报)经由边缘NAT路由器3和其他19个其他路由器到达计算设备5,根据数据包每经过一个路由器,将TTL值减一的规则,计算设备5收到的数据包中TTL当前值V1为64-20=44,计算设备5通过解析该数据包得到该V1,然后将标称值V0-V1=64-44得到跳数20,从而将心跳包的TTL设定值确定为20。
在图4所示的第二实例中,移动终端1通过主动发起连接请求建立经由无线网2、连接无线网2的边缘NAT路由器3、一个或多个其他路由器4至计算设备5的链路;边缘NAT路由器3把来自移动终端1的数据包源地址映射成本机源地址以及把来自计算设备5的数据包的目的地址映射成移动终端的目的地址,并在第一时段T1内保持两个地址映射;计算设备5按照其时段小于第一时间段T1的时间间隔T2向计算设备1发送一个心跳包,使心跳包中的生存时间TTL设定值到达边缘NAT路由器3时递减为0,以便利用计算设备5发送的心跳包保持边缘NAT路由器3的地址映射,从而维持从移动终端1至计算设备5的链路;其中计算设备5按以下步骤设置生存时间TTL设定值:
当收到来自移动终端1的移动终端数据包时,解析出其中的当前TTL值V1;
将移动终端数据包的TTL标称值V0减去当前TTL值V1得到跳数V;
把跳数V+调整值D设为心跳包的TTL初始值ttl;
然后通过与移动终端1进行发送-响应通信,调整心跳包TTL初始值ttl,直至获得移动终端1不能响应时的心跳包TTL值,并将其作为TTL设定值。
其中,上述调整值最好在2~7中选取,可优选5。
计算设备5与移动终端1之间的发送-响应通信操作包括:
计算设备5向移动终端1发送包含TTL初始值ttl的心跳包,移动终端1响应后回送响应包;
计算设备5收到移动终端1回送的响应包后,将心跳包的TTL初始值减一;
然后计算设备5把TTL初始值减一的心跳包发送给移动终端1,移动终端1响应后再回送响应包;
接着,重复上述计算设备5将TTL减一后发送心跳包以及移动终端1响应回送响应包的操作,直至计算设备5把TTL初始值递减到移动终端1不能响应回送响应包时的数值。
比如,图4所示的调整值D等于5,当计算设备5收到移动终端1关于心跳包的第一个响应包时,将TTL值(初始值)减一,发送TTL值=n+4的心跳包;当计算设备5收到移动终端1关于心跳包的第二个响应包时,将已经减一的TTL值(初始值)再减一,发送TTL值=n+3的心跳包;当计算设备5收到移动终端1关于心跳包的第三个响应包时,将已经减二的TTL值(初始值)再减一,发送TTL值=n+2的心跳包;当计算设备5收到移动终端1关于心跳包的第四个响应包时,将已经减三的TTL值(初始值)再减一,发送TTL值=n+1的心跳包;当计算设备5收到移动终端1关于心跳包的第五个响应包时,将已经减四的TTL值(初始值)再减一,发送TTL值=n的心跳包,该心跳包传输到边缘NAT路由器3后其TTL值递减为0,导致被丢弃,致使移动终端1因不能收到该心跳包而不能响应。
移动终端1设有响应并回送响应包的响应模块,该移动终端1通过光盘或网络下载方式安装响应模块。
当移动终端1收到来自计算设备的心跳包时,响应模块根据心跳包中的用于绑定NAT的绑定标识符,生成并回送一个含有NAT绑定标识符的响应包,以便计算设备5依据该绑定标识符辨识响应包,并据此将TTL初始值减一。该响应包中TTL值可以是移动终端1发送的普通数据包的标称值。
由于链路可能意外中断以及转发数据包的路由器数量也可能变化,因此移动终端1还可以按照其时段大于第一时段T1的间隔(比如20分钟)向计算设备5发送数据包,以便计算设备5重复上述处理获得适应链路中断、路由改变等意外事件的心跳包的TTL值。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。