CN115022279B - 内网穿透方法和装置 - Google Patents
内网穿透方法和装置 Download PDFInfo
- Publication number
- CN115022279B CN115022279B CN202210624685.1A CN202210624685A CN115022279B CN 115022279 B CN115022279 B CN 115022279B CN 202210624685 A CN202210624685 A CN 202210624685A CN 115022279 B CN115022279 B CN 115022279B
- Authority
- CN
- China
- Prior art keywords
- port
- terminal
- address
- external network
- network address
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000035515 penetration Effects 0.000 title claims abstract description 41
- 238000012360 testing method Methods 0.000 claims abstract description 60
- 230000008859 change Effects 0.000 claims abstract description 38
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000005540 biological transmission Effects 0.000 claims abstract description 15
- 238000006243 chemical reaction Methods 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000011330 nucleic acid test Methods 0.000 abstract description 4
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
- H04L61/256—NAT traversal
-
- 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
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的实施例公开了内网穿透方法和装置。该方法的具体实施方式包括:第一终端获取内网的网络地址转换类型;若是对称型,则获取端口变化范围和外网地址;将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。该实施方式实现了对称NAT的打洞。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体涉及内网穿透方法和装置。
背景技术
NAT(Network Address Translation,网络地址转换),用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。NAT的使用是为了解决公网IP有限及局域网安全性的问题。
NAT将内部网络的信息隐藏和转换,如果要实现隐藏在NAT下的设备之间通信(对等网络传输),则必须穿透NAT;此外,NAT网关实际上并不能实现对通信双方的全透明,因为用户可以在传输的数据包中携带IP和端口信息(而不是在IP header中)。但现有技术不能实现对称型NAT打洞。
发明内容
本公开的实施例提出了内网穿透方法和装置。
第一方面,本公开的实施例提供了一种内网穿透方法,应用于第一终端,包括:获取内网的网络地址转换类型;若是对称型,则获取端口变化范围和外网地址;将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。
在一些实施例中,获取端口变化范围和外网地址,包括:向stun服务器的第一地址的第一端口发送绑定消息,接收stun服务器返回的客户端的映射IP和映射端口;向stun服务器发送改变地址消息,接收stun服务器返回的服务器第二地址和第二端口;向stun服务器的第二地址的第二端口发送绑定消息,接收stun服务器返回的客户端的绑定IP和绑定端口;根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。
在一些实施例中,所述根据所述映射端口和所述绑定端口确定端口变化范围,包括:根据所述映射端口和所述绑定端口中的最小值和最大值确定端口变化范围。
在一些实施例中,所述方法还包括:若在预定时间内未接收到第二终端发送的消息,则重新获取端口变化范围和外网地址;将更新后的端口变化范围和更新后的外网地址发送给第二终端。
第二方面,本公开的实施例提供了一种内网穿透方法,应用于第二终端,包括:接收第一终端发送的端口变化范围和外网地址;根据所述端口变化范围和所述外网地址计算出测试地址集;依次向所述测试地址集中的地址发消息;响应于接收到所述第一终端发送的响应消息,停止向所述测试地址集中的地址发消息;根据响应消息的地址与所述第二终端建立数据传输。
在一些实施例中,所述根据所述端口变化范围和所述外网地址计算出测试地址集,包括:在所述端口变化范围内进行枚举得到偏移量集;将所述外网地址中的端口分别和偏移量集中的偏移量相加得到测试端口集;将所述外网地址中的IP和测试端口集组合生成测试地址集。
第三方面,本公开的实施例提供了一种内网穿透装置,应用于第一终端,包括:判断单元,被配置成获取内网的网络地址转换类型;获取单元,被配置成若是对称型,则获取端口变化范围和外网地址;发送单元,被配置成将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;建立单元,被配置成响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。
在一些实施例中,获取单元进一步被配置成:获取端口变化范围和外网地址,包括:向stun服务器的第一地址的第一端口发送绑定消息,接收stun服务器返回的客户端的映射IP和映射端口;向stun服务器发送改变地址消息,接收stun服务器返回的服务器第二地址和第二端口;向stun服务器的第二地址的第二端口发送绑定消息,接收stun服务器返回的客户端的绑定IP和绑定端口;根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。
在一些实施例中,获取单元进一步被配置成:根据所述映射端口和所述绑定端口中的最小值和最大值确定端口变化范围。
在一些实施例中,所述装置还包括重试单元,被配置成:若在预定时间内未接收到第二终端发送的消息,则重新获取端口变化范围和外网地址;将更新后的端口变化范围和更新后的外网地址发送给第二终端。
第四方面,本公开的实施例提供了一种内网穿透装置,应用于第二终端,包括:接收单元,被配置成接收第一终端发送的端口变化范围和外网地址;计算单元,被配置成根据所述端口变化范围和所述外网地址计算出测试地址集;试探单元,被配置成依次向所述测试地址集中的地址发消息;停止单元,被配置成响应于接收到所述第一终端发送的响应消息,停止向所述测试地址集中的地址发消息;建立单元,被配置成根据响应消息的地址与所述第二终端建立数据传输。
在一些实施例中,计算单元进一步被配置成:在所述端口变化范围内进行枚举得到偏移量集;将所述外网地址中的端口分别和偏移量集中的偏移量相加得到测试端口集;将所述外网地址中的IP和测试端口集组合生成测试地址集。
第五方面,本公开的实施例提供了一种用于内网穿透的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面或第二方面中任一项所述的方法。
第六方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面或第二方面中任一项所述的方法。
本公开的实施例提供的内网穿透方法和装置,针对对称NAT进行端口的分析和预测,然后根据预测的端口进行试探,从而找到每个外网设备对应的端口,实现了对称NAT的打洞,并使得P2P业务能够在对称NAT设备下正常运行。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1a、1b是本公开的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本公开的内网穿透方法的一个实施例的流程图;
图3是根据本公开的内网穿透方法的又一个实施例的流程图;
图4a-4c是根据本公开的内网穿透方法的一个应用场景的示意图;
图5是根据本公开的内网穿透装置的一个实施例的结构示意图;
图6是根据本公开的内网穿透装置的又一个实施例的结构示意图;
图7是适于用来实现本公开的实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1a、1b示出了可以应用本公开的内网穿透方法或内网穿透装置的实施例的示例性系统架构。
如图1a、1b所示,系统架构可包括终端设备EpA、EpB、EpC、EpD,网络设备NAT。终端设备之间通过网络交互。网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;网络访问只能先由私网侧发起,公网无法主动访问私网主机;NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;NAT网关的存在对通信双方是保持透明的;NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。
终端设备EpA、EpB、EpC、EpD可以是硬件,也可以是软件。当终端设备EpA、EpB、EpC、EpD为硬件时,可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备EpA、EpB、EpC、EpD为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
图1a、1b中终端设备EpA使用的是私网IP,通过NAT转换成公网IP与其它终端设备进行通信。NAT有多种类型:
1、Full Cone(全锥型):NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.
2、Restricted Cone NAT(受限锥型):NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用任何端口和A通信.其他的外网机器不行.
3、Port Restricted NAT(端口受限锥型):NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用原来的端口和A通信.其他的外网都不行。
4、Symmetric NAT(对称型NAT):对称型在安全策略上即在对收到外网发送过来的数据所做的操作与端口限制型是一样的。它与端口限制锥型主要的区别就是当内网对外网发送包时,在对内网地址进行转换时对不同目的外网地址ip:port,分配不同的端口。对于这种NAT,连接不同的外部目标,原来NAT打开的端口会变化,如图1a所示,被叉掉的线表示EpB与EpA之间的端口B、C不通,只保留了一个通的端口A。
图1a中在NAT上映射的端口A、B、C为线性关系f(x)=x+n。通过已知的端口号x和端口号取值范围n可以预测出端口A、B、C。
图1b中EpB、EpC、EpD看到的EpA的IP分别为(x.x.x.a)、(x.x.x.b)、(x.x.x.c),a,b,c为线性关系f(x)=x+n。通过已知的IP x和IP取值范围n可以预测出IP a,b,c。
需要说明的是,本公开的实施例所提供的内网穿透方法一般由终端设备执行,相应地,内网穿透装置一般设置于终端设备中。
应该理解,终端设备和NAT的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备和NAT。
继续参考图2,示出了根据本公开的内网穿透方法的一个实施例的流程200。该内网穿透方法,包括以下步骤:
步骤201,获取内网的网络地址转换类型。
在本实施例中,内网穿透方法的执行主体(例如图4a所示的第一终端)可以通过常规的NAT类型检测方法进行检测获得NAT类型,也可获取NAT的属性信息,直接得到NAT类型。
步骤202,若是对称型,则获取端口变化范围和外网地址。
在本实施例中,如果是除对称型之外的类型,可通过常规的内网穿透方法进行打洞,但如果是对称型,则需要获取端口变化范围和外网地址来进行预测。NAT设备分配IP和端口时会有一定规律,因此可以直接从NAT设备获取分配规则,包括端口变化范围和外网地址(可以只包括IP不包含端口,也可以既包括IP还包括端口)等。例如,只要知道NAT的设备型号就可以知道端口变化范围。还可通过向NAT发消息查询外网地址。通常情况外网地址不变,但是端口会变化,即图1a所示的情景。但有时也会出现IP和端口都变化的情况,即图1b所示的情景。
在本实施例的一些可选的实现方式中,获取端口变化范围和外网地址,包括:向stun服务器的第一地址的第一端口发送绑定消息,接收stun服务器返回的客户端的映射IP和映射端口;向stun服务器发送改变地址消息,接收stun服务器返回的服务器第二地址和第二端口;向stun服务器的第二地址的第二端口发送绑定消息,接收stun服务器返回的客户端的绑定IP和绑定端口;根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。
STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT路由器之后的主机之间创建UDP通信。该协议由RFC 5389定义。
STUN的探测过程需要有stun服务器(具有两个公网IP),在NAT后面的终端设备必须和此stun服务器配合,互相之间发送若干个UDP数据包。UDP包中包含有终端设备需要了解的信息,比如NAT外网IP,端口等等。终端设备通过是否得到这个UDP包和包中的数据判断自己的NAT类型。
如图4a所示,假设有如下第一终端,第二终端,NAT,stun服务器,第一终端的IP为IPB,NAT的IP为IPA,stun服务器的IP为IPC1(第一地址+第一端口)、IPC2(第二地址+第二端口)。请注意,stun服务器有两个IP。
(1)NAT的探测过程
STEP1:第一终端向stun服务器的IPC1的port1端口发送一个绑定消息。stun服务器收到这个包后,会把它收到包的映射IP和映射端口(即图4b-4c中的mapped_ip和mapped_port)写到UDP包中,然后把此包通过IPC1和port1发还给第一终端。这个IP和port也就是NAT的外网IP和port,也就是说在STEP1中就得到了NAT的外网IP。
如果向stun服务器发送数据包后,没有收到stun服务器的任何回应包,那只有两种可能:1、stun服务器不存在,或者弄错了port。2、NAT设备拒绝一切UDP包从外部向内部通过(不支持cone NAT)。
当第一终端收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网,下步NAT将去探测防火墙类型。如果不一样,说明有NAT的存在,系统进行STEP2的操作。
STEP2:第一终端向stun服务器的IPC1发送改变地址消息,请求stun服务器通过另外一个IPC2和PORT2(第二地址和第二端口)向第一终端返回一个UDP数据包(stun服务器有两个IP是为了检测cone NAT的类型)。
如果第一终端收到了这个数据包,可从数据包解析出第二地址和第二端口。
STEP3:第一终端向stun服务器的第二地址的第二端口发送绑定消息,stun服务器收到绑定消息后,把它收到包的绑定IP和绑定端口(即图4b-4c中的bind_result[0].addr.ipv4和bind_result[0].addr.port)写到UDP包中,然后通过自己的IPC2和port2把此包发还给第一终端。
和STEP 1一样,第一终端肯定能收到这个回应UDP包。如果这个port和STEP1中的port一样,那么可以肯定这个NAT是个CONE NAT,否则是对称NAT。道理很简单:根据对称NAT的规则,当目的地址的IP和port有任何一个改变,那么NAT都会重新分配一个port使用,而在STEP3中,和STEP1对应,改变了IP和port。因此,如果是对称NAT,那这两个port肯定是不同的。
如果到此步的时候port是不同的,那么这个它就是处在一个对称NAT下了。如果相同,那么只剩下了restrict cone和port restrict cone。系统用STEP 4探测是那一种。
STEP4:第一终端向stun服务器的IPC2的一个端口PD发送一个数据请求包,要求stun服务器用IP2和不同于PD的port返回一个数据包给第一终端。如果第一终端收到了,那也就意味着只要IP相同,即使port不同,NAT也允许UDP包通过。显然这是restrict coneNAT。如果没收到,则是port restrict NAT。
STEP5:如果是对称NAT,则可根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。如图4b和4c所示,可根据已知的IP和端口来预测端口变化范围,例如,映射IP和绑定IP如果一致,则可预测出第一终端的公网IP保持不变,但端口变化。映射端口和绑定端口可设置为端口变化范围。可选地,端口变化范围可以是端口的偏移量,例如,50,则预测的端口值为已知端口值基础上±50,如果已知端口值为128,则预测的端口为[128-50,128+50]。可以用函数表示f(x)=x+n,f(x)为预测的端口,x为已知端口(例如,通过stun服务器获取的第一端口或第二端口),n是端口变化范围。则预测的端口为[x-n,x+n]。如图4b所示为IP不变但端口递变的情况,端口满足一个线性函数f(x)=x+n(其中n可以为正负值)。
可选地,还可获取到IP变化范围,第二终端可以根据IP变化范围和外网地址计算出测试地址集。如图4c所示为IP变化但端口不变的情况,IP低位基本满足一个线性函数f(x)=x+n,即使未满足其可变化值也在可接受范围。
可选地,第一终端可向多个stun服务器发消息来获得更多的地址数据,从而可以更准确地计算出端口变化范围。用尽量小的端口变化范围,可以减少第二终端试探连接的次数,从而减少连接时延。
在本实施例的一些可选的实现方式中,根据所述映射端口和所述绑定端口确定端口变化范围,包括:根据所述映射端口和所述绑定端口中的最小值和最大值确定端口变化范围。例如,映射端口为20,绑定端口和50,则可将端口变化范围设置为[21,49]。
步骤203,将端口变化范围和外网地址发送给第二终端。
在本实施例中,第二终端是用于和第一终端进行P2P连接的终端设备。第二终端事先不知道第一终端会通过什么地址与自己通信,当第二终端接收到端口变化范围和外网地址后,可以根据端口变化范围和外网地址计算出测试地址集,并依次向测试地址集中的地址发消息。例如,第二终端收到了外网地址是22.22.22.21,端口变化范围是[0,100],则可依次向22.22.22.21:0,22.22.22.21:1…22.22.22.21:100发消息。用于试探哪个端口与第一终端相通,如果测试出相通的端口,则无需再向其它端口发测试消息。
步骤204,响应于接收到第二终端发送的消息,与第二终端建立数据传输。
在本实施例中,第二终端通过尝试各种端口试探出相通的端口。则第一终端可通过该相通的端口与第二终端建立数据传输。即实现了对称NAT的打洞,从而实现了对称NAT下的P2P连接。
在本实施例的一些可选的实现方式中,该方法还包括:若在预定时间内未接收到第二终端发送的消息,则重新获取端口变化范围和外网地址;将更新后的端口变化范围和更新后的外网地址发送给第二终端。如果超时仍未接收到第二终端发送的消息,则可能是之前预测的端口变化范围和外网地址不准确,需要重新预测。可通过步骤202的方法重新获取端口变化范围和外网地址。可以更换stun服务器,以重新获取映射IP、绑定IP、映射端口和绑定端口,从而重新确定端口变化范围和外网地址。还可向同一stun服务器执行多次获取映射IP、绑定IP、映射端口和绑定端口的步骤,从而可获取大量地址数据,以便更准确地预测出端口变化范围和外网地址。
进一步参考图3,其示出了内网穿透方法的又一个实施例的流程300。该内网穿透方法的流程300,包括以下步骤:
步骤301,接收第一终端发送的端口变化范围和外网地址。
在本实施例中,内网穿透方法的执行主体(例如图4a所示的第二终端)可以通过有线通信或无线通信的方式接收第一终端发送的端口变化范围和外网地址。
步骤302,根据端口变化范围和外网地址计算出测试地址集。
在本实施例中,在端口变化范围内选择一些端口,与外网地址组合生成测试地址集。例如,端口变化范围是[1,100],则可在此区间选择一部分候选端口,例如,奇数端口或偶数端口等。可根据经验值或者并发能力来设置较少的候选端口,从而减少试探的次数,降低连接时延。
步骤303,依次向测试地址集中的地址发消息。
在本实施例中,为了试探测试地址集中的地址是否是通路,可依次向每个测试地址发送UDP数据包。可选地,可以并行向不同的测试地址集中的地址发消息,并发能力取决于第二终端自身的性能。
步骤304,响应于接收到第一终端发送的响应消息,停止向测试地址集中的地址发消息。
在本实施例中,响应消息可以是约定好的UDP数据包。如果检测到通路则后续不用再试探别的测试地址。
步骤305,根据响应消息的地址与第二终端建立数据传输。
在本实施例中,接收到响应消息说明对称NAT打洞成功,可以进行P2P业务交互。
在本实施例的一些可选的实现方式中,根据所述端口变化范围和所述外网地址计算出测试地址集,包括:在所述端口变化范围内进行枚举得到偏移量集;将所述外网地址中的端口分别和偏移量集中的偏移量相加得到测试端口集;将所述外网地址中的IP和测试端口集组合生成测试地址集。例如,端口变化范围为[1,100],则枚举出1-100的自然数作为端口的偏移量。然后在外网地址中的端口的基础上加上偏移量得到测试端口。再将外网地址中的IP和测试端口集组合生成测试地址集。通过枚举的方式能够保证不遗漏地进行端口试探,提高了预测的成功率。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了一种内网穿透装置应用于第一终端的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的内网穿透装置500包括:判断单元501、获取单元502、发送单元503和建立单元504。其中,判断单元501,被配置成获取内网的网络地址转换类型;获取单元502,被配置成若是对称型,则获取端口变化范围和外网地址;发送单元503,被配置成将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;建立单元504,被配置成响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。
在本实施例中,内网穿透装置500的判断单元501、获取单元502、发送单元503和建立单元504的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203、步骤204。
在本实施例的一些可选的实现方式中,获取单元502进一步被配置成:获取端口变化范围和外网地址,包括:向stun服务器的第一地址的第一端口发送绑定消息,接收stun服务器返回的客户端的映射IP和映射端口;向stun服务器发送改变地址消息,接收stun服务器返回的服务器第二地址和第二端口;向stun服务器的第二地址的第二端口发送绑定消息,接收stun服务器返回的客户端的绑定IP和绑定端口;根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。
在本实施例的一些可选的实现方式中,获取单元502进一步被配置成:根据所述映射端口和所述绑定端口中的最小值和最大值确定端口变化范围。
在一些实施例中,装置500还包括重试单元(附图中未示出),被配置成:若在预定时间内未接收到第二终端发送的消息,则重新获取端口变化范围和外网地址;将更新后的端口变化范围和更新后的外网地址发送给第二终端。
进一步参考图6,作为对上述各图所示方法的实现,本公开提供了一种内网穿透装置应用于第二终端的一个实施例,该装置实施例与图3所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的内网穿透装置600包括:接收单元601、计算单元602、试探单元603、停止单元604和建立单元605。其中,接收单元601,被配置成接收第一终端发送的端口变化范围和外网地址;计算单元602,被配置成根据所述端口变化范围和所述外网地址计算出测试地址集;试探单元603,被配置成依次向所述测试地址集中的地址发消息;停止单元604,被配置成响应于接收到所述第一终端发送的响应消息,停止向所述测试地址集中的地址发消息;建立单元605,被配置成根据响应消息的地址与所述第二终端建立数据传输。
在本实施例的一些可选的实现方式中,计算单元602进一步被配置成:在所述端口变化范围内进行枚举得到偏移量集;将所述外网地址中的端口分别和偏移量集中的偏移量相加得到测试端口集;将所述外网地址中的IP和测试端口集组合生成测试地址集。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质。
一种用于内网穿透的电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如流程200或300所述的方法。
一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如流程200或300所述的方法。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如内网穿透方法。例如,在一些实施例中,内网穿透方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的内网穿透方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行内网穿透方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。服务器可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (10)
1.一种内网穿透方法,应用于第一终端,包括:
获取内网的网络地址转换类型;
若是对称型,则获取端口变化范围和外网地址;
将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;
响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。
2.根据权利要求1所述的方法,其中,所述获取端口变化范围和外网地址,包括:
向stun服务器的第一地址的第一端口发送绑定消息,接收stun服务器返回的客户端的映射IP和映射端口;
向stun服务器发送改变地址消息,接收stun服务器返回的服务器第二地址和第二端口;
向stun服务器的第二地址的第二端口发送绑定消息,接收stun服务器返回的客户端的绑定IP和绑定端口;
根据所述映射IP和所述绑定IP确定候选IP集,并根据所述映射端口和所述绑定端口确定端口变化范围。
3.根据权利要求2所述的方法,其中,所述根据所述映射端口和所述绑定端口确定端口变化范围,包括:
根据所述映射端口和所述绑定端口中的最小值和最大值确定端口变化范围。
4.根据权利要求1所述的方法,其中,所述方法还包括:
若在预定时间内未接收到第二终端发送的消息,则重新获取端口变化范围和外网地址;
将更新后的端口变化范围和更新后的外网地址发送给第二终端。
5.一种内网穿透方法,应用于第二终端,包括:
接收第一终端发送的端口变化范围和外网地址;
根据所述端口变化范围和所述外网地址计算出测试地址集;
依次向所述测试地址集中的地址发消息;
响应于接收到所述第一终端发送的响应消息,停止向所述测试地址集中的地址发消息;
根据响应消息的地址与所述第一终端建立数据传输。
6.根据权利要求5所述的方法,其中,所述根据所述端口变化范围和所述外网地址计算出测试地址集,包括:
在所述端口变化范围内进行枚举得到偏移量集;
将所述外网地址中的端口分别和偏移量集中的偏移量相加得到测试端口集;
将所述外网地址中的IP和测试端口集组合生成测试地址集。
7.一种内网穿透装置,应用于第一终端,包括:
判断单元,被配置成获取内网的网络地址转换类型;
获取单元,被配置成若是对称型,则获取端口变化范围和外网地址;
发送单元,被配置成将所述端口变化范围和所述外网地址发送给第二终端,其中,所述第二终端根据所述端口变化范围和所述外网地址计算出测试地址集,并依次向所述测试地址集中的地址发消息;
建立单元,被配置成响应于接收到第二终端发送的消息,与所述第二终端建立数据传输。
8.一种内网穿透装置,应用于第二终端,包括:
接收单元,被配置成接收第一终端发送的端口变化范围和外网地址;
计算单元,被配置成根据所述端口变化范围和所述外网地址计算出测试地址集;
试探单元,被配置成依次向所述测试地址集中的地址发消息;
停止单元,被配置成响应于接收到所述第一终端发送的响应消息,停止向所述测试地址集中的地址发消息;
建立单元,被配置成根据响应消息的地址与所述第一终端建立数据传输。
9.一种用于内网穿透的电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个计算机程序,
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210624685.1A CN115022279B (zh) | 2022-06-02 | 2022-06-02 | 内网穿透方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210624685.1A CN115022279B (zh) | 2022-06-02 | 2022-06-02 | 内网穿透方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115022279A CN115022279A (zh) | 2022-09-06 |
CN115022279B true CN115022279B (zh) | 2024-04-16 |
Family
ID=83072162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210624685.1A Active CN115022279B (zh) | 2022-06-02 | 2022-06-02 | 内网穿透方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115022279B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115499411B (zh) * | 2022-09-21 | 2023-07-21 | 北京百度网讯科技有限公司 | 一种网络穿透系统、方法、装置及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1787523A (zh) * | 2004-12-08 | 2006-06-14 | 华为技术有限公司 | 动态打开网络地址转换和防火墙端口的方法 |
EP1819134A1 (en) * | 2006-02-13 | 2007-08-15 | Samsung Electronics Co.,Ltd. | Symmetric network adress translation system using STUN technique and method for implementing the same |
CN106210092A (zh) * | 2016-07-19 | 2016-12-07 | 天彩电子(深圳)有限公司 | 一种融合upnp及stun的p2p穿越方法及其系统 |
CN106302846A (zh) * | 2015-06-12 | 2017-01-04 | 华为技术有限公司 | 一种通信连接建立方法及装置、系统 |
CN108989488A (zh) * | 2018-09-06 | 2018-12-11 | 腾讯科技(深圳)有限公司 | 网络地址转换设备的穿越方法、装置及存储介质 |
CN109600449A (zh) * | 2018-12-24 | 2019-04-09 | 深圳市网心科技有限公司 | 一种p2p穿透方法、装置、系统及存储介质 |
CN109831547A (zh) * | 2019-03-14 | 2019-05-31 | 腾讯科技(深圳)有限公司 | Nat穿透方法、装置、设备及存储介质 |
CN110581903A (zh) * | 2019-09-16 | 2019-12-17 | 上海享途网络科技有限公司 | 一种多层内网穿透方法、系统及介质 |
CN110933197A (zh) * | 2019-11-27 | 2020-03-27 | 太仓市同维电子有限公司 | 一种分布式代理网络 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8224985B2 (en) * | 2005-10-04 | 2012-07-17 | Sony Computer Entertainment Inc. | Peer-to-peer communication traversing symmetric network address translators |
US7738468B2 (en) * | 2005-03-22 | 2010-06-15 | Logitech Europe S.A. | Method and apparatus for packet traversal of a network address translation device |
WO2007048344A1 (fr) * | 2005-10-28 | 2007-05-03 | Huawei Technologies Co., Ltd. | Procede d’etablissement de la connexion poste a poste, procede, dispositif et systeme de realisation de nat de traversee de communication reseau |
TW201002018A (en) * | 2008-06-26 | 2010-01-01 | D Link Corp | Method for predicting port number of NAT apparatus based on two STUN server inquiry results |
US8149851B2 (en) * | 2009-03-16 | 2012-04-03 | Sling Media, Inc. | Mediated network address translation traversal |
TWI493924B (zh) * | 2013-04-10 | 2015-07-21 | D Link Corp | Through the two network devices to help complete the STUN technology network system and its methods |
-
2022
- 2022-06-02 CN CN202210624685.1A patent/CN115022279B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1787523A (zh) * | 2004-12-08 | 2006-06-14 | 华为技术有限公司 | 动态打开网络地址转换和防火墙端口的方法 |
EP1819134A1 (en) * | 2006-02-13 | 2007-08-15 | Samsung Electronics Co.,Ltd. | Symmetric network adress translation system using STUN technique and method for implementing the same |
CN106302846A (zh) * | 2015-06-12 | 2017-01-04 | 华为技术有限公司 | 一种通信连接建立方法及装置、系统 |
CN106210092A (zh) * | 2016-07-19 | 2016-12-07 | 天彩电子(深圳)有限公司 | 一种融合upnp及stun的p2p穿越方法及其系统 |
CN108989488A (zh) * | 2018-09-06 | 2018-12-11 | 腾讯科技(深圳)有限公司 | 网络地址转换设备的穿越方法、装置及存储介质 |
CN109600449A (zh) * | 2018-12-24 | 2019-04-09 | 深圳市网心科技有限公司 | 一种p2p穿透方法、装置、系统及存储介质 |
CN109831547A (zh) * | 2019-03-14 | 2019-05-31 | 腾讯科技(深圳)有限公司 | Nat穿透方法、装置、设备及存储介质 |
CN110581903A (zh) * | 2019-09-16 | 2019-12-17 | 上海享途网络科技有限公司 | 一种多层内网穿透方法、系统及介质 |
CN110933197A (zh) * | 2019-11-27 | 2020-03-27 | 太仓市同维电子有限公司 | 一种分布式代理网络 |
Also Published As
Publication number | Publication date |
---|---|
CN115022279A (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708393B (zh) | 用于传输数据的方法、装置和系统 | |
CN109831547B (zh) | Nat穿透方法、装置、设备及存储介质 | |
US9143421B2 (en) | Network system capable of implementing stun with the assistance of two network devices and method thereof | |
KR20150013860A (ko) | 클라이언트 없는 클라우드 컴퓨팅 | |
CN115022279B (zh) | 内网穿透方法和装置 | |
CN112351115B (zh) | 对称型nat设备的端口预测方法及装置 | |
CN108141381B (zh) | 用以使电缆测试结果与电缆测试配置协调的系统和方法 | |
CN109819070B (zh) | 一种网络地址转换方法 | |
CN110061888B (zh) | 网络协议类型判断方法、装置、计算机设备及存储介质 | |
CN111107119B (zh) | 基于云存储系统的数据访问方法、装置、系统及存储介质 | |
CN104735073B (zh) | IPv4-IPv6过渡协议调度方法和装置 | |
US11122131B1 (en) | Edge cloud resource location using enhanced DNS service | |
CN107222365B (zh) | 数据处理方法、装置及服务器 | |
CN112073553B (zh) | 网络地址转换类型的检测方法、装置、设备及存储介质 | |
CN114598532B (zh) | 连接建立方法、装置、电子设备和存储介质 | |
US10375175B2 (en) | Method and apparatus for terminal application accessing NAS | |
CN112804366A (zh) | 用于解析域名的方法和装置 | |
US10333892B2 (en) | Network communication system and network-traversal method | |
CN112019641B (zh) | 数据传输方法和装置 | |
CN114520780A (zh) | 用于代理服务器的接入方法及装置 | |
CN115499411B (zh) | 一种网络穿透系统、方法、装置及电子设备 | |
CN113032659B (zh) | 针对设备信息的信息处理方法、电子设备和介质 | |
CN112449024A (zh) | 一种nat模拟网关的内网穿透方法、设备、存储介质 | |
US10826952B2 (en) | Conference access method and terminal for performing the same | |
US11063869B2 (en) | ARP table management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |