本发明涉及通信技术领域,尤指一种传输控制协议(Transmission Control Protocol,TCP)代理方法及装置。
背景技术:
为了解决宽带业务运营面临的挑战,通常在终端与互联网连接的关口上部署网关设备,实现精细化数据业务控制管理。为了实现精细化数据业务控制管理,通常网关设备需要解析7层数据包的内容,并根据其内容和相关属性进行相关处理,例如内容适配、内容增强、防病毒、网络加速。由于基本上所有网络服务都是基于TCP,为了实现上述的相关处理,网关设备需要监听每个TCP连接,并在TCP连接上增加数据、修改数据、删除数据等。然而,由于TCP具有面向连接、面向数据流、可靠及提供流控机制的特点,如果简单地对数据进行增加、修改或删除操作,必然会影响连接的正确性。为了在保证TCP连接正确的基础上进行增加数据、修改数据或者删除数据等操作,TCP代理技术应运而生。
域名系统(Domain Name System,DNS)是由一串用点分隔的名字组成的互联网上服务器的名称,用于在数据传输时标识服务器的电子方位。DNS通常包括主域名及其对应的子域名。
目前,在进行TCP代理时,通常预先配置需要进行TCP代理的主域名及其对应的所有子域名得到预置域名,接收到报文后,会将报文中携带的域名与预置域名进行匹配,若匹配,对报文进行TCP代理后转发。由于需要预先配置所有需要进行TCP代理的主域名和子域名,这导致配置过程很复杂,而且配置的域名可能会遗漏或者不完全,导致出现针对遗漏或者配置不完全的域名不能进行TCP代理的情况,降低用户体验。
技术实现要素:
本发明实施例提供一种TCP代理及装置,用以解决现有技术中存在的配置过程很复杂,以及针对遗漏或者配置不完全的域名不能进行TCP代理的情况,降低用户体验的问题。
根据本发明实施例,提供一种TCP代理方法,应用在网关设备中,包括:
接收到报文后,确定所述报文的类型;
若所述报文是域名系统DNS应答报文,则获取所述DNS应答报文携带的域名和互联网协议IP地址,确定所述DNS应答报文携带的域名与预置域名是否匹配,若确定所述DNS应答报文携带的域名与所述预置域名匹配,则将所述DNS应答报文携带的IP地址添加到匹配规则中,转发所述DNS应答报文,所述预置域名是预先配置的、需要TCP代理的主域名;
若所述报文是TCP SYN报文,则将所述TCP SYN报文的目的IP地址与匹配规则进行匹配,在结果集合中保存所述TCP SYN报文的目的IP地址与所述匹配规则的匹配结果、以及所述TCP SYN报文的流信息;若所述匹配结果为匹配,则对所述TCP SYN报文进行TCP代理后转发,所述TCP SYN报文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
若所述报文不是DNS应答报文和TCP SYN报文,则获取所述报文的目的IP地址,根据所述报文的流信息从结果集合中查询所述报文的目的IP地址与匹配规则的匹配结果;若查询到的匹配结果为匹配,则对所述报文进行TCP代理后转发。
具体的,确定所述报文的类型,具体包括:
获取所述报文的头部信息;
从所述头部信息中获取类型标识;
若所述类型标识是DNS应答报文的标识,则确定所述报文是DNS应答报文;
若所述类型标识是TCP SYN报文的标识,则确定所述报文是TCP SYN报文;
若所述类型标识不是DNS应答报文的标识和TCP SYN报文的标识,则确定所述报文不是DNS应答报文和TCP SYN报文。
具体的,确定所述DNS应答报文携带的域名与预置域名是否匹配,具体包括:
将所述DNS应答报文携带的域名与所述预置域名从末尾开始向前进行最短匹配;
若所述DNS应答报文携带的域名包括所述预置域名,则确定所述DNS应答报文携带的域名与所述预置域名匹配;
若所述DNS应答报文携带的域名不包括所述预置域名,则确定所述DNS应答报文携带的域名与所述预置域名不匹配。
具体的,将所述DNS应答报文中携带的IP地址添加到匹配规则,具体包括:
在所述匹配规则中建立一个表项;
将所述DNS应答报文的目的IP地址保存在所述一个表项中。
可选的,还包括:
若从所述匹配结果中查询到所述报文的目的IP地址与所述匹配规则的匹配结果为不匹配,则转发所述报文。
根据本发明实施例,还提供一种TCP代理装置,应用在网关设备中,包括:
确定模块,用于接收到报文后,确定所述报文的类型;
转发模块,用于若所述报文是域名系统DNS应答报文,则获取所述DNS应答报文携带的域名和互联网协议IP地址,确定所述DNS应答报文携带的域名与预置域名是否匹配,若确定所述DNS应答报文携带的域名与所述预置域名匹配,则将所述DNS应答报文携带的IP地址添加到匹配规则中,转发所述DNS应答报文,所述预置域名是预先配置的、需要TCP代理的主域名;
第一代理模块,用于若所述报文是TCP SYN报文,则将所述TCP SYN报文的目的IP地址与匹配规则进行匹配,在结果集合中保存所述TCP SYN报文的目的IP地址与所述匹配规则的匹配结果、以及所述TCP SYN报文的流信息;若所述匹配结果为匹配,则对所述TCP SYN报文进行TCP代理后转发,所述TCP SYN报文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
第二代理模块,用于若所述报文不是DNS应答报文和TCP SYN报文,则获取所述报文的目的IP地址,根据所述报文的流信息从结果集合中查询所述报文的目的IP地址与匹配规则的匹配结果;若查询到的匹配结果为匹配,则对所述报文进行TCP代理后转发。
具体的,所述确定模块,具体用于:
获取所述报文的头部信息;
从所述头部信息中获取类型标识;
若所述类型标识是DNS应答报文的标识,则确定所述报文是DNS应答报文;
若所述类型标识是TCP SYN报文的标识,则确定所述报文是TCP SYN报文;
若所述类型标识不是DNS应答报文的标识和TCP SYN报文的标识,则确定所述报文不是DNS应答报文和TCP SYN报文。
具体的,所述第一代理模块,具体用于:
将所述DNS应答报文携带的域名与所述预置域名从末尾开始向前进行最短匹配;
若所述DNS应答报文携带的域名包括所述预置域名,则确定所述DNS应答报文携带的域名与所述预置域名匹配;
若所述DNS应答报文携带的域名不包括所述预置域名,则确定所述DNS应答报文携带的域名与所述预置域名不匹配。
具体的,所述第一代理模块,具体用于:
在所述匹配规则中建立一个表项;
将所述DNS应答报文的目的IP地址保存在所述一个表项中。
可选的,所述第二代理模块,还用于:
若从所述匹配结果中查询到所述报文的目的IP地址与所述匹配规则的匹配结果为不匹配,则转发所述报文。
本发明有益效果如下:
本发明实施例提供一种TCP代理方法及装置,通过接收到报文后,确定所述报文的类型;若所述报文是域名系统DNS应答报文,则获取所述DNS应答报文携带的域名和互联网协议IP地址,确定所述DNS应答报文携带的域名与预置域名是否匹配,若确定所述DNS应答报文携带的域名与所述预置域名匹配,则将所述DNS应答报文携带的IP地址添加到匹配规则中,转发所述DNS应答报文,所述预置域名是预先配置的、需要TCP代理的主域名;若所述报文是TCP SYN报文,则将所述TCP SYN报文的目的IP地址与匹配规则进行匹配,在结果集合中保存所述TCP SYN报文的目的IP地址与所述匹配规则的匹配结果、以及所述TCP SYN报文的流信息;若所述匹配结果为匹配,则对所述TCP SYN报文进行TCP代理后转发,所述TCP SYN报文的流信息包括源端口、源IP地址、目的端口和目的IP地址;若所述报文不是DNS应答报文和TCP SYN报文,则获取所述报文的目的IP地址,根据所述报文的流信息从结果集合中查询所述报文的目的IP地址与匹配规则的匹配结果;若查询到的匹配结果为匹配,则对所述报文进行TCP代理后转发。该方案中,只需要预先配置进行TCP代理的主域名就可以得到预置域名,由于主域名的数量相对于子域名的数量少得多,因此配置过程很简单;同时,根据接收到的DNS应答报文携带的域名和IP地址建立匹配规则,从而避免配置的域名出现遗漏或者不完全,进而避免出现针对遗漏或者配置不完全的域名不能进行TCP代理的情况;对于接收到不是DNS应答报文和TCP SYN报文的报文,可以根据结果集合确定是否需要进行TCP代理,无需与匹配规则进行匹配,从而节省匹配时间,提升用户体验。
附图说明
图1为本发明实施例中TCP代理方法的流程图;
图2为本发明实施例中S11的流程图;
图3为本发明实施例中S12的流程图;
图4为本发明实施例中TCP代理装置的结构示意图。
具体实施方式
针对现有技术中存在的配置过程很复杂,以及针对遗漏或者配置不完全的域名不能进行TCP代理的情况,降低用户体验的问题,本发明实施例提供一种TCP代理方法,该方法应用在网关设备中,该网关设备可以在终端与服务器之间进行报文转发。该方法的流程如图1所示,执行步骤如下:
S11:接收到报文后,确定报文的类型,若报文是DNS应答报文,则执行S12;若报文是TCP SYN报文,则执行S13;若报文不是DNS应答报文和TCP SYN报文,则执行S14。
对于基于TCP协议进行通信的终端和服务器,终端若要实现访问服务器,需要获取服务器的域名和IP地址,然后与服务器建立TCP连接之后,才能访问服务器。其中,DNS应答报文是DNS服务器用于应答域名及其对应的IP地址给终端时发送的报文,TCP SYN报文是建立TCP连接时首先发送的报文,由于针对不同类型的报文有不同的处理过程,因此,网关设备在终端与服务器之间转发报文时,需要首先确定接收到的报文的类型。
S12:获取DNS应答报文携带的域名和互联网协议(Internet Protocol,IP)地址,确定DNS应答报文携带的域名与预置域名是否匹配,若确定DNS应答报文携带的域名与预置域名匹配,则将DNS应答报文携带的IP地址添加到匹配规则中,转发DNS应答报文。
预置域名是预先配置的、需要TCP代理的主域名,无需配置主域名对应的子域名。若DNS应答报文携带的域名与预置域名匹配,则可以将DNS应答报文携带的IP地址添加到匹配规则中,从而便于后续接收到报文后根据匹配规则确定是否需要TCP代理。
具体的,将DNS应答报文中携带的IP地址添加到匹配规则,具体包括:在匹配规则中建立一个表项;将DNS应答报文的目的IP地址保存在一个表项中。
S13:将TCP SYN报文的目的IP地址与匹配规则进行匹配,在结果集合中保存TCP SYN报文的目的IP地址与匹配规则的匹配结果、以及TCP SYN报文的流信息;若匹配结果为匹配,则对TCP SYN报文进行TCP代理后转发。
为了便于对后续数据流的报文进行TCP代理还是转发,可以将TCP SYN报文的目的IP地址与匹配规则的匹配结果保存在结果集合中。
其中,TCP SYN报文的流信息包括源端口、源IP地址、目的端口和目的IP地址。
在进行TCP代理时,通常会由网关设备的TCP协议栈、用户空间代理模块和TCP代理模块执行,流程为:将TCP SYN报文送TCP协议栈,TCP协议栈通知用户空间代理模块,用户空间代理模块获取TCP SYN报文的源IP地址、源端口、目的IP地址和目的端口这四项信息向服务器发送TCP连接,发送TCP SYN报文,服务器收到TCP SYN报文后会回复SYN+ACK报文,网关设备收到SYN+ACK报文后送TCP协议栈,TCP协议栈会回复ACK报文并转发SYN+ACK报文给终端,终端收到SYN+ACK报文后回复ACK报文,网关设备收到ACK报文后送TCP协议栈,TCP协议栈收到ACK报文后会通知用户空间代理模块,此时一条TCP连接就变成两条TCP连接,一条是终端到网关设备的,另外一条是网关设备到终端的,后续该数据流的报文都会送到用户空间代理模块,用户空间代理模块把报文给TCP代理模块处理(如HTTPS审计模块、加速模块等等),处理完后进行转发。
S14:获取报文的目的IP地址,根据报文的流信息从结果集合中查询报文的目的IP地址与匹配规则的匹配结果;若查询到的匹配结果为匹配,则对报文进行TCP代理后转发。
若从匹配结果中查询到报文的目的IP地址与匹配规则的匹配结果为不匹配,则转发报文。
本发明实施例中的TCP代理包括安全版超文本传输协议(HyperText Transfer Protocol over Secure Socket Layer,HTTPS)审计、网络加速等等。
该方案中,只需要预先配置进行TCP代理的主域名就可以得到预置域名,由于主域名的数量相对于子域名的数量少得多,因此配置过程很简单;同时,根据接收到的DNS应答报文携带的域名和IP地址建立匹配规则,从而避免配置的域名会现遗漏或者不完全,进而避免出现针对遗漏或者配置不完全的域名不能进行TCP代理的情况;对于接收到不是DNS应答报文和TCP SYN报文的报文,可以根据结果集合确定是否需要进行TCP代理,无需与匹配规则进行匹配,从而节省匹配时间,提升用户体验
具体的,上述S11中的确定报文的类型的实现方式,如图2所示,具体包括:
S111:获取报文的头部信息。
S112:从头部信息中获取类型标识,若类型标识是DNS应答报文的标识,则执行S113;若类型标识是TCP SYN报文的标识,则执行S114;若类型标识不是DNS应答报文的标识和TCP SYN报文的标识,则执行S115。
S113:确定报文是DNS应答报文。
S114:确定报文是TCP SYN报文。
S115:确定报文不是DNS应答报文和TCP SYN报文。
不同类型的报文有不同的类型标识,这些类型标识是保存在报文的头部信息中,因此,可以根据报文的头部信息中的类型标识来确定报文的类型。
具体的,上述S12中的确定DNS应答报文携带的域名与预置域名是否匹配的实现过程,如图3所示,具体包括:
S121:将DNS应答报文携带的域名与预置域名从末尾开始向前进行最短匹配,若DNS应答报文携带的域名包括预置域名,则执行S122;若DNS应答报文携带的域名不包括预置域名,则执行S123。
S122:确定DNS应答报文携带的域名与预置域名匹配。
S123:确定DNS应答报文携带的域名与预置域名不匹配。
例如:DNS应答报文携带的域名为app.baidu.com,而预置域名为baidu.com,从后向前匹配,只要匹配到baidu.com,则认为匹配成功。
基于同一发明构思,本发明实施例提供一种TCP代理装置,应用在网关设备中,结构如图4所示,包括:
确定模块41,用于接收到报文后,确定报文的类型;
转发模块42,用于若报文是DNS应答报文,则获取DNS应答报文携带的域名和IP地址,确定DNS应答报文携带的域名与预置域名是否匹配,若确定DNS应答报文携带的域名与预置域名匹配,则将DNS应答报文携带的IP地址添加到匹配规则中,转发DNS应答报文,预置域名是预先配置的、需要TCP代理的主域名;
第一代理模块43,用于若报文是TCP SYN报文,则将TCP SYN报文的目的IP地址与匹配规则进行匹配,在结果集合中保存TCP SYN报文的目的IP地址与匹配规则的匹配结果、以及TCP SYN报文的流信息;若匹配结果为匹配,则对TCP SYN报文进行TCP代理后转发,TCP SYN报文的流信息包括源端口、源IP地址、目的端口和目的IP地址;
第二代理模块44,用于若报文不是DNS应答报文和TCP SYN报文,则获取报文的目的IP地址,根据报文的流信息从结果集合中查询报文的目的IP地址与匹配规则的匹配结果;若查询到的匹配结果为匹配,则对报文进行TCP代理后转发。
该方案中,只需要预先配置进行TCP代理的主域名就可以得到预置域名,由于主域名的数量相对于子域名的数量少得多,因此配置过程很简单;同时,根据接收到的DNS应答报文携带的域名和IP地址建立匹配规则,从而避免配置的域名会现遗漏或者不完全,进而避免出现针对遗漏或者配置不完全的域名不能进行TCP代理的情况;对于接收到不是DNS应答报文和TCP SYN报文的报文,可以根据结果集合确定是否需要进行TCP代理,无需与匹配规则进行匹配,从而节省匹配时间,提升用户体验。
具体的,确定模块41,具体用于:
获取报文的头部信息;
从头部信息中获取类型标识;
若类型标识是DNS应答报文的标识,则确定报文是DNS应答报文;
若类型标识是TCP SYN报文的标识,则确定报文是TCP SYN报文;
若类型标识不是DNS应答报文的标识和TCP SYN报文的标识,则确定报文不是DNS应答报文和TCP SYN报文。
具体的,第一代理模块43,具体用于:
将DNS应答报文携带的域名与预置域名从末尾开始向前进行最短匹配;
若DNS应答报文携带的域名包括预置域名,则确定DNS应答报文携带的域名与预置域名匹配;
若DNS应答报文携带的域名不包括预置域名,则确定DNS应答报文携带的域名与预置域名不匹配。
具体的,第一代理模块43,具体用于:
在匹配规则中建立一个表项;
将DNS应答报文的目的IP地址保存在一个表项中。
可选的,第二代理模块44,还用于:
若从匹配结果中查询到报文的目的IP地址与匹配规则的匹配结果为不匹配,则转发报文。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。