CN115361443B - 一种报文处理方法及系统 - Google Patents
一种报文处理方法及系统 Download PDFInfo
- Publication number
- CN115361443B CN115361443B CN202210982158.8A CN202210982158A CN115361443B CN 115361443 B CN115361443 B CN 115361443B CN 202210982158 A CN202210982158 A CN 202210982158A CN 115361443 B CN115361443 B CN 115361443B
- Authority
- CN
- China
- Prior art keywords
- message
- proxy
- protocol stack
- relay module
- request
- 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
Images
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/2521—Translation architectures other than single NAT servers
- H04L61/2528—Translation at a proxy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种报文处理方法及系统。所述报文处理方法应用于包括基于用户态协议栈的代理应用和内核态协议栈的代理服务器,所述代理应用包括转发模块和中继模块。用户态协议栈根据来自代理客户端的第一请求报文的报文负载生成第一代理报文;当转发模块判断所述第一代理报文请求的原始服务器地址是本地地址时,通过在代理应用中设置的中继模块,修改所述第一代理报文的源地址,生成第二代理报文;所述中继模块将所述第二代理报文发送至内核态协议栈;内核态协议栈根据所述第二代理报文发送回复的第三代理报文,使得用户态协议栈和内核态协议栈之间能够完成握手,正常建立TCP连接,进一步使得客户端可以访问位于代理服务器本地的服务应用。
Description
技术领域
本申请涉及计算机通信技术领域,尤其涉及一种报文处理方法及系统。
背景技术
应用代理技术是指在web服务器上或者某一台单独主机上运行代理服务器软件,对访问内网的数据进行过滤,从而起到隔断内网与外网的直接通信的作用,保护内网不受破坏。在代理方式下,内部网络的数据报文不能直接进入到外部网络,而是需要经过应用层的代理应用转发。
目前,代理应用可以选择基于内核态协议栈实现,也可以选择基于用户态协议栈实现。基于内核态协议栈的报文收发过程是基于中断机制,转发性能较低;而基于用户态协议栈的报文收发过程全部在一个用户态进程中完成,没有阻塞读写的操作,全部是异步过程,转发性能较高。因此,在对转发性能要求较高的场景中,选择使用基于用户态协议栈的代理应用,转发报文。
但是,如果代理客户端访问的是代理服务器本地的服务应用,即代理客户端发送的报文请求的原始服务器地址是为代理服务器的IP地址,此时,因为用户态协议栈无法直接与内核态协议栈完成握手,导致客户端无法访问位于代理服务器本地的服务应用。
发明内容
为解决因为用户态协议栈无法直接与内核态协议栈完成握手,导致客户端无法直接访问位于代理服务器本地的服务应用的问题,本申请通过以下方面提供一种报文处理方法及系统。
本申请第一方面提供一种报文处理方法,所述报文处理方法应用于代理服务器,代理服务器包括基于用户态协议栈的代理应用、内核态协议栈,其中,代理应用包括和转发模块和中继模块。报文处理方法包括:
用户态协议栈获取第一请求报文,第一请求报文来自代理客户端;
用户态协议栈根据第一请求报文的报文负载,生成第一代理报文;
转发模块判断第一代理报文的目的地址是否为代理服务器的本地地址;
若第一代理报文的目的地址为代理服务器的本地地址,则转发模块将第一代理报文、以及第一请求报文的源地址和源端口信息,发送至中继模块;
中继模块将第一代理报文的源地址改成第一请求报文的源地址,得到第二代理报文;
中继模块将第二代理报文发送至内核态协议栈;
内核态协议栈根据第二代理报文,生成第三代理报文,其中,第三代理报文的目的地址为第一请求报文的源地址;
内核态协议栈将第三代理报文发送出去。
可选的,报文处理方法还包括:
用户态协议栈获取第二请求报文,第二请求报文来自内核态协议栈;
用户态协议栈根据第二请求报文,生成查询请求,查询请求包括第二请求报文的四元组信息;
用户态协议栈将查询请求发送至中继模块;
中继模块根据查询请求,判断第二请求报文是否为第三代理报文;
若第二请求报文为第三代理报文,则中继模块反馈第一信息至用户态协议栈;
用户态协议栈根据第一信息,将第二请求报文发送至中继模块;
中继模块将第二请求报文的目标地址改成第二代理报文的源地址,得到第四代理报文;
中继模块将第四代理报文发送至用户态协议栈。
可选的,报文处理方法还包括:
用户态协议栈根据第四代理报文,生成第五代理报文,第五代理报文的目标地址为代理服务器的本地地址;
用户态协议栈将第五代理报文发送至中继模块。
可选的,报文处理方法还包括:
若第一代理报文的目的地址不是代理服务器的本地地址,则转发模块将第一代理报文发送出去。
可选的,将第一请求报文的源端口设为第二代理报文的源端口。
本申请第二方面提供一种报文处理系统,所述报文处理系统应用于代理服务器,所述报文处理系统包括基于用户态协议栈的代理应用、内核态协议栈,所述代理应用包括转发模块和中继模块;其中,
用户态协议栈被配置为执行以下操作:获取第一请求报文,其中,第一请求报文来自代理客户端;以及,根据第一请求报文的报文负载,生成第一代理报文;
转发模块被配置为执行以下操作:判断第一代理报文的目的地址是否为代理服务器的本地地址;以及,若第一代理报文的目的地址为代理服务器的本地地址,则将第一代理报文、以及第一请求报文的源地址和源端口信息,发送至中继模块;
中继模块被配置为执行以下操作:将第一代理报文的源地址改成第一请求报文的源地址,得到第二代理报文;以及,将第二代理报文发送至内核态协议栈;
内核态协议栈被配置为执行以下操作:根据第二代理报文,生成第三代理报文,其中,第三代理报文的目的地址为第一请求报文的源地址;以及将第三代理报文发送出去。
可选的,用户态协议栈被配置为执行以下操作:获取第二请求报文,第二请求报文来自内核态协议栈;以及,根据第二请求报文的四元组信息,生成查询请求;以及,将查询请求发送至中继模块;
中继模块被配置为执行以下操作:根据查询请求,判断第二请求报文是否为第三代理报文;以及若第二请求报文为第三代理报文,则中继模块反馈第一信息至用户态协议栈;
用户态协议栈被配置为执行以下操作:根据第一信息,将第二请求报文发送至中继模块;
中继模块被配置为执行以下操作:将第二请求报文的目标地址改成第二代理报文的源地址,得到第四代理报文;以及,将第四代理报文发送至用户态协议栈。
可选的,用户态协议栈被配置为执行以下操作:根据第四代理报文,生成第五代理报文,第五代理报文的目标地址为代理服务器的本地地址;以及,将第五代理报文发送至中继模块。
可选的,中继模块包括多个中继控制单元;中继控制单元用于存储第一代理报文的四元组信息、以及存储第一请求报文的源地址和源端口。
可选的,转发模块包括多个代理控制单元,其中,一个代理控制单元对应一个会话;一个中继控制块对应一个代理控制单元。
本申请提供一种报文处理方法及系统。所述报文处理方法中,当转发模块判断所述第一代理报文请求的原始服务器地址是本地地址时,通过在代理应用中设置的中继模块,修改所述第一代理报文的源地址,生成第二代理报文;所述中继模块将所述第二代理报文发送至内核态协议栈;内核态协议栈根据所述第二代理报文发送回复的第三代理报文,使得用户态协议栈和内核态协议栈之间能够完成握手,正常建立TCP连接,进一步使得客户端可以访问位于代理服务器本地的服务应用。
附图说明
图1为本申请实施例提供的一种报文处理方法的工作流程示意图;
图2为本申请实施例提供的一种报文处理方法的工作流程示意图;
图3为本申请实施例提供的一种报文处理系统的工作流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。
为解决因为用户态协议栈无法直接与内核态协议栈完成握手,导致客户端无法访问位于代理服务器本地的服务应用的问题,本申请通过以下实施例提供一种报文处理方法及系统。
参见图1,本申请实施例提供一种报文处理方法。所述报文处理方法应用于代理服务器。所述代理服务器包括基于用户态协议栈的代理应用、内核态协议栈,其中,所述代理应用包括和转发模块和中继模块。其中,用户态协议栈,也可以称为用户态TCP/IP协议栈;内核态协议栈,也可以称为内核态TCP/IP协议栈。
当客户端通过代理应用访问代理服务器本地的应用时,首先客户端需要与代理服务器TCP握手成功,然后客户端发出HTTP隧道代理请求。本实施例提供的报文处理方法,包括步骤11-步骤18。
步骤11,所述用户态协议栈获取第一请求报文,所述第一请求报文来自代理客户端。在一种实现方式中,所述第一请求报文是客户端发出的HTTP隧道代理请求报文。在另一种实现方式中,所述第一请求报文是FTP报文或者其他应用层报文。
为了便于描述,在本申请中,代理客户端的源IP用ClientIP表示,源端口用ClientPort表示;代理IP用ProxyIP1表示,代理端口用ProxyPort1表示;客户要访问的IP用ServerIP表示,端口用ServerPort表示,则所述第一请求报文四元组信息:源地址为ClientIP,源端口为ClientPort,目的地址为ProxyIP1,目的端口为ProxyPort1。所述第一请求报文的报文负载包括:connect ServerIP:ServerPort。示例性的,如果客户端想要访问的原始服务器的IP为192.168.212.111,端口为:21,则第一代理报文的报文负载包括CONNECT 192.168.212.111:21。
步骤12,所述用户态协议栈根据所述第一请求报文的报文负载,生成第一代理报文。所述第一代理报文的四元组信息:源地址为ProxyIP2,源端口为ProxyPort2,目的地址为ServerIP,目的端口为ServerPort。其中,ProxyIP2是代理服务器连接外网的IP地址。代理服务器具有多个不同的IP地址和端口,与代理客户端连接时使用的IP地址,与代理服务器与目标服务器连接时使用的IP地址可以一样,也可以不一样,只要使用的端口空闲即可。代理服务器与代理客户端的连接关系,和,代理服务器和目标服务器之间的连接关系相互独立,只是代理应用上的转发模块中存储有两者的映射关系,因此,代理应用可以将代理客户端的数据转发至目标服务器。所述转发模块包括多个代理控制单元,一个所述代理控制单元对应一个客户端的一次请求服务,具体包括一次请求服务中的客户端IP、端口及服务端IP、端口、连接的用户名、密码等信息。
步骤13,所述转发模块判断所述第一代理报文的目的地址是否为所述代理服务器的本地地址。
步骤14,若所述第一代理报文的目的地址为所述代理服务器的本地地址,则所述转发模块将所述第一代理报文、以及所述第一请求报文的源地址和源端口发送至所述中继模块。
在一种实现方式中,所述转发模块判断所述第一代理报文的路由出接口是否是本地环回接口。如果所述第一代理报文的路由出接口是本地环回接口,则将所述第一代理报文交给中继模块处理;如果所述第一代理报文的路由出接口不是本地环回接口,则将所述第一代理报文直接发送出去。
所述转发模块除了将第一代理报文发送至所述中继模块,还将客户端的IP地址以及端口信息发送至所述中继模块,即将第一请求报文的源地址和源端口发送至所述中继模块。也就是说,所述中继模块存储如下信息ProxyIP2、ProxyPort2、ServerIP、ServerPort、ClientIP、ClientPort。
在本实施例中,中继模块包括多个中继控制单元。多个中继控制单元组成hash链表,其中,hash值以ClientIP、ClientPort、ServerIP、ServerPort这四个元素为key值计算。每个中继控制单元为一条连接(一个TCP会话)服务,负责“连接”用户态协议栈和内核态协议栈。所述中继模块根据当前收到的第一请求报文,新建一个中继控制单元,并且与对应的代理控制单元关联。在一种实现方式中,所述代理控制单元用指针的方式,指向对应的中继控制单元。每个中继控制单元与一个代理控制单元关联。但是,不是每个代理控制单元都与一个中继控制单元关联。因为,有的代理控制单元对应的TCP会话的目的地址不是代理服务器本地的服务应用。
在一种实现方式中,所述中继模块在接收到连接到本地地址的隧道代理请求报文时,新建对应的中继控制单元,后续属于同一个会话的报文,都通过该中继控制单元转发,不需要再新建中继控制单元。
步骤15,所述中继模块将所述第一代理报文的源地址改成所述第一请求报文的源地址,得到第二代理报文。
所述中继模块在处理第一代理报文时,会将第一代理报文的源地址由ProxyIP2改成客户端的IP,即ClientIP;源端口可以不变,仍然是ProxyPort2,也可以使用随机端口或者指定端口,得到第二代理报文。示例性的,第二代理报文的源端口指定为客户端的源端口,即ClientPort。此时,所述第二代理报文的四元组信息为:源地址为ClientIP,源端口为ClientPort,目的地址为ServerIP,目的端口为ServerPort。第二代理报文的源地址选为ClientIP,是为了避免内核态协议栈将自己回复的报文交回给内核处理。
步骤16,所述中继模块将所述第二代理报文发送至所述内核态协议栈。
步骤17,所述内核态协议栈根据所述第二代理报文,生成第三代理报文,其中,所述第三代理报文的目的地址为所述第一请求报文的源地址。所述第三代理报文用于回复所述第二代理报文,其四元组信息:源地址为ServerIP,源端口ServerPort,目的地址ClientIP,目的端口ClientPort。
步骤18,所述内核态协议栈将所述第三代理报文发送出去。内核态协议栈将所述第三代理报文按照路由表中的路由发出,因为在本申请实施例应用的代理服务器中,所有的报文最终都由用户态IP层接收和发送,因此,所述第三代理报文会通过所述用户态协议栈处理。如此,所述用户态协议栈就能够接收到内核态协议栈针对所述第一请求报文的回复。
本实施例中提供一种报文处理方法。所述报文处理方法应用于包括基于用户态协议栈的代理应用和内核态协议栈的代理服务器,所述代理应用包括转发模块和中继模块。用户态协议栈根据来自代理客户端的第一请求报文的报文负载生成第一代理报文;当转发模块判断所述第一代理报文请求的原始服务器地址是本地地址时,不将所述第一代理报文直接发送给内核态协议栈,而是通过在代理应用中设置的中继模块,修改所述第一代理报文的源地址,生成第二代理报文;所述中继模块将所述第二代理报文发送至内核态协议栈;内核态协议栈根据所述第二代理报文发送回复的第三代理报文,使得用户态协议栈和内核态协议栈之间能够完成握手,正常建立TCP连接,进一步使得客户端可以访问位于代理服务器本地的服务应用。
参见图2,本实施例提供的报文处理方法,还包括步骤21-步骤27。
步骤21,所述用户态协议栈获取第二请求报文,所述第二请求报文来自内核态协议栈。因为所述内核态协议栈按照路由表的路由发送出去的报文,都需要经过用户态协议栈处理,所以,所述第二请求报文可以是内核态协议栈发送出去的第三代理报文,也可以是代理服务器本地应用发送的报文。
步骤22,所述用户态协议栈根据所述第二请求报文,生成查询请求,所述查询请求包括所述第二请求报文的四元组信息。
步骤23,所述用户态协议栈将所述查询请求发送至所述中继模块。
步骤24,所述中继模块根据所述查询请求,判断所述第二请求报文是否为所述第三代理报文。
步骤25,若所述第二请求报文为所述第三代理报文,则所述中继模块反馈第一信息至所述用户态协议栈。其中,所述第一信息用于指示所述第二请求报文的四元组信息存在于所述中继模块中。
步骤26,所述用户态协议栈根据所述第一信息,将所述第二请求报文发送至所述中继模块。
步骤27,所述中继模块将所述第二请求报文的目标地址改成所述第二代理报文的源地址,得到第四代理报文。
因为所述中继模块存储如下信息ProxyIP2、ProxyPort2、ServerIP、ServerPort、ClientIP、ClientPort,则所述中继模块根据第二请求报文的四元组信息(源IP为ServerIP,源端口为ServerPort,目的IP为ClientIP,目的端口为ClientPort),就能找到对应的中继控制单元,然后将所述第二请求报文的目标地址改成所述第二代理报文的源地址,得到第四代理报文。在本实施例中,每个中继控制单元存储的ProxyIP2、ProxyPort2、ServerIP、ServerPort、ClientIP、ClientPort的这六个信息的组合是唯一的。
步骤28,所述中继模块将所述第四代理报文发送至所述用户态协议栈。此时,所述第四代理报文与代理服务器外部的正常TCP连接报文一致。
在一种实现方式中,第一请求报文是客户端想要访问代理服务器本地服务应用时的HTTP隧道代理请求报文,则用户态协议栈构造的第一代理报文的目的地址是代理服务器本地地址(目的地址为ServerIP,目的端口为ServerPort)。此时,应用层的转发模块在发送第一代理报文时,发现对应的路由出接口为本地环回接口,则将第一代理报文发送至应用层的所述中继模块。同时,转发模块还将第一代理报文对应的客户端IP和端口信息发送给所述中继模块。所述中继模块将第一代理报文的源地址改成客户端IP地址,构造TCP SYN报文(即第二代理报文),将所述TCP SYN报文发送至内核态协议栈。内核态协议栈处理TCPSYN报文,建立半连接的TCP会话。之后,内核态协议栈发出TCP SYN+ACK报文(即第三代理报文),发送出去。
所述用户态协议栈接收到TCP SYN+ACK报文,先根据报文的四元组信息从中继模块中进行查找。根据中继模块反馈的第一信息,将TCP SYN+ACK报文交给中继模块处理。中继模块将TCP SYN+ACK报文的目的地址改成ProxyIP2,目的端口改成ProxyPort2,得到第四代理报文。所述中继模块将所述第四代理报文发送给用户态协议栈。此时报文与正常的外部TCP连接一致。
在这种实现方式下,用户态协议栈处理所述第四代理报文,生成第五代理报文,即回复握手,以回复所述第四代理报文,其中,所述第五代理报文的目标地址为所述代理服务器的本地地址。所述用户态协议栈将所述第五代理报文发送至中继模块。所述第五代理报文经过所述中继模块处理后发送至内核协议栈,以完成TCP握手,建立TCP连接。
后续的应用层报文,比如FTP报文处理也可以参考步骤11-步骤18以及步骤21-步骤28提供的报文处理方法处理。
与前述报文处理方法的实施例相对应,本申请还提供报文处理系统的实施例。所述报文处理系统应用于代理服务器。参见图3,所述报文处理系统包括基于用户态协议栈的代理应用、内核态协议栈,所述代理应用包括转发模块和中继模块。
所述用户态协议栈被配置为执行以下操作:获取第一请求报文,其中,所述第一请求报文来自代理客户端;以及,根据所述第一请求报文的报文负载,生成第一代理报文。
所述转发模块被配置为执行以下操作:判断所述第一代理报文的目的地址是否为所述代理服务器的本地地址;以及,若所述第一代理报文的目的地址为所述代理服务器的本地地址,则将所述第一代理报文、以及所述第一请求报文的源地址和源端口信息,发送至所述中继模块。
若述第一代理报文的目的地址不是所述代理服务器的本地地址,则所述转发模块用于将所述第一代理报文发送出去。
所述中继模块被配置为执行以下操作:将所述第一代理报文的源地址改成所述第一请求报文的源地址,得到第二代理报文;以及,将所述第二代理报文发送至所述内核态协议栈。
所述内核态协议栈被配置为执行以下操作:根据所述第二代理报文,生成第三代理报文,其中,所述第三代理报文的目的地址为所述第一请求报文的源地址;以及将所述第三代理报文发送出去。
在一种实现方式中,所述用户态协议栈被配置为执行以下操作:获取第二请求报文,所述第二请求报文来自内核态协议栈;以及,根据所述第二请求报文的四元组信息,生成查询请求;以及,将所述查询请求发送至所述中继模块。
所述中继模块被配置为执行以下操作:根据所述查询请求,判断所述第二请求报文是否为所述第三代理报文;以及若所述第二请求报文为所述第三代理报文,则所述中继模块反馈第一信息至所述用户态协议栈。
所述用户态协议栈被配置为执行以下操作:根据所述第一信息,将所述第二请求报文发送至所述中继模块。
所述中继模块被配置为执行以下操作:将所述第二请求报文的目标地址改成所述第二代理报文的源地址,得到第四代理报文;以及,将所述第四代理报文发送至所述用户态协议栈。
在一种实现方式中,所述用户态协议栈被配置为执行以下操作:根据所述第四代理报文,生成第五代理报文,所述第五代理报文的目标地址为所述代理服务器的本地地址;以及,将所述第五代理报文发送至所述中继模块。
在一种实现方式中,所述中继模块包括多个中继控制单元;所述中继控制单元用于存储所述第一代理报文的四元组信息、以及存储所述第一请求报文的源地址和源端口。
在一种实现方式中,所述转发模块包括多个代理控制单元,其中,一个所述代理控制单元对应一个会话;一个所述中继控制块对应一个代理控制单元。示例性的,当代理控制单元对应的会话是连接至代理服务器本地应用的会话时,所述代理控制单元通过指针指向所述中继控制块。
在这种实现方式中,所述中继模块在接收到连接到本地地址的隧道代理请求报文时,新建对应的中继控制单元,后续属于同一个会话的报文,都通过该中继控制单元转发,不需要再新建中继控制单元。
上述系统中在应用所述报文处理方法时的作用效果可参见前述报文处理方法实施例中的说明,在此不再赘述。
本申请实施例中所描述的方法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于UE中。可选地,处理器和存储媒介也可以设置于UE中的不同的部件中。
应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本说明书的各个实施例之间相同相似的部分互相参见即可,每个实施例重点介绍的都是与其他实施例不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例部分的说明即可。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (10)
1.一种报文处理方法,其特征在于,所述报文处理方法应用于代理服务器,所述代理服务器包括基于用户态协议栈的代理应用、内核态协议栈,其中,所述代理应用包括和转发模块和中继模块,所述报文处理方法包括:
所述用户态协议栈获取第一请求报文,所述第一请求报文来自代理客户端;
所述用户态协议栈根据所述第一请求报文的报文负载,生成第一代理报文;
所述转发模块判断所述第一代理报文的目的地址是否为所述代理服务器的本地地址;
若所述第一代理报文的目的地址为所述代理服务器的本地地址,则所述转发模块将所述第一代理报文、以及所述第一请求报文的源地址和源端口信息,发送至所述中继模块;
所述中继模块将所述第一代理报文的源地址改成所述第一请求报文的源地址,得到第二代理报文;
所述中继模块将所述第二代理报文发送至所述内核态协议栈;
所述内核态协议栈根据所述第二代理报文,生成第三代理报文,其中,所述第三代理报文的目的地址为所述第一请求报文的源地址;
所述内核态协议栈将所述第三代理报文发送出去。
2.根据权利要求1所述的报文处理方法,其特征在于,所述报文处理方法还包括:
所述用户态协议栈获取第二请求报文,所述第二请求报文来自所述内核态协议栈;
所述用户态协议栈根据所述第二请求报文,生成查询请求,所述查询请求包括所述第二请求报文的四元组信息;
所述用户态协议栈将所述查询请求发送至所述中继模块;
所述中继模块根据所述查询请求,判断所述第二请求报文是否为所述第三代理报文;
若所述第二请求报文为所述第三代理报文,则所述中继模块反馈第一信息至所述用户态协议栈;
所述用户态协议栈根据所述第一信息,将所述第二请求报文发送至所述中继模块;
所述中继模块将所述第二请求报文的目标地址改成所述第二代理报文的源地址,得到第四代理报文;
所述中继模块将所述第四代理报文发送至所述用户态协议栈。
3.根据权利要求2所述的报文处理方法,其特征在于,所述报文处理方法还包括:
所述用户态协议栈根据所述第四代理报文,生成第五代理报文,所述第五代理报文的目标地址为所述代理服务器的本地地址;
所述用户态协议栈将所述第五代理报文发送至所述中继模块。
4.根据权利要求1所述的报文处理方法,其特征在于,所述报文处理方法还包括:
若所述第一代理报文的目的地址不是所述代理服务器的本地地址,则所述转发模块将所述第一代理报文发送出去。
5.根据权利要求1所述的报文处理方法,其特征在于,将所述第一请求报文的源端口设为所述第二代理报文的源端口。
6.一种报文处理系统,其特征在于,所述报文处理系统应用于代理服务器,所述报文处理系统包括基于用户态协议栈的代理应用、内核态协议栈,所述代理应用包括转发模块和中继模块;其中,
所述用户态协议栈被配置为执行以下操作:获取第一请求报文,其中,所述第一请求报文来自代理客户端;以及,根据所述第一请求报文的报文负载,生成第一代理报文;
所述转发模块被配置为执行以下操作:判断所述第一代理报文的目的地址是否为所述代理服务器的本地地址;以及,若所述第一代理报文的目的地址为所述代理服务器的本地地址,则将所述第一代理报文、以及所述第一请求报文的源地址和源端口信息,发送至所述中继模块;
所述中继模块被配置为执行以下操作:将所述第一代理报文的源地址改成所述第一请求报文的源地址,得到第二代理报文;以及,将所述第二代理报文发送至所述内核态协议栈;
所述内核态协议栈被配置为执行以下操作:根据所述第二代理报文,生成第三代理报文,其中,所述第三代理报文的目的地址为所述第一请求报文的源地址;以及将所述第三代理报文发送出去。
7.根据权利要求6所述的报文处理系统,其特征在于,所述用户态协议栈被配置为执行以下操作:获取第二请求报文,所述第二请求报文来自所述内核态协议栈;以及,根据所述第二请求报文的四元组信息,生成查询请求;以及,将所述查询请求发送至所述中继模块;
所述中继模块被配置为执行以下操作:根据所述查询请求,判断所述第二请求报文是否为所述第三代理报文;以及若所述第二请求报文为所述第三代理报文,则所述中继模块反馈第一信息至所述用户态协议栈;
所述用户态协议栈被配置为执行以下操作:根据所述第一信息,将所述第二请求报文发送至所述中继模块;
所述中继模块被配置为执行以下操作:将所述第二请求报文的目标地址改成所述第二代理报文的源地址,得到第四代理报文;以及,将所述第四代理报文发送至所述用户态协议栈。
8.根据权利要求7所述的报文处理系统,其特征在于,所述用户态协议栈被配置为执行以下操作:根据所述第四代理报文,生成第五代理报文,所述第五代理报文的目标地址为所述代理服务器的本地地址;以及,将所述第五代理报文发送至所述中继模块。
9.根据权利要求6所述的报文处理系统,其特征在于,所述中继模块包括多个中继控制单元;所述中继控制单元用于存储所述第一代理报文的四元组信息、以及存储所述第一请求报文的源地址和源端口。
10.根据权利要求9所述的报文处理系统,其特征在于,所述转发模块包括多个代理控制单元,其中,一个所述代理控制单元对应一个会话;一个中继控制块对应一个所述代理控制单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210982158.8A CN115361443B (zh) | 2022-08-16 | 2022-08-16 | 一种报文处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210982158.8A CN115361443B (zh) | 2022-08-16 | 2022-08-16 | 一种报文处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115361443A CN115361443A (zh) | 2022-11-18 |
CN115361443B true CN115361443B (zh) | 2023-06-20 |
Family
ID=84001470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210982158.8A Active CN115361443B (zh) | 2022-08-16 | 2022-08-16 | 一种报文处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115361443B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017124837A1 (zh) * | 2016-01-19 | 2017-07-27 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
CN110932890A (zh) * | 2019-11-20 | 2020-03-27 | 厦门网宿有限公司 | 一种数据传输方法、服务器及计算机可读存储介质 |
CN113596171A (zh) * | 2021-08-04 | 2021-11-02 | 杭州朗和科技有限公司 | 云计算数据交互方法、系统、电子设备及存储介质 |
CN113810380A (zh) * | 2021-08-23 | 2021-12-17 | 杭州安恒信息安全技术有限公司 | 代理层次切换方法、系统、可读存储介质及计算机设备 |
CN114301996A (zh) * | 2021-12-10 | 2022-04-08 | 山石网科通信技术股份有限公司 | 传输数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109547580B (zh) * | 2019-01-22 | 2021-05-25 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
US11129215B2 (en) * | 2019-02-15 | 2021-09-21 | Ofinno, Llc | Location based selection of localized proxy application server |
-
2022
- 2022-08-16 CN CN202210982158.8A patent/CN115361443B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017124837A1 (zh) * | 2016-01-19 | 2017-07-27 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
CN110932890A (zh) * | 2019-11-20 | 2020-03-27 | 厦门网宿有限公司 | 一种数据传输方法、服务器及计算机可读存储介质 |
CN113596171A (zh) * | 2021-08-04 | 2021-11-02 | 杭州朗和科技有限公司 | 云计算数据交互方法、系统、电子设备及存储介质 |
CN113810380A (zh) * | 2021-08-23 | 2021-12-17 | 杭州安恒信息安全技术有限公司 | 代理层次切换方法、系统、可读存储介质及计算机设备 |
CN114301996A (zh) * | 2021-12-10 | 2022-04-08 | 山石网科通信技术股份有限公司 | 传输数据处理方法及装置 |
Non-Patent Citations (3)
Title |
---|
DPDK结构下类socket接口研究与设计;周末;《中国优秀硕士学位论文全文数据库》;全文 * |
Taking over malicious connection in half way by migrating protocol state to a user-level TCP stack;Qi Tang,etal.;《2017 8th International Conference on Information and Communication Systems (ICICS)》;全文 * |
基于IPv6的标识承载网络的关键技术研究与实现;江亚东;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115361443A (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7987266B2 (en) | Failover in proxy server networks | |
US7451197B2 (en) | Method, system, and article of manufacture for network protocols | |
KR20150013860A (ko) | 클라이언트 없는 클라우드 컴퓨팅 | |
US20060209830A1 (en) | Packet processing system including control device and packet forwarding device | |
US8234358B2 (en) | Communicating with an entity inside a private network using an existing connection to initiate communication | |
US20230031062A1 (en) | Data processing method and apparatus, related device, and storage medium | |
US20060047821A1 (en) | System, method, and medium for relaying data using socket application program | |
WO2023050933A1 (zh) | 确定失陷主机的方法及装置 | |
CN113259479A (zh) | 一种数据处理方法以及设备 | |
US8416754B2 (en) | Network location based processing of data communication connection requests | |
WO2021080753A1 (en) | Email security in a multi-tenant email service | |
US11700321B2 (en) | Transparent proxy conversion of transmission control protocol (TCP) fast open connection | |
CN114095415B (zh) | 路由确定方法、装置、网关设备和存储介质 | |
US11349934B2 (en) | Opportunistic transmission control protocol (TCP) connection establishment | |
CN116708041B (zh) | 伪装代理方法、装置、设备及介质 | |
WO2023186109A1 (zh) | 节点访问方法以及数据传输系统 | |
CN115361443B (zh) | 一种报文处理方法及系统 | |
JP5093012B2 (ja) | 通信制御装置、通信制御方法および通信制御プログラム | |
US20080056263A1 (en) | Efficient transport layer processing of incoming packets | |
CN110289979B (zh) | 桥接器及网络的管理方法 | |
US20210203604A1 (en) | Load balancing method, device and system | |
CN111800340B (zh) | 数据包转发方法和装置 | |
US20050050179A1 (en) | Method, apparatus and computer program product for implementing enhanced proxy ARP for virtual IP addresses | |
CN110086702B (zh) | 报文转发方法、装置、电子设备及机器可读存储介质 | |
CN108848175B (zh) | 一种创建tcp连接的方法及装置 |
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 |