一种基于UPnP协议的NAT穿透方法及系统的制作方法

文档序号:10616116阅读:415来源:国知局
一种基于UPnP协议的NAT穿透方法及系统的制作方法
【专利摘要】本发明提供一种基于UPnP协议的NAT穿透方法及系统,涉及网络通信技术领域。该方法包括:当终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备;监听应用程序发送的添加端口映射请求,并根据监听到的添加端口映射请求在网关设备上添加端口映射;将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与应用程序的数据通信。本发明能够通过UPnP服务自动在网关设备上添加端口映射,不需要用户手动配置,也不需要借助第三方代理辅助进行NAT穿透,并且能够优化家庭网络P2P的穿透率,提高了用户的体验感。
【专利说明】
一种基于UPnP协议的NAT穿透方法及系统
技术领域
[0001]本发明属于网络通信技术领域,尤其涉及一种基于UPnP(Universal Plug and?1&7,即插即用)协议的嫩1'(如七¥(^1^\(1(^6 8 81'作118131:;[011,网络地址转换)穿透方法及系统。
【背景技术】
[0002]随着计算机性能的不断提高和网络技术的不断发展,客户机-服务器通信模式在国际互联网中的统治地位已被打破,P2P (peer-to-peer,点对点)通彳目模式被越来越多的网络应用所使用,在P2P通信模式中,主机之间可以直接通信以实现资源共享和信息交换,这为用户之间的沟通和交流提供了更大的便利。P2P也称为对等连接或对等网络,在这种网络中,所有通信节点的地位都是平等的,每个节点都扮演着客户机和服务器的双重角色,节点之间通过直接通信实现文件信息、处理器预算能力以及存储空间等资源的共享。
[0003]然而,在目前的Ipv4网络环境中,由于网络地址匮乏而广泛存在的NAT设备使得处于不同内部私有网络中的主机难以进行直接通信,这在很大程度上限制了P2P的应用和发展。NAT是一种把内部网络私有IP地址转换成外部网络公共IP地址的技术,它使得一个机构内的多台主机可以共享Internet连接,以一个或者少数几个公网IP地址连接到Internet。NAT的存在给处于不同内网的主机之间进行通信带来了障碍。NAT穿透技术就是通过采用一定的技术措施而使得处于不同内网的主机间可以实现互联网技术。因此,位于不同内网的主机之间要实现P2P通信必须要在一定程度上解决NAT穿透的问题,否则系统将无法正常工作。
[0004]目前,大部分家庭网络中的P2P均不能很好的实现NAT穿透,这是由于大部分家庭网络均采用对称型NAT设备,导致P2P必须借助第三方代理辅助进行NAT穿透或者要求用户在对称型NAT设备上为特定的服务添加端口映射,这两种实现NAT穿透的缺陷在于:P2P传输的数据在经过第三方代理转发时增加了数据包的延迟和丢包的可能性,同时也增大了系统部署的开销;在对称型NAT设备上为特定的服务添加端口映射,需要用户手动配置对称型NAT设备,要求用户懂得一定的专业知识,并且操作非常不便。因此,如何在家庭网络的对称型NAT设备中实现良好的NAT穿透已成为各P2P应用服务运行商亟需解决的问题。

【发明内容】

[0005]本发明实施例的目的在于提供一种基于UPnP协议的NAT穿透方法及系统,旨在解决现有技术中P2P应用无法在家庭网络的对称型NAT设备中实现良好的NAT穿透的问题。
[0006]本发明实施例是这样实现的,一种基于UPnP协议的NAT穿透方法,包括:
[0007]当终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备;
[0008]监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;
[0009]将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。
[0010]在本发明实施例所述的基于UPNP协议的NAT穿透方法中,所述监听应用程序发送的添加端口映射请求,并根据所述添加端口映射请求在所述网关设备上添加端口映射具体包括:
[00?1 ] 通过Aidl接口或者Intent监听应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0012]判断监听到的添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型;
[0013]若符合,则将所述添加端口映射请求添加至链表中并标记为待处理添加端口映射请求;
[0014]读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射。
[0015]在本发明实施例所述的基于UPnP协议的NAT穿透方法中,读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射具体包括:
[0016]获取所述网关设备的拨号类型;
[0017]判断所述网关设备的UPnP服务是否正常;
[0018]若所述网关设备的UPnP服务正常,则读取所述链表中的待处理添加端口映射请求;
[0019]根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射;
[0020]接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。
[0021]在本发明实施例所述的基于UPnP协议的NAT穿透方法中,所述根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射具体包括:
[0022]根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存;
[0023]根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规则,所述待处理添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0024]若存在相同的端口映射规则,则获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射;
[0025]若不存在相同的端口映射规则,则判断所述待处理添加端口映射请求是否指定了外部端口 ;
[0026]若指定了外部端口,则直接向所述网关设备发送添加端口映射的请求,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射;
[0027]若未指定外部端口,则设置外部端口为所述hash数组中当前最大外部端口值加I,并向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射。
[0028]在本发明实施例所述的基于UPnP协议的NAT穿透方法中,所述接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作具体包括:
[0029]若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并将添加成功的端口映射信息上传至P2P云服务器;
[0030]若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败。
[0031 ]本发明实施例的另一目的在于提供一种基于UPnP协议的NAT穿透系统,包括:
[0032]网关设备搜索模块,用于在终端启动UPnP服务时,在局域网内搜索支持UPNP协议的网关设备;
[0033]端口映射处理模块,用于监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;
[0034]上传模块,用于将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。
[0035]在本发明实施例所述的基于UPnP协议的NAT穿透系统中,所述端口映射处理模块具体包括:
[0036]监听单元,用于通过Aidl接口或者Intent监听应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0037]判断单元,用于判断监听到的添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型;
[0038]链表处理单元,用于若符合,则将所述添加端口映射请求添加至链表中并标记为待处理添加端口映射请求;
[0039]端口映射处理单元,用于读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射。
[0040]在本发明实施例所述的基于UPnP协议的NAT穿透系统中,所述端口映射处理单元具体包括:
[0041 ]拨号类型获取子单元,用于获取所述网关设备的拨号类型;
[0042]UPnP服务判断子单元,用于判断所述网关设备的UPnP服务是否正常;
[0043]端口映射请求读取子单元,用于若所述网关设备的UPnP服务正常,则读取所述链表中的待处理添加端口映射请求;
[0044]端口映射处理子单元,用于根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射;
[0045]提示子单元,用于接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。
[0046]在本发明实施例所述的基于UPnP协议的NAT穿透系统中,所述端口映射处理子单元具体用于:
[0047]根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存;
[0048]根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规则,所述待处理添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0049]若存在相同的端口映射规则,则获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射;
[0050]若不存在相同的端口映射规则,则判断所述待处理添加端口映射请求是否指定了外部端口 ;
[0051]若指定了外部端口,则直接向所述网关设备发送添加端口映射的请求,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射;
[0052]若未指定外部端口,则设置外部端口为所述hash数组中当前最大外部端口值加I,并向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射。
[0053]在本发明实施例所述的基于UPnP协议的NAT穿透系统中,所述提示子单元具体用于:
[0054]若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并控制所述上传模块将添加成功的端口映射信息上传至P2P云服务器;
[0055]若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败。
[0056]实施本发明实施例提供的一种基于UPnP的NAT穿透方法及系统具有以下有益效果:
[0057]本发明实施例由于首先在终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备;然后监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;最后将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信,从而能够通过UPnP服务自动在网关设备上添加端口映射,不需要用户手动配置,也不需要借助第三方代理辅助进行NAT穿透,并且能够优化家庭网络P2P的穿透率,提高了用户的体验感。
【附图说明】
[0058]图1是本发明实施例提供的一种基于UPnP协议的NAT穿透方法的具体实现流程图;
[0059]图2是本发明实施例提供的一种基于UPnP协议的NAT穿透方法中步骤SlOl的具体实现流程图;
[0060]图3是本发明实施例提供的一种基于UPnP协议的NAT穿透方法中步骤S102的具体实现流程图;
[0061 ]图4是本发明实施例提供的一种基于UPnP协议的NAT穿透方法中步骤S305的具体实现流程图;
[0062]图5是本发明实施例提供的一种基于UPnP协议的NAT穿透系统的结构示意图。【具体实施方式】
[0063]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0064]图1是本发明实施例提供的一种基于UPnP协议的NAT穿透方法的具体实现流程图。参见图1所示,本实施例提供的一种基于UPnP协议的NAT穿透方法,包括:
[0065]在SlOl中,当终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备。
[0066]在本实施例中,当所述终端启动时,会创建并启动一UPnP服务,通过该UPnP服务在所述终端所处的局域网内搜索支持UPnP协议的网关设备。
[0067]在S102中,监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射。
[0068]图2示出了S102的具体实现流程,参见图2所示,S102具体包括:
[0069]在S201中,通过Aidl接口或者Intent接收应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0070]在S202中,判断所述添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型,若符合,则进入步骤S203,若不符合,则进入步骤S205;
[0071]在S203中,将所述添加端口映射请求添加至链表中标记为待处理添加端口映射请求;
[0072]在S204中,读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射;
[0073]在S205中,向所述应用程序返回接收到的所述添加端口映射请求验证错误的提示信息,并结束流程。
[0074]在本发明实施例中,S203中还可以包括向所述应用程序返回接收到的所述添加端口映射请求验证成功的提示信息,具体的,当所述添加端口映射请求的数据格式和数据类型符合预定义的数据格式和数据类型时,则向所述应用程序返回参数正确的提示代码:0,同时将所述添加端口映射请求添加至链表中标记为待处理添加端口映射请求,并进入步骤S102;反之,当所述添加映射请求的数据格式和/或数据类型不符合预定义的数据格式和数据类型时,则向所述应用程序返回参数错误的提示代码:100,并结束流程。
[0075]图3示出了S204的具体实现流程,参见图3所示,S204具体包括:
[0076]在S301中,获取所述网关设备的拨号类型;
[0077]在S302中,判断所述网关设备的UPnP服务是否正常,若正常,则进入步骤S303,若不正常,则返回步骤S301;
[0078]在S303中,读取所述链表中的待处理添加端口映射请求;
[0079]在S304中,根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射;
[0080]在S305中,接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。
[0081]在本发明实施例中,所述网关设备为对称型NAT设备,所述判断所述网关设备的UPnP服务是否正常,主要是确定所述网关设备的UPnP服务是否关闭,具体的:当搜索到的网关设备的ssdp为byebye时,说明所述网关设备的UPnP服务关闭,此时说明网关设备的UPnP服务异常;当搜索到的网关设备的SSdp为alive时说明所述网关设备的UPnP服务开启,此时所述网关设备的UPnP服务正常。进一步的,所述网关设备的拨号类型包括PPP0E、L2TP以及PPTP。进一步的,图4示出了S305的具体实现流程,参见图4所示,S304具体包括:
[0082]在S401中,根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存;
[0083]在S402中,根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规则,若存在,则进入步骤S403,若不存在,则进入步骤S404;
[0084]在S403中,获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射;
[0085]在S404中,判断所述待处理添加端口映射请求是否指定了外部端口,若未指定了外部端口,则进入步骤S405,若指定了外部端口,则进入步骤S406;
[0086]在S405中,设置外部端口为所述hash数组中当前最大外部端口值加I;
[0087]在S406中,向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射。
[0088]在本实施例中,所述待处理添加端口映射请求包括内部端口、内部IP地址和协议类型,在步骤S402中主要依据所述添加映射请求中携带的内部端口号、内部IP地址以及协议类型判断所述hash数组中是否有与其相同的映射规则,若查找到有相同的映射规则,则直接读取查找到的映射规则中与所述内部端口对应的外部端口作为所述应用程序对外发布的端口,并结束添加端口映射的流程;反之,若没有查找到与其相同的映射规则,则进入步骤S404。需要说明的是,在其他实施例中所述添加端口映射请求还可以包括指定的外部端口,当所述添加端口映射请求中包含有指定的外部端口时,在步骤S402中还可以通过查询hash数组判断指定的外部端口是否被其他内部端口所占用,用被其他端口占用则删掉所述添加端口请求中指定的外部端口,并进入步骤S406由网关设备自动为所述添加端口映射请求中的内部端口分配外部端口;反之,若所述外部端口未被占用,则进入步骤S405,则直接向所述网关设备发送添加端口映射的请求。此外,当本发明实施例中的所述添加端口映射请求中不包括内部IP地址时,则将获取接收应用程序发送的添加端口映射请求的设备的IP地址作为内网IP地址。
[0089]进一步的,在本发明实施例中,步骤S305具体包括:若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并进入步骤S103将添加成功的端口映射信息上传至P2P云服务器;若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败,并结束流程。
[0090]在S103中,将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。
[0091]进一步的,在本发明实施例中,将添加成功的端口映射信息添加至P2P云服务器之后还可以包括:判断所述网关设备是否出现故障,若所述网关设备出现故障,则将所述P2P云服务器中存储的端口映射规则全部删除,并将链表中的待处理添加端口映射请求均标记为添加失败;若所述网关设备运行正常,则判断所述网关设备WAN口的IP地址是否发生改变,若未发生改变,则继续处理其他添加端口映射请求,若发生改变,则更新所述P2P云服务器中所有相关记录的外网IP地址信息。
[0092]以上可以看出,本发明实施例提供的一种基于UPnP协议的NAT穿透方法,由于首先在终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备;然后监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;最后将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信,从而能够通过UPnP服务自动在网关设备上添加端口映射,不需要用户手动配置,也不需要借助第三方代理辅助进行NAT穿透,并且能够使家庭网络中的网关设备实现良好的NAT穿透,优化家庭网络P2P的穿透率,提高了用户的体验感。
[0093]图5是本发明实施例提供的一种基于UPnP协议的NAT穿透系统的结构示意图,该系统位于应用程序所在的终端内,用于运行图1?图4所示实施例提供的方法。为了便于说明仅仅不出了与本实施例相关的部分。
[0094]参见图5所示,本实施例提供的一种基于UPnP协议的NAT穿透系统,包括:
[0095]网关设备搜索模块I,用于在终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备;
[0096]端口映射处理模块2,用于监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;
[0097]上传模块3,用于将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。
[0098]进一步的,所述端口映射处理模块2具体包括:
[0099]监听单元21,用于通过Aidl接口或者Intent监听应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0100]判断单元22,用于判断监听到的添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型;
[0101 ]链表处理单元23,用于若符合,则将所述添加端口映射请求添加至链表中并标记为待处理添加端口映射请求;
[0102]端口映射处理单元24,用于读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射。
[0?03]进一步的,所述端口映射处理单元24具体包括:
[0104]拨号类型获取子单元241,用于获取所述网关设备的拨号类型;
[0105]UPnP服务判断子单元242,用于判断所述网关设备的UPnP服务是否正常;
[0106]端口映射请求读取子单元243,用于若所述网关设备的UPnP服务正常,则读取所述链表中的待处理添加端口映射请求;
[0107]端口映射处理子单元244,用于根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射;
[0108]提示子单元245,用于接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。
[0109]进一步的,所述端口映射处理子单元244具体用于:
[0110]根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存;
[0111]根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规则,所述待处理添加端口映射请求至少包括内部端口、内部IP地址和协议类型;
[0112]若存在相同的端口映射规则,则获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射;
[0113]若不存在相同的端口映射规则,则判断所述待处理添加端口映射请求是否指定了外部端口 ;
[0114]若指定了外部端口,则直接向所述网关设备发送添加端口映射的请求,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射;
[0115]若未指定外部端口,则设置外部端口为所述hash数组中当前最大外部端口值加I,并向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射。
[0116]进一步的,所述提示子单元245具体用于:
[0117]若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并控制所述上传模块将添加成功的端口映射信息上传至P2P云服务器;
[0118]若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败。
[0119]需要说明的是,本发明实施例提供的上述系统中各个模块,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0120]因此,可以看出本发明实施例提供的一种基于UPnP协议的NAT穿透系统,同样由于首先启动UPnP服务,在局域网内搜索支持UPnP协议的网关设备;然后监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射;最后将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信,从而能够通过UPnP服务自动在网关设备上添加端口映射,不需要用户手动配置,也不需要借助第三方代理辅助进行NAT穿透,并且能够使家庭网络中的网关设备实现良好的NAT穿透,能够优化家庭网络P2P的穿透率,提高了用户的体验感。
[0121]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于UPnP协议的NAT穿透方法,其特征在于,包括: 当终端启动UPnP服务时,在局域网内搜索支持UPnP协议的网关设备; 监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射; 将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。2.如权利要求1所述的基于UPnP协议的NAT穿透方法,其特征在于,所述监听应用程序发送的添加端口映射请求,并根据所述添加端口映射请求在所述网关设备上添加端口映射具体包括: 通过Aidl接口或者Intent监听应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型; 判断监听到的添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型; 若符合,则将所述添加端口映射请求添加至链表中并标记为待处理添加端口映射请求; 读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射。3.如权利要求2所述的基于UPNP协议的NAT穿透方法,其特征在于,所述读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射具体包括: 获取所述网关设备的拨号类型; 判断所述网关设备的UPnP服务是否正常; 若所述网关设备的UPnP服务正常,则读取所述链表中的待处理添加端口映射请求;根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射; 接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。4.如权利要求3所述的基于UPnP协议的NAT穿透方法,其特征在于,所述根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射具体包括: 根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存; 根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规贝IJ,所述待处理添加端口映射请求至少包括内部端口、内部IP地址和协议类型; 若存在相同的端口映射规则,则获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射; 若不存在相同的端口映射规则,则判断所述待处理添加端口映射请求是否指定了外部端口; 若指定了外部端口,则直接向所述网关设备发送添加端口映射的请求,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射; 若未指定外部端口,则设置外部端口为所述hash数组中当前最大外部端口值加I,并向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射。5.如权利要求3所述的基于UPnP协议的NAT穿透方法,其特征在于,所述接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作具体包括: 若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并将添加成功的端口映射信息上传至P2P云服务器; 若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败。6.一种基于UPnP协议的NAT穿透系统,其特征在于,包括: 网关设备搜索模块,用于在终端启动UPNP服务时,在局域网内搜索支持UPNP协议的网关设备; 端口映射处理模块,用于监听应用程序发送的添加端口映射请求,并根据监听到的所述添加端口映射请求在所述网关设备上添加端口映射; 上传模块,用于将添加成功的端口映射信息上传至P2P云服务器,以便其他网络应用从所述P2P云服务器获取所述端口映射信息,实现与所述应用程序的数据通信。7.如权利要求6所述的基于UPNP协议的NAT穿透系统,其特征在于,所述端口映射处理模块具体包括: 监听单元,用于通过Aidl接口或者Intent监听应用程序发送的添加端口映射请求,所述添加端口映射请求至少包括内部端口、内部IP地址和协议类型; 判断单元,用于判断监听到的添加端口映射请求的数据格式和数据类型是否符合预定义的数据格式和数据类型; 链表处理单元,用于若符合,则将所述添加端口映射请求添加至链表中并标记为待处理添加端口映射请求; 端口映射处理单元,用于读取所述链表中的待处理添加端口映射请求,并根据所述待处理添加端口映射请求在网关设备上添加端口映射。8.如权利要求7所述的基于UPnP协议的NAT穿透系统,其特征在于,所述端口映射处理单元具体包括: 拨号类型获取子单元,用于获取所述网关设备的拨号类型; UPnP服务判断子单元,用于判断所述网关设备的UPnP服务是否正常; 端口映射请求读取子单元,用于若所述网关设备的UPnP服务正常,则读取所述链表中的待处理添加端口映射请求; 端口映射处理子单元,用于根据所述待处理添加端口映射请求和所述网关设备的拨号类型在所述网关设备上添加端口映射; 提示子单元,用于接收所述网关设备返回的添加端口映射是否成功的提示信息,根据所述提示信息执行相应的操作。9.如权利要求8所述的基于UPnP协议的NAT穿透方法,其特征在于,所述端口映射处理子单元具体用于: 根据所述待处理添加端口映射请求和所述网关设备的拨号类型获取所述网关设备上已添加的端口映射规则,并将所述已添加的端口映射规则用hash数组保存; 根据所述待处理添加端口映射请求查询所述hash数组中是否存在相同的端口映射规贝IJ,所述待处理添加端口映射请求至少包括内部端口、内部IP地址和协议类型; 若存在相同的端口映射规则,则获取所述端口映射规则中与所述内部端口对应的外部端口,以完成在所述网关设备上添加端口映射; 若不存在相同的端口映射规则,则判断所述待处理添加端口映射请求是否指定了外部端口; 若指定了外部端口,则直接向所述网关设备发送添加端口映射的请求,所述请求包括内部IP地址、内部端口、外部端口、协议类型以及生效时间,使所述网关设备根据所述请求自动添加端口映射; 若未指定外部端口,则设置外部端口为所述hash数组中当前最大外部端口值加I,并向所述网关设备发送添加端口映射的请求,使所述网关设备根据所述请求自动添加端口映射。10.如权利要求8所述的基于UPnP协议的NAT穿透系统,其特征在于,所述提示子单元具体用于: 若接收到所述网关设备返回的添加端口映射成功的提示信息,则将所述链表中的待处理添加端口映射请求标记为已添加成功,并控制所述上传模块将添加成功的端口映射信息上传至P2P云服务器; 若接收到所述网关设备返回的添加端口映射失败的提示信息,则将所述链表中的待处理添加端口映射请求标记为添加失败。
【文档编号】H04L29/08GK105979022SQ201610278924
【公开日】2016年9月28日
【申请日】2016年4月28日
【发明人】董阳民
【申请人】Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1