CN105847343B - 用于点对点传输的公网信息探测方法、装置及系统 - Google Patents
用于点对点传输的公网信息探测方法、装置及系统 Download PDFInfo
- Publication number
- CN105847343B CN105847343B CN201610160234.1A CN201610160234A CN105847343B CN 105847343 B CN105847343 B CN 105847343B CN 201610160234 A CN201610160234 A CN 201610160234A CN 105847343 B CN105847343 B CN 105847343B
- Authority
- CN
- China
- Prior art keywords
- nat
- port
- client
- public network
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明属于数据网络传输技术领域,具体涉及一种用于点对点传输的公网信息探测方法、装置及系统。本方法包含步骤:客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;客户端进行公网信息的判断。
Description
技术领域
本发明属于数据网络传输技术领域,具体涉及一种用于点对点传输的公网信息探测方法、装置及系统。
背景技术
在IPV4环境下,中国IP地址紧缺,NAT(Network Address Translation,网络地址转换)设备将私网转换成公网,但是NAT设备无法直接获取自己的公网信息(包括公网IP,公网端口,NAT类型,是否支持回环),需要与位于公网上的设备进行通讯来获取自己的公网信息。
STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址。STUN的探测过程需要有一个公网IP的STUN服务器,在NAT后面的客户端必须和此STUN服务器配合,互相之间发送若干个UDP(User Datagram Protocol,用户数据报协议)数据包。UDP包中包含有客户端需要了解的信息,比如NAT公网IP,公网端口等,客户端通过是否得到这个UDP包和包中的数据判断自己所属的NAT类型。
STUN的公网信息探测过程通常包括以下几个步骤:检测客户端是否有能力进行UDP通信以及客户端是否位于NAT后;判断NAT属于对称型NAT还是非对称型NAT;对于非对称型NAT还要进一步判断属于Full Cone NAT(完全圆锥型NAT)、Restricted Cone NAT(地址限制圆锥型)或是Port Restricted Cone NAT(端口限制圆锥型);判断网络是否支持回环。为实现判断NAT类型是否是IP限制型NAT(包括地址限制圆锥型和端口限制圆锥型),STUN服务端必须部署在一台有着两个公网IP的服务器上。
对于点对点数据传输应用而言,由于传输双方都只有一个固定的IP地址,不论是否为IP限制的NAT类型,都不影响客户端之间的点对点传输数据,在这种情况下采用传统STUN探测方法存在以下问题:1.STUN服务器端需要两个不同公网IP地址,造成网络设备和IP地址资源的浪费;2.存在不必要的协议交互过程,浪费交互时间,降低了探测效率。另外,目前研究认为当点对点一方是对称型NAT的情况下,若另一方不是完全圆锥型NAT,则无法进行点对点(P2P)数据传输,需要通过公网上的TURN服务器中转进行数据传输。这种处理方式,没有根据NAT的过滤属性进一步细分对称型NAT,忽略了部分类型的对称型NAT可以和其他NAT的网络实现点对点数据传输的可能性。
发明内容
本发明的目的之一在于克服以上缺点,提供一种用于点对点传输的公网信息探测方法,精简协议交互步骤,缩短协议交互探测时间,提高探测效率,同时提高点对点数据传输连接的的成功率。
为了解决上述技术问题,本发明提供了一种用于点对点传输的公网信息探测方法,包括以下步骤:
客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;
客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;
客户端进行公网信息的判断。
由于在点对点数据传输应用中,传输双方都只有一个固定的IP地址,不论是否为IP限制的NAT类型,都不影响客户端之间的点对点传输数据,本发明的技术方案通过省略判断是否为IP限制的NAT类型的步骤,缩短了探测交互时间,提高了探测效率;同时,由于省略了该步骤,也就不需要STUN服务器配置2个公网IP地址,节省了硬件和IP地址资源。
进一步地,所述公网信息包括客户端是否在NAT后面、客户端所在的NAT类型以及网络是否支持回环。
进一步地,所述客户端所在的NAT类型,根据NAT设备的映射表现和过滤表现属性分为非端口限制型,端口限制型,支持点对点的对称型NAT和不支持点对点的对称型NAT四类,所述非端口限制型包括完全圆锥型,地址限制型。
进一步地,所述支持点对点的对称型NAT包括SymNat1、SymNat2、SymNat3、SymNat4以及SymNat5,所述不支持点对点的对称型NAT为SymNat6。
本发明上述技术方案通过细分对称型NAT,增加了多种对称NAT可以实现点对点数据传输的情形,提高了不同NAT间的点对点成功率。
进一步地,所述客户端进行公网信息的判断,包括以下步骤:
判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
判断客户端所在的NAT类型;
判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环。
进一步地,所述判断客户端所在的NAT类型,包括以下步骤:
判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与所述公网IP地址NAT_IP2、所述公网端口NAT_PORT2是否相同,若均相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;
若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
相应地,本发明还提供了一种用于点对点传输的公网信息探测装置,包括:
第一请求模块,用于客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
消息解析模块,用于若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
回环测试模块,用于客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;
第二请求模块,用于客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;
公网信息判断模块,用于客户端进行公网信息的判断。
进一步地,所述公网信息判断模块,包括:
第一判断子模块,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
第二判断子模块,用于判断客户端所在的NAT类型;
第三判断子模块,用于判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环。
进一步地,所述第二判断子模块,包括:
第一判断构件,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与所述公网IP地址NAT_IP2、所述公网端口NAT_PORT2是否相同,若均相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
第二判断构件,用于若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;
第三判断构件,用于若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
相应地,本发明还提供了一种楼宇对讲系统,包含所述的用于点对点传输的公网信息探测装置。
本发明的技术方案通过省略判断是否为IP限制的NAT类型的步骤,减少了点对点数据传输时的探测交互时间,提高了探测效率;同时,由于省略了该步骤,也就不需要STUN服务器配置2个公网IP地址,节省了硬件和IP地址资源。另外,本发明通过进一步细分NAT类型,保证部分对称型NAT环境下也可以进行点对点数据传输,提高了点对点传输成功率。
附图说明
图1是本发明实施例的用于点对点传输的公网信息探测方法步骤流程图。
图2是本发明实施例的客户端进行公网信息的判断步骤流程图。
图3是本发明实施例的判断客户端所在的NAT类型步骤流程图。
图4是本发明实施例的用于点对点传输的公网信息探测装置结构框架图。
图5是本发明实施例的公网信息判断模块结构框架图。
图6是本发明实施例的第二判断子模块结构框架图。
图7是本发明实施例的楼宇对讲系统框架图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1,是本发明实施例的用于点对点传输的公网信息探测方法步骤流程图,包括以下步骤:
步骤1、客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
作为STUN公网信息探测的第一步,客户端首先需要确认能否与STUN服务器进行通信。通过发送绑定请求一给STUN服务器并测试能否接收到回复消息,就可确定客户端与STUN服务器之间通信是否正常,这里的PORT_A是客户端本地任意端口,PORT_X是STUN服务器的任意端口。
同时,发送绑定请求一的另一目的是可根据返回信息确认客户端是在公网上还是NAT后。另外,为了后续判断客户端所在的NAT类型,客户端从端口PORT_A再发送绑定请求二给STUN服务器不同于端口PORT_X的另一端口PORT_Y。
步骤2、若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
在具体的实施例中,客户端通常会设置等待响应消息的超时时间,例如,超时时间设置为300毫秒,在超时时间内没有收到所述绑定请求一或所述绑定请求二的响应消息,则客户端可以尝试多次发送绑定请求并接收回复消息,在多次均收不到响应消息的情况下,可以确认客户端和STUN服务器之间无法通信,本次探测失败,在具体的网络环境中,这种情况可能是由于防火墙或NAT阻止了通信导致。如果收到了响应消息,客户端分别解析响应消息,得到两次返回的公网IP地址NAT_IP1、NAT_IP2和公网端口NAT_PORT1、NAT_PORT2,用于后续判断是否为对称型NAT。
步骤3、客户端通过步骤一使用的本地端口PORT_A向响应消息中解析出的公网IP地址NAT_IP1以及公网端口NAT_PORT1发送回环测试消息;后续根据能否收到回环测试响应消息判断网络是否支持回环。
步骤4、客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;这里的PORT_B是不同于步骤一中PORT_A的任意端口,PROT_Z是不同于PORT_X,PORT_Y的任意端口,本步骤的目的是为了后续判断是否为端口限制型NAT。
步骤5、客户端进行公网信息的判断。
根据上述步骤能否收到响应消息以及响应消息的内容,客户端进行公网信息的判断,这里的判断包括客户端是否在NAT后面、客户端所在的NAT类型以及网络是否支持回环。
例1,在某一具体的场景中,客户端进行公网信息探测的步骤如下:
客户端通过本地IP地址192.168.1.10、本地端口8000往STUN服务器的端口8001发送绑定请求一,并通过本地端口8000往STUN服务器的端口8002发送绑定请求二;
客户端收到绑定请求一的响应消息,解析出公网IP地址211.97.123.1以及公网端口9001,解析所述绑定请求二的响应消息,得到公网IP地址211.97.123.2以及公网端口9002;
客户端通过本地端口8000往公网IP地址211.97.123.1以及公网端口9001发送回环测试消息,这里的公网IP地址和公网端口是绑定请求一的响应消息中解析出来的;
客户端通过本地端口7000往STUN服务器的端口8001发送绑定请求三,并设置参数请求服务器通过端口8003回复响应信息;
客户端根据绑定请求一,绑定请求二解析出的消息,以及能否收到回环探测响应消息,能否收到绑定请求三的响应消息,进行公网信息的判断。
传统的STUN公网信息探测流程中,由于需要判断NAT是否为IP地址限制型(包括地址限制型NAT和端口限制型NAT),必须存在如下步骤:客户端向STUN服务器的公网IP地址NATIP_1,公网端口NAT_PORT1发送数据包,并要求服务器用另一对公网IP地址NAT_IP2、公网端口NAT_PORT2响应客户端的请求往回发送响应信息,如果客户端不能收到响应信息,则NAT类型是IP地址限制型(不允许外网客户端以不同的IP地址给内网客户端发送消息包),否则是完全圆锥型NAT(允许外网客户端以不同的IP地址给内网客户端发送消息包)。这就要求STUN服务器必须部署两张网卡,并配置两个公网IP地址,才能与客户端进行探测信息的交互。
在针对点对点数据传输的应用中,传输双方都只有一个固定的IP地址,不会存在客户端之间通过不同的IP地址进行通信的情况,所以不论是否为IP限制的NAT类型,都不影响客户端之间的点对点传输数据,所以判断NAT是否为IP地址限制型的步骤完全可以省略。本发明的技术方案通过省略判断是否为IP限制的NAT类型的步骤,缩短了探测交互时间,提高了探测效率;同时,由于省略了该步骤,也就不需要STUN服务器配置2个公网IP地址,节省了硬件和IP地址资源。
如图2,是本发明实施例的客户端进行公网信息的判断步骤流程图,包括以下步骤:
步骤501、判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
由于绑定请求一中返回的NAT_IP1是公网IP地址,NAT_PORT1是公网端口,如果与客户端本地IP地址、本地端口均相同,这说明客户端本身就在公网上,具有公网IP可以直接监听UDP端口进行点对点数据通信;否则,说明客户端在NAT后面,必须进行NAT类型的判断。
在例1中,客户端的本地IP地址192.168.1.10、本地端口8000,绑定请求一的响应消息解析出公网IP地址211.97.123.1、公网端口9001,它们并不相同,说明客户端在NAT后面。
步骤502、判断客户端所在的NAT类型;
传统的NAT分类方法将NAT分成FullConeNat(完全圆锥NAT),RestrictedNat(地址限制NAT),PortRestrictedNat(端口限制NAT),SymNat(对称型NAT)四大类。
为了提高不同NAT情况下客户端A和客户端B之间点对点连接的成功率,以及根据点对点数据传输应用的特点,本发明将NAT类型分为非端口限制型NAT(包括传统的完全圆锥NAT、地址限制NAT),端口限制型NAT、支持点对点的对称型NAT以及不支持点对点的对称型NAT总共四大类。具体的分类步骤如下:
1)根据NAT设备的NAT_BEHAVIOR(映射表现)属性和NAT_FILTERING(过滤表现)属性将对称型NAT进一步细分成6类,对应SymNat1~SymNat6,总共分为9种NAT类型,具体分类如下表格所示:
其中,Endpoint-Independent Mapping(端点独立映射):对于从一个相同的内部IP地址和端口(X:x)发往任何外部IP地址和端口的随后数据包,NAT会重用端口映射;Address-Dependent Mapping(地址依赖性映射):对于接下来要从同一个内部IP地址和端口(X:x)发往同一个外部地址,不管外部端口号是多少,NAT都会重用端口映射;Addressand Port-Dependent Mapping(地址和端口依赖性映射):对于接下来要从同一个同部IP地址和端口(X:x)发往同一个外部地址和端口号的数据包,当映射依然处于活动状态的时候,NAT设备会重用端口映射。
Endpoint-Independent Filtering(端点独立的过滤):不管外部IP地址和端口号(Z:z)是多少,NAT都只过滤不发往内部IP地址和端口号(X:x)的数据包。NAT会转发所有发往X:x的数据包;Address-Dependent Filtering(地址依赖性过滤):NAT过滤不发往内部地址X:x的数据包。并且,如果X:x之前没有发送任何数据包给Y(和Y使用的端口无关),那么NAT设备就会过滤从Y:y发往X:x的数据包;Address and Port-Dependent Filtering地址和端口依赖性过滤:NAT过滤不发往内部地址X:x的数据包。并且,如果X:x之前没有发送任何数据包给Y:y,那么NAT设备就会过滤从Y:y发往X:x的数据包。
2)得到客户端A的NAT类型、客户端B的NAT类型、以及客户端A和客户端B是否支持点对点通讯的三者映射关系表。
从上述映射关系表可以看出并非所有对称网络都无法实现点对点,只有SymNat6与SymNat6以及SymNat6与PortRestrictedNat、SymNat6与SymNat3这三种NAT类型搭配无法实现点对点传输,其余的都可以实现点对点传输。因此,本发明将对称型NAT分为支持点对点的对称型NAT,包括SymNat1、SymNat2、SymNat3、SymNat4以及SymNat5;不支持点对点的对称型NAT,包括SymNat6。
同时,对于点对点数据传输双方均为固定IP地址的情况,FullConeNat(完全圆锥NAT)和RestrictedNat(地址限制NAT),后续可采取统一的处理方式,所以将他们归为非端口限制型NAT。
如图3,是本发明实施例的判断客户端所在的NAT类型步骤流程图。
将根据绑定消息一的响应消息解析出的公网IP地址NAT_IP1、公网端口NAT_PORT1与根据绑定消息二的响应消息解析出的公网IP地址NAT_IP2、公网端口NAT_PORT2进行比较,如果NAT_IP1与NAT_IP2相同且NAT_PORT1与NAT_PORT2相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;由于绑定请求三要求STUN服务器通过不同的端口回复响应消息,客户端若能收到消息,说明了客户端所在的NAT没有对端口号进行限制,允许外部客户端通过不同的端口给内部客户端发送消息,所以属于非限制端口型NAT,否则属于限制端口型NAT。
若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
在例1中,绑定请求一的响应消息解析出公网IP地址211.97.123.1、公网端口9001,绑定请求二的响应消息解析出公网IP地址211.97.123.2、公网端口9002,它们并不相同,说明客户端所在NAT是对称型NAT;
在进一步判断,客户端若收到了服务器通过端口8003回复的绑定请求三响应信息,说明客户端所在NAT是支持点对点的对称型NAT。
又如,在另一实施例中,绑定请求一的响应消息解析出公网IP地址211.97.123.1、公网端口9001,绑定请求二的响应消息解析出公网IP地址211.97.123.1、公网端口9001,它们完全相同,说明客户端所在NAT是非对称型NAT;
在进一步判断,客户端若收到了服务器通过端口8003回复的绑定请求三响应信息,说明客户端所在NAT是非端口限制型NAT。
步骤503、判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环。
在例1中,若客户端收到回环测试消息,则网络支持回环,否则网络不支持回环。
如图4,是本发明实施例的用于点对点传输的公网信息探测装置结构框架图,包括:
第一请求模块,用于客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
消息解析模块,用于若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
回环测试模块,用于客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;
第二请求模块,用于客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;
公网信息判断模块,用于客户端进行公网信息的判断。
如图5,是本发明实施例的公网信息判断模块结构框架图,包括:
第一判断子模块,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
第二判断子模块,用于判断客户端所在的NAT类型;
第三判断子模块,用于判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环。
如图6,是本发明实施例的第二判断子模块结构框架图,包括:
第一判断构件,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与所述公网IP地址NAT_IP2、所述公网端口NAT_PORT2是否相同,若均相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
第二判断构件,用于若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;
第三判断构件,用于若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
本发明的用于点对点传输的公网信息探测装置可应用在两个设备需进行数据传输的场景中。例如,楼宇对讲领域、安防监控领域、对讲领域等等。在楼宇对讲领域中,客户端可以是梯口机,室内机等楼宇设备,也可以是移动终端,例如手机、平板、智能穿戴式设备等等。
如图7,是本发明实施例的楼宇对讲系统框架图,包含上述的用于点对点传输的公网信息探测装置。
该楼宇对讲系统可用于实现访客与用户之间的视频对讲功能,通过包含本发明用于点对点传输的公网信息探测装置,双方客户端可以各自探测自己公网信息,判断客户端是否在NAT后面、客户端所在的NAT类型以及网络是否支持回环,再根据双方的公网信息,选择合适的点对点连接方式进行数据通信。
在一具体的应用实施例中,客户端A为梯口机,客户端B为手机。当梯口机和手机需要进行点对点数据传输时候,梯口机应用本发明的用于点对点传输的公网信息探测装置进行公网信息探测时,
第一请求模块,用于梯口机通过本地地址192.168.1.1、本地端口11000往STUN服务器的端口12000发送绑定请求一,并通过本地端口11000往STUN服务器的端口13000发送绑定请求二;
消息解析模块,用于若梯口机未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败,无法和手机进行点对点连接;否则梯口机解析所述绑定请求一的响应消息,得到公网IP地址211.97.123.183以及公网端口14000,解析所述绑定请求二的响应消息,得到公网IP地址211.97.123.100以及公网端口15000;
回环测试模块,用于梯口机通过本地端口11000往所述公网IP地址211.97.123.183以及所述公网端口14000发送回环测试消息;
第二请求模块,用于梯口机通过本地端口16000往STUN服务器的端口12000发送绑定请求三,并设置参数请求服务器通过端口19000回复响应信息;
公网信息判断模块,用于梯口机进行公网信息的判断。在本实施例中,绑定请求一返回的公网IP地址、公网端口与本地地址、本地端口均不相同,所以梯口机在NAT后;由于绑定请求一返回的公网IP地址、公网端口与绑定请求二返回的公网IP地址、公网端口均不相同,所以梯口机所在的NAT是对称型NAT;同时,梯口机可以收到服务端从端口19000回复的响应消息,所以梯口机所在的NAT是支持点对点传输的对称型NAT。另外,梯口机未收到回环测试响应消息,则本网络不支持回环。
同样的,对于另一客户端B手机,应用本发明的用于点对点传输的公网信息探测装置进行公网信息探测时,
第一请求模块,用于手机通过本地地址192.168.1.2、本地端口21000往STUN服务器的端口22000发送绑定请求一,并通过本地端口21000往STUN服务器的端口23000发送绑定请求二;
消息解析模块,用于若手机未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败,无法和梯口机进行点对点连接;否则手机解析所述绑定请求一的响应消息,得到公网IP地址211.97.123.50以及公网端口24000,解析所述绑定请求二的响应消息,得到公网IP地址211.97.123.50以及公网端口24000;
回环测试模块,用于手机通过本地端口21000往所述公网IP地址211.97.123.50以及所述公网端口24000发送回环测试消息;
第二请求模块,用于手机通过本地端口26000往STUN服务器的端口22000发送绑定请求三,并设置参数请求服务器通过端口29000回复响应信息;
公网信息判断模块,用于手机进行公网信息的判断。在本实施例中,绑定请求一返回的公网IP地址、公网端口与本地地址、本地端口均不相同,所以手机在NAT后;由于绑定请求一返回的公网IP地址、公网端口与绑定请求二返回的公网IP地址、公网端口均相同,所以手机所在的NAT是非对称型NAT;同时本实施例中,手机可以收到服务端从端口29000回复的响应消息,所以手机所在的NAT是非端口限制型NAT。另外,手机未收到回环测试响应消息,则本网络不支持回环。
在梯口机和手机都探测到自己的公网信息后,根据本发明的不同NAT类型点对点传输映射关系表可以知道,支持点对点传输的对称型NAT与非端口限制型NAT之间是可以进行点对点数据传输,梯口机和手机就可以建立点对点连接进行数据通信。
总之,两个以上设备之间需要进行点对点数据传输时,均可应用本发明的装置。通过包含本发明用于点对点传输的公网信息探测装置,各自探测公网信息,并根据结果判断是否能进行点对点的数据传输。
Claims (6)
1.一种用于点对点传输的公网信息探测方法,其特征在于,包括以下步骤:
客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;
客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;
客户端进行公网信息的判断;
其中,所述客户端进行公网信息的判断,包括以下步骤:
步骤1、判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
步骤2、判断客户端所在的NAT类型;
步骤3、判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环;
所述步骤2判断客户端所在的NAT类型,包括以下步骤:
步骤21、判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与所述公网IP地址NAT_IP2、所述公网端口NAT_PORT2是否相同,若均相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
步骤22、若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;
步骤23、若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
2.如权利要求1所述的用于点对点传输的公网信息探测方法,其特征在于,所述公网信息包括客户端是否在NAT后面、客户端所在的NAT类型以及网络是否支持回环。
3.如权利要求2所述的用于点对点传输的公网信息探测方法,其特征在于,所述客户端所在的NAT类型,根据NAT设备的映射表现和过滤表现属性分为非端口限制型,端口限制型,支持点对点的对称型NAT和不支持点对点的对称型NAT四类,所述非端口限制型包括完全圆锥型,地址限制型。
4.如权利要求3所述的用于点对点传输的公网信息探测方法,其特征在于,所述支持点对点的对称型NAT包括SymNat1、SymNat2、SymNat3、SymNat4以及SymNat5,所述不支持点对点的对称型NAT为SymNat6。
5.一种用于点对点传输的公网信息探测装置,其特征在于,包括:
第一请求模块,用于客户端通过本地端口PORT_A往STUN服务器的端口PORT_X发送绑定请求一,并通过本地端口PORT_A往STUN服务器的端口PORT_Y发送绑定请求二;
消息解析模块,用于若客户端未收到所述绑定请求一或所述绑定请求二的响应消息,则本次探测失败;否则客户端解析所述绑定请求一的响应消息,得到公网IP地址NAT_IP1以及公网端口NAT_PORT1,解析所述绑定请求二的响应消息,得到公网IP地址NAT_IP2以及公网端口NAT_PORT2;
回环测试模块,用于客户端通过本地端口PORT_A往所述公网IP地址NAT_IP1以及所述公网端口NAT_PORT1发送回环测试消息;
第二请求模块,用于客户端通过本地端口PORT_B往STUN服务器的端口PORT_X发送绑定请求三,并设置参数请求服务器通过端口PORT_Z回复响应信息;
公网信息判断模块,用于客户端进行公网信息的判断;
所述公网信息判断模块,包括:
第一判断子模块,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与本地IP地址、本地端口PORT_A是否相同,若相同则客户端不是在NAT后面,否则客户端在NAT后面,并进行后续判断;
第二判断子模块,用于判断客户端所在的NAT类型;
第三判断子模块,用于判断是否收到所述回环测试消息的响应信息,若有收到,则网络支持回环,否则网络不支持回环;
所述第二判断子模块,包括:
第一判断构件,用于判断所述公网IP地址NAT_IP1、所述公网端口NAT_PORT1与所述公网IP地址NAT_IP2、所述公网端口NAT_PORT2是否相同,若均相同,则客户端所在的NAT是非对称型NAT,否则客户端所在的NAT是对称型NAT;
第二判断构件,用于若客户端所在的NAT是非对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为非端口限制型NAT,否则客户端所在的NAT为端口限制型NAT;
第三判断构件,用于若客户端所在的NAT是对称型NAT,进一步判断是否收到所述绑定请求三的响应信息,若有收到,则客户端所在的NAT为支持点对点的对称型NAT,否则客户端所在的NAT为不支持点对点的对称型NAT。
6.一种楼宇对讲系统,其特征在于,包含权利要求5所述的用于点对点传输的公网信息探测装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610160234.1A CN105847343B (zh) | 2016-03-21 | 2016-03-21 | 用于点对点传输的公网信息探测方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610160234.1A CN105847343B (zh) | 2016-03-21 | 2016-03-21 | 用于点对点传输的公网信息探测方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105847343A CN105847343A (zh) | 2016-08-10 |
CN105847343B true CN105847343B (zh) | 2019-01-25 |
Family
ID=56587510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610160234.1A Active CN105847343B (zh) | 2016-03-21 | 2016-03-21 | 用于点对点传输的公网信息探测方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105847343B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612920A (zh) * | 2017-09-30 | 2018-01-19 | 深圳市艾特智能科技有限公司 | 对讲方法、对讲系统、可读存储介质和计算机设备 |
CN108011932B (zh) * | 2017-11-22 | 2020-11-27 | 新华三技术有限公司 | 接入处理方法及装置 |
CN109660637B (zh) * | 2018-11-16 | 2024-01-19 | 深圳市网心科技有限公司 | P2p打洞传输方法和系统、电子装置及计算机可读存储介质 |
CN109831547B (zh) * | 2019-03-14 | 2022-02-22 | 腾讯科技(深圳)有限公司 | Nat穿透方法、装置、设备及存储介质 |
CN110751800B (zh) * | 2019-10-08 | 2021-06-29 | 中兴飞流信息科技有限公司 | 一种基于视频ai智能分析的语音告警提示系统 |
CN111193813B (zh) * | 2019-10-24 | 2021-07-20 | 腾讯科技(深圳)有限公司 | 确定nat类型的测试请求处理方法、装置和计算机设备 |
CN112887187B (zh) * | 2021-01-19 | 2022-09-06 | 海尔数字科技(青岛)有限公司 | 一种设备间通信建立方法、系统、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681337A (zh) * | 2007-05-16 | 2010-03-24 | 微软公司 | 具有边缘路由能力的对等协作系统 |
CN102196057A (zh) * | 2010-03-03 | 2011-09-21 | 腾讯科技(深圳)有限公司 | 一种确定nat类型的方法及装置 |
CN105187567A (zh) * | 2015-06-24 | 2015-12-23 | 东莞市南星电子有限公司 | 一种基于sip和ice的音视频通信方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912046B2 (en) * | 2005-02-11 | 2011-03-22 | Microsoft Corporation | Automated NAT traversal for peer-to-peer networks |
US7801059B2 (en) * | 2007-04-20 | 2010-09-21 | Panasonic Corporation | IP communication apparatus and NAT type determination method by the same |
-
2016
- 2016-03-21 CN CN201610160234.1A patent/CN105847343B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681337A (zh) * | 2007-05-16 | 2010-03-24 | 微软公司 | 具有边缘路由能力的对等协作系统 |
CN102196057A (zh) * | 2010-03-03 | 2011-09-21 | 腾讯科技(深圳)有限公司 | 一种确定nat类型的方法及装置 |
CN105187567A (zh) * | 2015-06-24 | 2015-12-23 | 东莞市南星电子有限公司 | 一种基于sip和ice的音视频通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105847343A (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105847343B (zh) | 用于点对点传输的公网信息探测方法、装置及系统 | |
CN101217536B (zh) | 穿越网络地址转换设备/防火墙的方法、系统及客户端 | |
CN105681445B (zh) | 数据的点对点传输路径选择方法及装置 | |
CN106230898B (zh) | 网络系统、代理服务器及其应用的数据处理方法及系统 | |
CN100521663C (zh) | 点对点通信中穿越网络地址转换的方法 | |
CN103957287A (zh) | 一种基于nat穿透适配器的物联网设备p2p连接方法 | |
CN105721570B (zh) | 数据点对点传输方法及装置 | |
CN106911778A (zh) | 一种流量引导方法和系统 | |
CN103414799B (zh) | 中继地址互通方法和终端及系统 | |
CN105635335B (zh) | 社会资源接入方法、装置及系统 | |
CN103347099B (zh) | 一种数据交互的方法、装置及系统 | |
CN102291473B (zh) | 一种家庭网络设备管理系统穿透nat方法 | |
CN106878259A (zh) | 一种报文转发方法及装置 | |
CN101834775A (zh) | 媒体流传输方法、系统及用户终端 | |
CN104506396B (zh) | 设备全端口Full Mesh性能的测试方法及系统 | |
CN107645339A (zh) | 一种光纤直放站自动实现拓扑结构的方法及装置 | |
CN105915662B (zh) | 一种数据传输方法及装置 | |
CN104660728B (zh) | 基于智能家居控制系统的nat穿透方法 | |
CN105049300B (zh) | 一种检测nat网络类型的方法及装置 | |
CN107659436A (zh) | 一种防止业务中断的方法及装置 | |
CN103516820A (zh) | 基于mac地址的端口映射方法和装置 | |
CN115022281B (zh) | 一种nat穿透的方法、客户端及系统 | |
CN101465852B (zh) | 在网络视频会议系统中实现网内穿透的方法 | |
US20180063255A1 (en) | Method and Apparatus for Terminal Application Accessing NAS | |
JP2005142800A (ja) | 監視用端末、ネットワーク監視システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |