一种通信方法和通信装置的制造方法

文档序号:10661020阅读:369来源:国知局
一种通信方法和通信装置的制造方法
【专利摘要】本发明提供一种通信方法,通过判断客户端本身的地址是否与服务器上接收到的客户端的地址相同来确定链路上是否存在NAT设备,以及通过判断客户端连接的网络设备的地址与服务器上接收到的客户端的地址判断是否为多级NAT串联,并由此采用UPnP或长连接方式在所述客户端与所述服务器之间通信。本发明还提供一种通信装置。本发明的方案结合多种NAT穿透方式的优点,可以穿透所有NAT类型,既保证了穿透效率,还提高了系统性能。
【专利说明】
_种通信方法和通信装置
技术领域
[0001]本发明涉及计算机通信,具体涉及一种用于在客户端与服务器进行通信的方法和
目.0
【背景技术】
[0002]NAT (Network Address Translat1n)又称〃网络地址转换〃,它是一种把内部私有网络地址翻译成合法网络IP地址的技术。NAT就是在局域网内部使用私有地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口)处将内部地址替换成公用地址,从而在公网(internet)上正常使用.通过这种方法,可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。
[0003]在这样的体系中,设备的私有地址在公网上是不能被路由。这样,NAT不仅解决了IPv4地址资源不足的问题,还能够有效避免来自网络外部的攻击,隐藏并保护网络内部的计算机。同时,NAT也阻碍了外网到内网的直接访问,设备必须通过NAT设备才能访问外网,外网上的设备也必须通过NAT才能访问内网的设备。而P2P通信是两台设备直接通信,这样当有一个设备处于NAT设备下的内网时,这两个设备之间就不能进行P2P通信。于是,人们就需要采用一种方法能够使得消除NAT的障碍,称为NAT穿透。NAT穿透是P2P通信的主要问题。
[0004]已知的一种NAT穿透方法是使用UPnPWPnP是微软提出的通用即插即用协议簇,用于全网络嵌入式设备的点到点互联通信。当NAT设备支持UPnP时,利用UPnP能够把P2P通信的端口号自动映射到公网上,从而公网上的设备能够对NAT私网侧发起连接。然而,使用UPnP只能穿透一层NAT。也就是,如果NAT设备本身也处于另一 NAT设备的私网上,则UPnP就不能起到作用。
[0005]长连接是一种TCP连接,是具有保活通信的TCP连接,可以穿透TCP NAT和对称型,支持多级串联的NAT穿透,是当前互联网常用的TCP穿透方法。长连接的应用缺陷是服务器负载和带宽占用较高。

【发明内容】

[0006]本发明的目的提供一种可用于NAT穿透的新的通信方案。
[0007]按照本发明的一个方面,一种通信方法,用于在客户端与服务器之间的通信,包括如下步骤:SlO,在所述客户端与所述服务器之间建立连接;S20,判断所述客户端的第一地址是否与所述服务器上存储的所述客户端的第二地址相同;S30,如果所述第一地址与所述第二地址不同,则,判断所述客户端连接的网络设备的地址与所述第二地址是否相同;S40,如果所述第二地址与所述网络设备的地址相同,则在所述客户端与所述服务器之间基于UPnP协议的通信;S50,如果所述第二地址与所述网络设备的地址不同,则在所述客户端与所述服务器之间基于长连接方式进行通信。
[0008]在一个实施例中,该方法还包括:将所述第二地址从所述服务器传输到所述客户端,以及在所述客户端完成步骤S20。
[0009]在一个实施例中,该方法还包括:将所述第一地址从所述客户端发送到所述服务器,以及在所述服务器完成步骤S20。
[0010]在一个实施例中,该方法还包括:将所述网络设备的地址发送到所述客户端,以及在所述客户端完成所述步骤S30。
[0011]在一个实施例中,该方法还包括:将所述网络设备的地址发送到所述服务器,以及在所述服务器完成所述步骤S30。
[0012]按照本发明另一方面,一种通信装置,其用于在客户端与服务器之间的通信,包括:第一判断单元,其判断所述客户端的第一地址与所述服务器上存储的所述客户端的第二地址是否相同;第二判断单元,其判断所述第二地址与所述客户端连接的网络设备的地址是否相同;第一通信单元,其构造为基于UPnP协议在所述客户端与所述服务器之间进行通信;第二通信单元,其构造为基于长连接方式在所述客户端与所述服务器之间进行通信;其中,当所述第二地址与所述网络设备的地址相同时,所述第一通信单元运行,当所述第二地址与所述网络设备的地址不同时,所述第二通信的运行。
[0013]进一步,该装置还包括信息获取单元,其获取所述第一地址、第二地址和所述网络设备的地址,并将所述第一地址和第二地址发送至所述第一判断单元,以及将所述第二地址和所述网络设备的地址发送至所述第二判断单元。
[0014]在本发明中,网路设备可以是路由器或者网关。其中,客户端可以为任何能够接入网络的设备,服务器是连接在公网上并且提供网络服务的计算设备,例如存储或其他信息服务。
[0015]本发明的方案结合多种NAT穿透方式的优点,可以穿透所有NAT类型,既保证了穿透效率,还提高了系统性能。
【附图说明】
[0016]下面将以明确易懂的方式,结合【附图说明】优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
[0017]图1示出客户端设备通过网关与服务器的网络连接。
[0018]图2示出按照本发明的通信装置的实施例的示意图。
[0019]附图标号说明:
[0020]10移动设备20网关30服务器40计算机50路由器60网关
[0021]100第一比较单元200第二比较单元300第一通信单元400第二通信单元500信息获取单元
【具体实施方式】
[0022]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照【附图说明】本发明的【具体实施方式】。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0023]如前所述,NAT是将私网内的设备的地址转换为公网上的地址。例如,当客户端处于NAT设备的内网时,连接到服务器上的地址实际上是NAT设备映射的地址,而不是客户端从内网的DHCP服务器获取的地址作为客户端本身的地址。当客户端与服务器通信时,NAT设备会将客户端本身的地址映射为公网上的地址(映射地址),例如,可以是NAT设备在公网上分配到的地址。客户端发出报文时,其报头的源地址是客户端本身的地址。当到达NAT设备时,报头中的源地址就被修改为前述映射后的地址。服务器接收到的报文的报头中的源地址就是该映射地址。也就是,在服务器接收到的数据报文的报头中的源地址实际上是NAT设备在建立连接时分配给客户端的映射地址,而不是客户端发出上述数据报文时写入报头的地址。
[0024]在本说明书中,术语“私网”与“内网”的含义相同,而术语“公网”与“外网”的含义相同,均为本领域公知的术语。
[0025]在图1示出的网络拓扑结构中,移动设备10通过网关20与服务器30连接。网关20是NAT设备,此时,移动设备10实际上处于网关20的私网中。
[0026]同时,如图1所示,计算机40通过路由器50、网关60连接到服务器30。路由器50为NAT设备,此时计算机40处于路由器50的内网中。同时,当网关60也是NAT设备时,则路由器50的整个内网实际上也是处于网关60的内网中。这就形成了两级串联的NAT拓扑结构。
[0027]在这种情况下,移动设备10的地址是所处的网关20的内网中的DHCP服务器分配给移动设备10的地址。DHCP服务器可以是集成在网关20上的模块,也可以是单独的服务器。
[0028]当移动设备10与服务器30通信时,服务器30接收到的数据报文的报头中的源地址实际上是网关20的分配给移动设备10的地址,而不是移动设备10本身的地址。
[0029]类似地,计算机40从路由器50的内网上的DHCP服务器分配到IP地址作为计算机40本身的地址。通常,路由器50本身会具有DHCP服务端的功能。也就是,路由器50会将一个IP地址分配给计算机40作为其本身的地址。而路由器50本身的地址是网关60的内网上的DHCP服务器分配给路由器50的地址。
[0030]当计算机40与服务器30通信时,计算机40发出数据报文时,报头的源地址是计算机40本身的地址。当数据报文经过路由器50时,路由器50将报头中的源地址映射为路由器50在网关60的内网上的地址。而当数据报文经过网关60时,网关60将报头中的源地址映射为网关60在公网上的地址。当服务器30收到报文时,报头中的源地址就不是计算机40本身的地址,也不是路由器50本身的地址,而是网关60在公网上的地址。
[0031]在上述拓扑结构中,按照本发明的通信方法,在移动设备10与服务器30之间经过网关20建立连接。为了方便描述,移动设备10本身的地址为第一地址,而服务器30收到的报文的报头中的源地址为第二地址,也就是服务器保存的移动设备10的地址。则比较第一地址与第二地址。如前所述,网关20为NAT设备时,移动设备10本身的地址(第一地址)与服务器接收到的报文中的源地址(第二地址)是不同的。反之,当第一地址与第二地址不同时,可以确定在移动设备10与服务器30的链路上存在NAT设备。
[0032]在一个例子中,可以由移动设备10向服务器30发出请求,获取服务器上的报文的源地址,而后在移动设备10端进行所述的比较。或者,在另外的例子中,可以是服务器30向移动设备10发出请求以获取移动设备10的第一地址,并在服务器10端进行所述比较。
[0033]类似地,在计算机40与服务器30建立连接。比较计算机40本身的地址(第一地址)与服务器30收到的报文的源地址(第二地址)。如前所述,当路由器50或者网关60为NAT设备时,所述第一地址与所述第二地址是不同的。反之,当第一地址与第二地址不同时,也可以确定在链路上存在NAT设备。
[0034]对于客户端10与服务器30的连接,当第一地址与第二地址不同时,进一步比较网关20的地址与服务器30上的得到的第二地址。如前所述,通常情况下,NAT设备所映射的公网地址实际上就是NAT设备本身在公网上的地址。因此,当网关20的地址与服务器30上的第二地址相同时,则确定网关20与服务器30之间没有更多的NAT设备。这样,客户端10与服务器30之间可以基于UPnP协议进行通信。
[0035]对于计算机40与服务器30的通信。当第一地址与第二地址不同时,比较路由器50的地址与服务器上的第二地址。路由器50实际上在网关60的内网,其地址是网关60的内网上的地址。路由器上的第二地址实际上是网关60在公网上的地址。因此,路由器50的地址与第二地址是不同的。反之,就可以确定,在路由器与服务器之间还存在其他NAT设备。在这个例子中,就是网关60。
[0036]此时,计算机40与服务器30之间通过UPnP协议进行通信也不能穿透NAT设备。计算机40与服务器30之间可以通过长连接的方式进行通信。
[0037]在一个例子中,可以是服务器将第二地址发送到计算机40,并且计算机40向路由器50请求获取路由器的地址,并且在计算机40进行比较。或者,计算机40向路由器50请求获取路由器的地址并发送给服务器30,在服务器30处比较路由器的地址与第二地址。
[0038]在上面的描述中,本领域技术人员能够了解基于UPnP协议通信以及通过长连接的方式进行通信可以采用任何适当的方案。
[0039]如上所述,上述的方法可适于不同的网络拓扑中完成NAT穿透。
[0040]由此,在另一实施例中,一种通信装置,包括:第一判断单元100,其判断前述的第一地址与所述服务器上存储的第二地址是否相同;以及,第二判断单元200,其判断所述第二地址与路由器或网关的地址是否相同。
[0041]当该第一地址与该第二地址不同时,则第一判断单元100向该第二判断单元传输指令,判断第二地址与路由器或网关的地址是否相同。
[0042]当该第二地址与路由器或网关的地址相同时,则第二判断单元将指令发送给第一通信单元300,其构造为基于UPnP协议在移动设备或计算机与服务器之间进行通信。
[0043]当该第二地址与路由器或网关的地址不同时,则该第二判断单元将指令发送给第二通信单元400,其构造为基于长连接方式在所述移动设备或计算机与所述服务器之间进行通信。
[0044]进一步,该装置还包括信息获取单元500,其获取所述第一地址、第二地址和路由器或网关的地址,并将所述第一地址和第二地址发送至所述第一判断单元,以及将所述第二地址和路由器或网关的地址发送至所述第二判断单元。
[0045]在一个例子中,该信息获取单元设在移动设备或计算机上,其通过网络协议向服务器发出请求获取第二地址,以及通过网络协议向路由器/网关发出请求获取路由器/网关的地址。该第一和第二判断单元设在移动设备或计算机上。该第一和第二通信单元可以由设在移动设备/计算机、路由器/网关以及服务器上的网络通信模块组成。
[0046]应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种通信方法,用于在客户端与服务器之间的通信,其特征在于,该方法包括如下步骤: SlO,在所述客户端与所述服务器之间建立连接; S20,判断所述客户端的第一地址是否与所述服务器上存储的所述客户端的第二地址相同; S30,如果所述第一地址与所述第二地址不同,则,判断所述客户端连接的网络设备的地址与所述第二地址是否相同; S40,如果所述第二地址与所述网络设备的地址相同,则在所述客户端与所述服务器之间基于UPnP协议的通信; S50,如果所述第二地址与所述网络设备的地址不同,则在所述客户端与所述服务器之间基于长连接方式进行通信。2.根据权利要求1所述的通信方法,其特征在于,还包括:将所述第二地址从所述服务器传输到所述客户端,以及在所述客户端完成步骤S20。3.根据权利要求1所述的通信方法,其特征在于,还包括:将所述第一地址从所述客户端发送到所述服务器,以及在所述服务器完成步骤S20。4.根据权利要求1所述的通信方法,其特征在于,还包括:将所述网络设备的地址发送到所述客户端,以及在所述客户端完成所述步骤S30。5.根据权利要求1所述的通信方法,其特征在于,还包括:将所述网络设备的地址发送到所述服务器,以及在所述服务器完成所述步骤S30。6.—种通信装置,其用于在客户端与服务器之间的通信,其特征在于,包括: 第一判断单元,其判断所述客户端的第一地址与所述服务器上存储的所述客户端的第二地址是否相同; 第二判断单元,其判断所述第二地址与所述客户端连接的网络设备的地址是否相同; 第一通信单元,其构造为基于UPnP协议在所述客户端与所述服务器之间进行通信; 第二通信单元,其构造为基于长连接方式在所述客户端与所述服务器之间进行通信; 其中,当所述第二地址与所述网络设备的地址相同时,所述第一通信单元运行,当所述第二地址与所述网络设备的地址不同时,所述第二通信的运行。7.根据权利要求6所述的通信装置,其特征在于,还包括信息获取单元,其获取所述第一地址、第二地址和所述网络设备的地址,并将所述第一地址和第二地址发送至所述第一判断单元,以及将所述第二地址和所述网络设备的地址发送至所述第二判断单元。
【文档编号】H04L29/12GK106027689SQ201610283819
【公开日】2016年10月12日
【申请日】2016年4月29日
【发明人】张享达
【申请人】上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1