一种基于端口复用和TCP加密技术的内网穿透方法与流程

文档序号:24738674发布日期:2021-04-20 20:48阅读:441来源:国知局
一种基于端口复用和TCP加密技术的内网穿透方法与流程
一种基于端口复用和tcp加密技术的内网穿透方法
技术领域
1.本发明涉及通信技术领域,具体涉及一种基于端口复用和tcp加密技术的内网穿透方法。


背景技术:

2.近年来随着网络服务的崛起、路由器的普及,人们对内部网络的访问需求逐渐增加。传统的网络穿透一般采用公网服务器进行网络流量转发。在不同内网节点相互通信时,其本质是将数据发送到公网服务器,然后再由公网服务器将数据转发到另一个内网的客户端上。所以传统的网络穿透方法需要消耗大量的公网服务器流量,而且如果涉及多个网络穿透访问对公网服务器性能也有很高要求。
3.端口复用技术可以使某个端口在保持连接的情况下再与其他socket进行连接并进行数据通信。但普通的端口复用技术会暴露复用端口到网络中容易造成漏洞被黑客利用,产生安全问题。


技术实现要素:

4.本发明针对现有技术存在的问题提供一种不消耗服务器流量,不占用服务器资源的基于端口复用和tcp加密技术的内网穿透方法。
5.本发明采用的技术方案是:一种基于端口复用和tcp加密技术的内网穿透方法,包括以下步骤:步骤1:服务器启动端口复用的tcp监听;步骤2:内网中客户端a采用端口复用的方式连接服务器;步骤3:其他内网中客户端b采用端口复用的方式向服务器发送连接客户端a的请求;步骤4:服务器将客户端a的地址发送给客户端b;步骤5:客户端b收到客户端a的地址,发起tcp连接实现通信。
6.进一步的,所述步骤2中服务器需要判断客户端a是否是第一次连接服务器;若是则服务器分配给客户端a唯一标识符,保存并发送给客户端a;若不是第一次连接服务器则客户端a将唯一标识符发送给服务器。
7.进一步的,所述步骤1中服务器采用异步方式启用端口复用的tcp监听。
8.进一步的,所述步骤4中客户端a的地址包括ip地址和端口。
9.进一步的,步骤3之后、执行所述步骤4之前需要判断客户端a是否已经被连接,若客户端a已经被连接则不执行步骤4。
10.进一步的,所述步骤5执行完毕后还包括以下步骤:客户端b断开连接,服务器接管等待下一次连接。
11.进一步的,通信过程中对传输数据进行加密。
12.进一步的,所述加密的加密方式为以下加密方式中的一种:des、aes192、aes256、
aes512。
13.进一步的,所述tcp监听连接需要通过socket属性设置为端口复用。
14.进一步的,所述唯一标识符为uuid。
15.本发明的有益效果是:(1)本发明中服务器仅在客户端间进行连接时消耗极少流量,当不同内网的客户端完成连接之后,完全不需要公网服务器参与,而是直接的进行客户端与客户端的点对点通信;(2)本发明能有效节约服务器流量、降低网络穿透成本并提高流量转发效率;(3)本发明客户端、服务器间均使用本地配置的加密方式和加密密钥进行通信,能够防止黑客利用复用端口对操作系统进行攻击,保证连接主机的安全。
附图说明
16.图1为本发明方法采用的系统结构示意图。
17.图2为本发明方法流程示意图。
具体实施方式
18.下面结合附图和具体实施例对本发明做进一步说明。
19.如图2所示,一种基于端口复用和tcp加密技术的内网穿透方法,包括以下步骤:本发明方法基于的系统如图1所示,包括两个局域网,两个内网中分别有一个客户端,还有一个在公网的服务器。
20.步骤1:服务器启动端口复用的tcp监听;服务器为带公网ip的服务器,使用异步方式启用linux的socket套接字的tcp监听进程。并将套接字属性设置为端口复用。等待不同网络的客户端来进行连接,并根据配置文件选择制定的加密方式以及设置对应的加密密钥。
21.步骤2:内网中客户端a采用端口复用的方式连接服务器;内网中待连接节点,启动客户端a,并使用异步端口复用方式连接服务器端口。判断本地软件路径下是否有保存好的uuid,如果有则发送给服务器。如果没有表示客户端为第一次打开,需要到服务器申请uuid,用于之后其他客户端连接的标志。并根据配置文件选择与服务器对应的加密方式以及加密密钥进行数据通信。
22.服务器接收来自内网客户端a的连接,保留通信套接字。服务器根据对应的加密方式和密钥进行解密,并从通信套接字中获取客户端a的连接外部ip地址和端口,保存到服务器的待连接主机列表中。保存之前服务器需要判断客户端是否发送uuid过来,如果未收到客户端a发送的uuid,则服务器认为客户端为第一次打开软件,此时服务器通过snowflake算法为客户端a分配一个唯一的uuid。并将次id通过tcp的方式发送给客户端a。注意服务器保存客户端a的信息到待连接主机列表时,需要已该uuid为关键字,方便之后其他客户端连接时用于查询。
23.客户端a收到服务器发来消息,通过对应的加密密钥以及加密方式进行解密,得到uuid并保存到本地。之后重新打开软件时可直接将这个uuid发送给服务器,这样服务器不再重新分配。该uuid也是其他网络中客户端连接该客户端的唯一标志。如果是之前已经打
开过客户端的设备则跳过这一步。如果解密之后不是有效信息直接丢弃,防止黑客利用复用端口对系统进行攻击。
24.步骤3:其他内网中客户端b采用端口复用的方式向服务器发送连接客户端a的请求;其他内网网络中,启动客户端b,选择与服务器对应的加密方式与加密密钥,并使用异步端口复用方式连接服务器端口。同样进行步骤2流程后,客户端b需要将真正需要连接的客户端a的uuid信息发送给服务器,告知服务器客户端b需要直接连接客户端a。如果客户端b不发送连接请求,表示客户端b也是待连接的主机,于是服务器直接将客户端b放入待连接主机列表。
25.步骤4:服务器将客户端a的地址发送给客户端b;服务器收到客户端b发送来的直接连接客户端a的请求之后,通过对应的加密方式和加密密钥进行解密。根据发来的uuid从待连接主机列表中查找客户端a的外部ip和端口。如果找到则将客户端a暴露于外网ip和端口发送给客户端b,并将待连接主机列表中客户端a、b的数据移动到已连接主机列表。此时其他客户端无法再直接与客户端a相连,因为端口复用技术通信只针对最后一个连接才能生效。
26.步骤5:客户端b收到客户端a的地址,发起tcp连接实现通信。
27.客户端b收到客户端a暴露于外网的ip之后,由于都是采用的端口复用方式,所以客户端b可以通过客户端a暴露于外网的ip和地址直接连接客户端a。此时客户端a和客户端b之间的数据传输完全走公网,不再需要服务器的任何参与。
28.当客户端b和客户端a完成数据传输之后,客户端b主动断开连接。根据端口复用原理此时网络连接又只有服务器与客户端a,服务器将客户端a的信息从已连接主机列表中移动到待连接主机列表,等待其他客户端再次进行连接。
29.本发明中服务器仅在客户端间进行连接时消耗极少流量(不到1kb),当不同内网的客户端完成连接之后,完全不需要公网服务器参与,而是直接的客户端与客户端的点对点通信。能够有效的节约服务器流量、降低网络穿透成本并提高流量转发效率。其次,本发明客户端、服务器之间均使用本地配置的加密方式与加密密钥进行通信,能够有效的防止黑客利用复用端口对操作系统进行攻击,保证连接主机的安全性。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1