Vpn网络数据交互方法和系统及其网络数据交互设备的制作方法
【专利摘要】本发明涉及虚拟专用网技术,其提供了一种VPN网络数据交互方法,其包括:用于封装并发送数据包的步骤,该步骤包括:基于TCP三次握手协议建立与公用网络节点之间的连接;在加密数据包前添加伪TCP头部,形成伪TCP数据包;利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,用以将所述伪TCP数据包转发至目标VPN节点。本发明的方法相比现有技术的方式,提高了VPN网络的兼容性好,实现了性能较高的VPN连接。本发明还提供了一种VPN网络数据交互系统及其设备。
【专利说明】VPN网络数据交互方法和系统及其网络数据交互设备
【技术领域】
[0001]本发明涉及虚拟专用网技术,特别是涉及一种VPN网络数据交互方法和系统及其网络数据交互设备。
【背景技术】
[0002]随着Internet的迅猛发展和网络社会化的到来,网络已经无所不在地影响着社会的政治、经济、文化、军事、意识形态和社会生活等各个方面。同时在全球范围内针对重要信息资源和网络基础设施的入侵行为和企图入侵行为的数量仍在持续不断增加,网络攻击与入侵行为对国家安全、经济和社会造成了极大的威胁。
[0003]如图1所示,虚拟专用网(英语:Virtual Private Network,简称VPN),是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内联网的网络讯息。它利用已加密的通道协议(Tunneling Protocol)来达到保密、传送端认证、信息准确性等私人信息安全效果。
[0004]图1中,现有VPN技术(VPN-Virtual Private Network,即指在公用网络上建立专用网络的技术)主要通过以下两种方式来实现:
[0005](I)对数据包进行加密后,通过UDP (是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI (Open System Interconnect1n,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。)来进行传输。直接通过UDP协议传输数据时,由于P2P等协议都采用UDP来实现,运营商往往会对UDP协议进行流量控制,防止网络拥塞,结果就会导致使用UDP协议建立的VPN极不稳定。
[0006](2)对数据包进行加密后,通过TCP (Transmiss1n Control Protocol,即传输控制协议)来进行传输。使用该方式传输时,则会存在诸如数据传输流程比较复杂、需要等待确认数据包是否收到、如果一有丢包就需要重传等情况的发生,导致其性能表现不够好。
[0007]鉴于以上两种方式均会使VPN在实际使用过程中存在一定的缺陷,则需要改进VPN专用网络接入公共网络时的数据传输方式。
【发明内容】
[0008]基于此,有必要针对因UDP网络兼容性不好、TCP天生性能不足导致VPN在实际使用过程中存在的缺陷,提供一种VPN网络数据交互方法和系统及其网络数据交互设备。
[0009]一种VPN网络数据交互方法,所述方法包括:
[0010]用于封装并发送数据包的步骤,该步骤包括:
[0011]基于TCP三次握手协议建立与公用网络节点之间的连接;
[0012]在加密数据包前添加伪TCP头部,形成伪TCP数据包;
[0013]利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,用以将所述伪TCP数据包转发至目标VPN节点;
[0014]用于接收并处理数据包的步骤,该步骤包括:
[0015]接收来自所述公用网络节点转发的伪TCP数据包;
[0016]去除所述伪TCP数据包的伪TCP头部,获得相应的加密数据包。
[0017]在其中一个实施例中,在执行所述用于封装并发送数据包的步骤或执行用于接收并处理数据包的步骤之前,所述方法还包括:建立与目标VPN节点之间的虚拟专用网络通信隧道。
[0018]在其中一个实施例中,所述伪TCP头部为符合TCP协议格式要求、但选项字段被赋值为用于与真实TCP数据包相区分的特定标志的TCP头部字段。
[0019]在其中一个实施例中,所述方法中,对应用数据进行分段、压缩、添加MAC地址信息后加密形成所述加密数据包。
[0020]在其中一个实施例中,所述接收来自所述公用网络节点转发的伪TCP数据包的步骤包括:
[0021]接收来自公用网络节点转发的数据包;
[0022]判断所述接收的数据包是否具有伪TCP头部,若是,则判定接收的数据包为伪TCP数据包,用于执行去除伪TCP头部的步骤,若否,则采用VPN技术中的解密技术对接收的数据包直接进行处理。
[0023]基于上述方法,本发明还提供了一种VPN网络数据交互系统,其包括:
[0024]公用网络节点,配置为用于转发来自VPN节点的数据包;
[0025]VPN节点,配置为用于基于TCP三次握手协议建立与所述公用网络节点之间的连接,在加密数据包前添加伪TCP头部形成伪TCP数据包,再利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点;或者接收来自所述公用网络节点的伪TCP数据包,并去除所述伪TCP数据包的伪TCP头部获得相应的加密数据包。
[0026]在其中一个实施例中,所述VPN节点还包括判断接收的来自所述公用网络节点的数据包是否具有伪TCP头部,针对具有伪TCP头部的数据包去除所述伪TCP头部,获得相应的加密数据包。
[0027]基于上述系统,本发明还提供了一种VPN网络数据交互设备,其包括:
[0028]TCP会话协议模块,用于基于TCP三次握手协议建立与公用网络节点之间的连接;
[0029]TCP数据封装/解封装模块,用于在加密数据包前添加伪TCP头部形成伪TCP数据包,或者将接收到的伪TCP数据包去除所述伪TCP头部获得所述加密数据包;及
[0030]数据转发/接收模块,用于利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,或者接收来自公用网络节点的所述伪TCP数据包。
[0031]在其中一个实施例中,所述设备还包括:通信隧道建立模块,用于建立与目标VPN节点之间的虚拟专用网络通信隧道。
[0032]在其中一个实施例中,所述设备还包括:数据加密/解密模块,用于采用VPN技术中的加密技术对数据进行加密形成所述加密数据包,或者采用VPN技术中的解密技术对接收的加密数据包进行解密处理。
[0033]上述VPN网络数据交互方法、系统及设备中,通过基于TCP三次握手协议建立与公用网络节点的连接后,对内网数据包加密后,再加上伪TCP头部不通过协议栈而采用通过底层数据传输的方式,通过公用网络节点将数据包转发给目标VPN节点,而目标VPN节点则直接从底层收到伪TCP包后,去除伪TCP头部,解密数据包,从而获得应用数据。本发明的方法相比现有技术的方式,提高了 VPN网络的兼容性好,实现了性能较高的VPN连接。
【专利附图】
【附图说明】
[0034]图1为现有的VPN网络基本功能图;
[0035]图2为本发明的VPN网络数据交互方法的一实施例流程示意图;
[0036]图3为本发明的VPN网络数据交互方法的另一实施例流程示意图;
[0037]图4为本发明的VPN网络数据交互系统的架构示意图;
[0038]图5为本发明的最优实施例的网络信息传输流程示意图;
[0039]图6为TCP数据封装/解封装模块的结构示意图。
【具体实施方式】
[0040]本发明通过提供的一种VPN网络数据交互的新方法,既解决了由于UDP流控导致VPN网络建立不起来的问题,又解决TCP性能不足的问题,从而实现了 VPN的网络适应能力和有UDP流控环境下的网络性能的双重提升。本发明的具体实施例通过以下实施例说明。
[0041]如图2所示,本实施例提供了一种VPN网络数据交互方法,其包括:用于封装并发送数据包的步骤和用于接收并处理数据包的步骤,这两个步骤是相应的逆向过程,具体如下所述。
[0042]在用于封装并发送数据包的步骤中,该步骤包括:
[0043]步骤201:基于TCP三次握手协议建立与公用网络节点之间的连接。
[0044]步骤202:在加密数据包前添加伪TCP头部,形成伪TCP数据包;这里的加密数据包是指对应用数据进行分段、压缩、添加MAC地址信息后加密形成的数据包,即通过VPN加密技术形成的VPN数据包。
[0045]步骤203:利用数据链路控制协议将伪TCP数据包传送至公用网络节点,用以将伪TCP数据包转发至目标VPN节点。本实施例的VPN节点可以是VPN网关、路由,或者具有VPN网关或路由功能的终端或服务器。本实施例的公用网络节点可以是公用网络服务器、路由、网关等等。在本实施例中利用数据链路控制协议通过底层传输伪TCP数据包至目标VPN节点,而数据包的处理跳过传输层、协议栈直接在IP层进行。
[0046]在用于接收并处理数据包的步骤中,该步骤包括:
[0047]步骤301:接收来自公用网络节点转发的伪TCP数据包;
[0048]步骤302:去除伪TCP数据包的伪TCP头部,获得相应的加密数据包。
[0049]在上述实施例中,如图3所示,上述用于接收并处理数据包的步骤中,步骤301包括:
[0050]步骤311:接收来自公用网络节点转发的数据包;
[0051]步骤312:判断接收的数据包是否具有伪TCP头部,若是,则判定接收的数据包为伪TCP数据包,执行步骤302,去除伪TCP头部,获得加密数据包,从而再利用VPN技术中的解密技术对其进行解密处理,若否,则判定接收的数据包为非伪TCP数据包,执行步骤313:采用VPN技术中的解密技术对接收的数据包直接进行处理。
[0052]在上述实施例中,在执行用于封装并发送数据包的步骤或执行用于接收并处理数据包的步骤之前,所述方法还包括:建立与目标VPN节点之间的虚拟专用网络通信隧道。这里的虚拟专用网络通信隧道即VPN隧道,可以采用常规方法实现,比如通过源VPN节点发起建立通信隧道连接的请求给地址代理服务器,地址代理服务器根据请求中的目标终端地址提供目标VPN节点的外网地址,然后再由源VPN节点将应用数据按照不同的VPN技术加密成不同的VPN数据包,并就目标VPN节点的外网地址一并发送给公用网络服务器,然后由公用网络服务器将相应数据发送目标VPN节点,再由目标VPN节点发送给目标终端。
[0053]在本实施例中,上述步骤201基于TCP三次握手协议建立与公用网络节点之间的连接通过发起TCP三次握手协议来与所述公用网络节点实现通信连接。具体方式可以参见标准的TCP三次握手协议。
[0054]在本实施例中,上述步骤202的伪TCP头部包括随机生成或预设的虚拟源目标主机端口号、目标主机端口号、顺序号、确认号、头部长度、标志位、窗口大小、校验字、选项字段中的几个字段的组合,完全符合TCP协议要求的格式,但是在伪TCP头部中的选项字段被赋值为特定标志,用于与真实TCP数据包相区分,表示该TCP数据包为非真实TCP数据包,即伪TCP数据包。这里主要针对VPN数据包,将其伪装成TCP数据包发送给公用网络节点,避免数据被限制或者被排队等候,从而提高VPN网络的适应性能,但是,其只是具有TCP头部特征但为非真实的TCP数据包,所以不具备TCP数据流的特征,比如发送端不等待确认号,不重传,不限制流量,没有拥塞控制,从而提高了 VPN网络的数据传输速度。
[0055]基于上述方法,如图4所示,本实施例提供了一种VPN网络数据交互系统,其包括:
[0056]公用网络节点,配置为用于转发来自VPN节点的数据包;
[0057]VPN节点,配置为用于基于TCP三次握手协议建立与所述公用网络节点之间的连接,在加密数据包前添加伪TCP头部形成伪TCP数据包,再利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,用以将所述伪TCP数据包转发至所述目标VPN节点;或者接收来自所述公用网络节点的伪TCP数据包,并去除所述伪TCP数据包的伪TCP头部获得相应的加密数据包。这里的VPN节点可以是VPN网关、路由,或者具有VPN网关或路由功能的终端或服务器。
[0058]在本实施例的VPN节点上增加了实现上述方法的功能,主要是为了使VPN节点适配公用网络节点实现上述VPN网络数据交互方法。鉴于上述方法中还包括判断接收的来自公有网络节点是否是伪TCP数据包的步骤,则上述VPN节点中还可以是:VPN节点配置为用于基于TCP三次握手协议建立与所述公用网络节点之间的连接,在加密数据包前添加伪TCP头部形成伪TCP数据包,再利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点;或者判断接收的来自所述公用网络节点的数据包是否具有伪TCP头部,针对具有伪TCP头部的数据包去除所述伪TCP头部,获得相应的加密数据包。这里的判断接收的来自公用网络节点的数据包是否是伪TCP数据包的依据是判断数据包是否具有伪TCP头部,而根据上述有关伪TCP头部的解释,可以理解在判断是否具有伪TCP头部时只要读取选项字段就可以判定了,如果选项字段是上述预设的特定标志,则表示是伪TCP头部,反之则为真实的TCP数据包。
[0059]基于上述系统和方法,如图4所示,本实施例还提供了一种VPN网络数据交互设备400,其包括:
[0060]TCP会话协议模块405,用于基于TCP三次握手协议建立与公用网络节点之间的连接;
[0061 ] TCP数据封装/解封装模块404,用于在加密数据包前添加伪TCP头部形成伪TCP数据包,或者将接收到的伪TCP数据包去除所述伪TCP头部获得所述加密数据包 '及
[0062]数据转发/接收模块401,用于利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,或者接收来自公用网络节点的所述伪TCP数据包。
[0063]在其中一个实施例中,所述设备还包括:通信隧道建立模块403,用于建立与目标VPN节点之间的虚拟专用网络通信隧道。
[0064]在其中一个实施例中,所述设备还包括:数据加密/解密模块402,用于采用VPN技术中的加密技术对数据进行加密形成加密数据包,或者采用VPN技术中的解密技术对加密数据包进行解密处理。本模块的主要实现方式可参见VPN技术中有关数据包的封装和加密方式。
[0065]在其中一个实施例中,如图6所示,上述TCP数据封装/解封装模块404包括以下单元:
[0066]输入单元414,用于接收来自外部的加密数据包或来自公用网络节点的数据包,比如来自数据加密/解密模块402的加密数据包或者来自公用网络节点的数据包;
[0067]封装单元424,用于在加密数据包前添加伪TCP头部形成伪TCP数据包;
[0068]判断单元454,用于依据判断来自公用网络节点的数据包是否具有TCP头部,来划分数据包的类型为伪TCP数据包或非伪TCP数据包;
[0069]解封装单元444,用于将接收到的伪TCP数据包去除伪TCP头部获得相应的加密数据包;及
[0070]输出单元434,用于将封装单元424生成的伪TCP数据包发送给数据转发/接收模块401,或者将解封装单元444获得加密数据包或输入单元接收的非伪TCP数据包发送给数据加密/解密模块402进行解密处理。
[0071]下面结合附图5说明本发明方法中有关数据交互的最优实施例,其中公有网络服务器作为公有网络节点,以下方法在于实现第一私有网络终端A与第二私有网络终端B的数据交互,第一私有网络内的各个终端通过源VPN节点转发消息,第二私有网络内的各个终端通过目标VPN节点转发消息。
[0072]步骤601:源VPN节点根据第一私有网络终端A的需求向地址代理服务器发送登陆连接请求,此登陆连接请求中含有告知地址代理服务器的第二私有网络终端B (即目标终端)的私有网络地址。
[0073]步骤602:根据上述登陆连接请求中的目标终端私有网路地址,地址代理服务器查找并反馈相应的目标VPN节点外网地址。
[0074]步骤603:根据获得的目标VPN节点外网地址,源VPN节点向公用网络服务器发送请求建立VPN通信隧道的连接请求。
[0075]步骤604:接收上述连接请求,公用网络服务器将上述连接请求转发给目标VPN节点。
[0076]步骤605:接收上述连接请求,目标VPN节点反馈给公用网络服务器响应所述连接请求的应答消息。
[0077]步骤606:公用网络服务器在接收到所述应答消息后,告知源VPN节点目标节点已准备建立连接的消息。
[0078]步骤607:源VPN节点收到来自公用网络服务器的上述告知消息,并反馈应答消息,说明源VPN节点与目标VPN节点之间的虚拟专用网络通信隧道已建立成功,准备传输数据包。
[0079]步骤608 -M VPN节点发送SYN (SEQ = x)报文给公用网络服务器,进入SYN_SEND状态。
[0080]步骤609:公用网络服务器收到SYN报文,回应一个SYN(SEQ = y)ACK(ACK = x+1)报文,进入SYN_RECV状态。
[0081]步骤610:源VPN节点收到公用网络服务器的SYN报文,回应一个ACK (ACK = y+1)报文,进入Established状态。通过步骤608、609、610实现基于TCP三次握手协议的与公用网络服务器之间的连接。
[0082]步骤611:在源VPN节点内,根据VPN技术对应用数据进行分段、压缩、添加MAC地址信息后加密形成加密数据包,在此加密数据包前添加伪TCP头部形成伪TCP数据包(即满足TCP数据包格式要求、但选项字段被赋值为用于与真实TCP数据包相区分的特定标志的数据包),然后利用数据链路控制协议将伪TCP数据包传送至公用网络服务器。
[0083]步骤612:公用网络服务器直接将接收的伪TCP数据包,通过上述建立的虚拟专用网络通信隧道转发至目标VPN节点。目标VPN节点接收来自公用网络服务器转发的伪TCP数据包,去除伪TCP数据包的伪TCP头部后获得相应的加密数据包,或者目标VPN节点判断接收的来自公用网络服务器转发的数据包是否具有伪TCP头部(即判断接收的数据包中TCP头部的选项字段是否是上述特定标志),若是则判定接收的数据包为伪TCP数据包,去除伪TCP头部,获得相应的加密数据包;若否,则判定接收的数据包为非伪TCP数据包,采用VPN技术中的解密技术对接收的数据包直接进行处理。通过VPN技术中的解密技术解密该加密数据包获知第二私有网络终端B(即目标终端)的地址,并转发解密后的数据给该第二私有网络终端B。
[0084]上述实施例通过添加伪TCP头部封装数据包和底层传输数据包的方式,可以较好地适应公网环境,又有较高的性能,在公网环境下适应性表现较好,提高了 VPN的适应性、可用性和性能。
[0085]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如R0M/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0086]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种VPN网络数据交互方法,其特征在于,所述方法包括: 用于封装并发送数据包的步骤,该步骤包括: 基于TCP三次握手协议建立与公用网络节点之间的连接; 在加密数据包前添加伪TCP头部,形成伪TCP数据包; 利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,用以将所述伪TCP数据包转发至目标VPN节点; 用于接收并处理数据包的步骤,该步骤包括: 接收来自所述公用网络节点转发的伪TCP数据包; 去除所述伪TCP数据包的伪TCP头部,获得相应的加密数据包。
2.根据权利要求1所述的VPN网络数据交互方法,其特征在于, 在执行所述用于封装并发送数据包的步骤或执行用于接收并处理数据包的步骤之前,所述方法还包括:建立与目标VPN节点之间的虚拟专用网络通信隧道。
3.根据权利要求1所述的VPN网络数据交互方法,其特征在于,所述伪TCP头部为符合TCP协议格式要求、但选项字段被赋值为用于与真实TCP数据包相区分的特定标志的TCP头部字段。
4.根据权利要求1所述的VPN网络数据交互方法,其特征在于,所述方法中,对应用数据进行分段、压缩、添加MAC地址信息后加密形成所述加密数据包。
5.根据权利要求1所述的VPN网络数据交互方法,其特征在于,所述接收来自所述公用网络节点转发的伪TCP数据包的步骤包括: 接收来自公用网络节点转发的数据包; 判断所述接收的数据包是否具有伪TCP头部,若是,则判定接收的数据包为伪TCP数据包,用于执行去除伪TCP头部的步骤,若否,则采用VPN技术中的解密技术对接收的数据包直接进行处理。
6.一种VPN网络数据交互系统,其特征在于,所述系统包括: 公用网络节点,配置为用于转发来自VPN节点的数据包; VPN节点,配置为用于基于TCP三次握手协议建立与所述公用网络节点之间的连接,在加密数据包前添加伪TCP头部形成伪TCP数据包,再利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点;或者接收来自所述公用网络节点的伪TCP数据包,并去除所述伪TCP数据包的伪TCP头部获得相应的加密数据包。
7.根据权利要求6所述的VPN网络数据交互系统,其特征在于,所述VPN节点还包括判断接收的来自所述公用网络节点的数据包是否具有伪TCP头部,针对具有伪TCP头部的数据包去除所述伪TCP头部,获得相应的加密数据包。
8.—种VPN网络数据交互设备,其特征在于,所述设备包括: TCP会话协议模块,用于基于TCP三次握手协议建立与公用网络节点之间的连接; TCP数据封装/解封装模块,用于在加密数据包前添加伪TCP头部形成伪TCP数据包,或者将接收到的伪TCP数据包去除所述伪TCP头部获得所述加密数据包;及 数据转发/接收模块,用于利用数据链路控制协议将所述伪TCP数据包传送至所述公用网络节点,或者接收来自公用网络节点的所述伪TCP数据包。
9.根据权利要求8所述的VPN网络数据交互设备,其特征在于,所述设备还包括: 通信隧道建立模块,用于建立与目标VPN节点之间的虚拟专用网络通信隧道。
10.根据权利要求8所述的VPN网络数据交互设备,其特征在于,所述设备还包括:数据加密/解密模块,用于采用VPN技术中的加密技术对数据进行加密形成所述加密数据包,或者采用VPN技术中的解密技术对接收的加密数据包进行解密处理。
【文档编号】H04L12/46GK104184646SQ201410452481
【公开日】2014年12月3日 申请日期:2014年9月5日 优先权日:2014年9月5日
【发明者】吴利斌 申请人:深信服网络科技(深圳)有限公司