CN103825683A - 基于tcp重传机制的内核代理方法及装置 - Google Patents
基于tcp重传机制的内核代理方法及装置 Download PDFInfo
- Publication number
- CN103825683A CN103825683A CN201410099474.6A CN201410099474A CN103825683A CN 103825683 A CN103825683 A CN 103825683A CN 201410099474 A CN201410099474 A CN 201410099474A CN 103825683 A CN103825683 A CN 103825683A
- Authority
- CN
- China
- Prior art keywords
- kernel
- message
- data
- carry out
- time
- 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.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于TCP重传机制的内核代理方法及装置,该方法包括:三次握手不进行代理处理,当在内核中收到第四个数据报文时,在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。本发明利用TCP的重传机制,提出一种高效的应用层代理解决方案,解决了传统应用层代理解决方案用户体验不好,或设计复杂,或性能差的问题。
Description
技术领域
本发明属于计算机通信技术领域,具体涉及一种基于TCP重传机制的内核代理方法及装置。
背景技术
代理指的是在原有的客户端与服务器的通讯过程中加入代理处理逻辑,这样,客户端实际是在与代理进行通讯,然后代理再将客户端发送过来的数据转发给服务器;服务器与客户端之间的通讯也是通过代理转发的,因此,代理可以监听客户端与服务器之间的通讯,并修改其中的数据,以满足上层各种业务的需求。应用层指的是网络协议栈中传输层的上一层,应用层代理指的是在应用层加入代理逻辑,以处理我们关心的业务数据。这是一个通用的技术,但是不同的设计,对性能的影响、代码的复杂度、可扩展性各不相同。当前的通用设计是在内核中,将所有的TCP报文通过网络地址转换(Network Address Translation,简称NAT)机制送到用户态去处理,这样,无论应用层是否关注的数据都会被送到用户态去处理,虽然处理简洁,但会降低使用性能,同时代理容易出错;另一种方案是直接在内核中实现代理,这样的额编码难度较大,并且维护非常难,不易扩展。
超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是:在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的报文,那么就重新发送数据,直到发送成功为止。数据要送到用户态去是需要在TCP层,对三次握手的第一个报文就通过NAT或者其他手段向上送,但是在TCP三次握手完成后,我们才能看见应用层的数据,也即当我们看到应用层数据时,再做代理,已经晚了。
当前的通用设计是在内核中,将所有的TCP报文通过NAT机制送到用户态去处理,这样,无论应用层是否关注的数据都会送到用户态去处理,虽然处理简介,但是会降低使用性能,出现代理出错;另一种方案是直接在内核中实现处理,这样,编码难度大,难维护,不易扩展。
发明内容
本发明提供一种基于TCP重传机制的内核代理方法及装置,解决了传统应用层代理解决方案用户体验不好,或设计复杂,或性能差的问题。
为实现上述目的,本发明提供一种基于TCP重传机制的内核代理方法,该方法包括:
在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;
当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
可选地,当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理包括:
三次握手不进行代理处理,当内核收到第四个数据报文时,对应用层数据进行简单的分析,记录此服务器的IP地址,在内核中伪造一个握手报文发给客户端,客户端重新发送握手报文;
当内核发现服务器的IP地址与当期记录的相同时,将其发送到用户态去处理。
可选地,该方法还包括:当不需要进行代理处理时,则进行正常的报文处理流程。
为实现上述目的,本发明提供一种基于TCP重传机制的内核代理装置,包括:
分析单元,用于在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;
处理单元,用于当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
可选地,所述处理单元,用于当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理包括:
三次握手不进行代理处理,当内核收到第四个数据报文时,对应用层数据进行简单的分析,记录此服务器的IP地址,在内核中伪造一个握手报文发给客户端,客户端重新发送握手报文;
当内核发现服务器的IP地址与当期记录的相同时,将其发送到用户态去处理。
可选地,所述分析单元分析出不需要进行代理处理时,则所述处理单元进行正常的报文处理流程。
本发明提供的基于TCP重传机制的内核代理方法及装置中,三次握手不做代理,这个服务器如果有问题,客户端能够很快发现问题,加强用户体验,当内核中收到第四个数据报文时,会对应用层数据进行简单的分析,如果不需要代理处理,则继续走正常的报文处理的流程,毫无性能损耗;若需要代理的处理,便记录服务器的IP地址,并在内核中伪造一个握手报文发给客户端,以欺骗客户端说握手不成功,客户端会重新发送握手报文,当内核中发现服务器的IP地址与前期记录的相同时,便将其发送到用户态去处理。本发明提供技术方案可以识别出需要进行代理的应用层数据,将其送到用户态中去处理,其他大多数不需要代理的数据直接通过,在保持内核处理简洁性的同时,提高了内核性能,并降低了内核处理出错的概率。
附图说明
图1为本发明实施例一提供的基于TCP重传机制的内核代理方法的流程示意图;
图2为本发明实施例二提供的基于TCP重传机制的内核代理装置的结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
图1为本发明实施例一提供的基于TCP重传机制的内核代理方法的流程示意图,如图1所示,该方法包括:
步骤S101、三次握手不进行代理处理,当在内核中收到第四个数据报文时,在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理。
具体地,数据要送到用户态去是需要在TCP层,对三次握手的第一个报文就通过NAT或其它手段向上送。但是在TCP的三次握手完成后,我们才能看到应用层的数据。换言之,当我们看到应用层数据时,再做代理,看起来已经晚了。
本发明的技术方案中在三次握手中不做代理,这个服务器如果有问题,客户端能够很快的发现问题,加强用户体验。当内核收到第4个数据报文时,会对应用层数据进行简单的分析,若不需要代理处理,则继续走正常的报文处理的流程,毫无性能省耗。若需要代理的处理,便记录此服务器的IP,并在内核中伪造一个握手报文发给客户端,以欺骗客户端说握手不成功。这样,客户端会重新发送握手报文,当内核发现服务器的IP与前期记录的相同时,便将其发送到用户态去处理,在内核中所有的处理过程相当简洁。
步骤S102、当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
具体地,当需要进行代理处理时,三次握手不进行代理处理,当内核收到第四个数据报文时,对应用层数据进行简单的分析,记录此服务器的IP地址,在内核中伪造一个握手报文发给客户端,客户端重新发送握手报文;
当内核发现服务器的IP地址与当期记录的相同时,将其发送到用户态去处理。
本实施例中,识别出需要代理的应用层数据,送到用户态去处理,其它大多数不需要代理的数据直接放过,在保持简洁性的同时,提高了性能,并减少了出问题的概率,需要代理的报文,能很快检测出网络是否通畅,加强了用户体验。
图2为本发明实施例二提供的基于TCP重传机制的内核代理装置的结构示意图,如图2所示,该装置包括:分析单元201和处理单元202,分析单元201用于,处理单元202用于在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;202处理单元用于当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
具体地,数据要送到用户态去是需要在TCP层,对三次握手的第一个报文就通过NAT或其它手段向上送。但是在TCP的三次握手完成后,我们才能看到应用层的数据。换言之,当我们看到应用层数据时,再做代理,看起来已经晚了。
本发明提供的基于TCP重传机制的内核代理方法及装置中,三次握手不做代理,这个服务器如果有问题,客户端能够很快发现问题,加强用户体验,当内核中收到第四个数据报文时,会对应用层数据进行简单的分析,如果不需要代理处理,则继续走正常的报文处理的流程,毫无性能损耗;若需要代理的处理,便记录服务器的IP地址,并在内核中伪造一个握手报文发给客户端,以欺骗客户端说握手不成功,客户端会重新发送握手报文,当内核中发现服务器的IP地址与前期记录的相同时,便将其发送到用户态去处理。本发明提供技术方案可以识别出需要进行代理的应用层数据,将其送到用户态中去处理,其他大多数不需要代理的数据直接通过,在保持内核处理简洁性的同时,提高了内核性能,并降低了内核处理出错的概率。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (6)
1.一种基于TCP重传机制的内核代理方法,其特征在于,包括:
三次握手不进行代理处理,当在内核中收到第四个数据报文时,在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;
当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
2.根据权利要求1所述的方法,其特征在于,当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理包括:
对应用层数据进行简单的分析,记录此服务器的IP地址,在内核中伪造一个握手报文发给客户端,客户端重新发送握手报文;
当内核发现服务器的IP地址与当期记录的相同时,将其发送到用户态去处理。
3.根据权利要求2所述的方法,其特征在于,还包括:当不需要进行代理处理时,则进行正常的报文处理流程。
4.一种基于TCP重传机制的内核代理装置,其特征在于,包括:
分析单元,用于在内核中对应用层的第一个数据报文进行分析处理,以决定是否进行代理处理;
处理单元,用于当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理。
5.根据权利要求4所述的装置,其特征在于,所述处理单元,用于当需要进行代理处理时,通过伪造数据报文触发TCP重传机制,将数据报文送到用户态去处理包括:
三次握手不进行代理处理,当内核收到第四个数据报文时,对应用层数据进行简单的分析,记录此服务器的IP地址,在内核中伪造一个握手报文发给客户端,客户端重新发送握手报文;
当内核发现服务器的IP地址与当期记录的相同时,将其发送到用户态去处理。
6.根据权利要求5所述的装置,其特征在于,所述分析单元分析出不需要进行代理处理时,则所述处理单元进行正常的报文处理流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410099474.6A CN103825683B (zh) | 2014-03-17 | 2014-03-17 | 基于tcp重传机制的内核代理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410099474.6A CN103825683B (zh) | 2014-03-17 | 2014-03-17 | 基于tcp重传机制的内核代理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103825683A true CN103825683A (zh) | 2014-05-28 |
CN103825683B CN103825683B (zh) | 2017-05-17 |
Family
ID=50760537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410099474.6A Expired - Fee Related CN103825683B (zh) | 2014-03-17 | 2014-03-17 | 基于tcp重传机制的内核代理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103825683B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506490A (zh) * | 2014-11-27 | 2015-04-08 | 北京极科极客科技有限公司 | 一种路由器内核下的代理方法及装置 |
US10237153B2 (en) | 2015-11-25 | 2019-03-19 | Huawei Technologies Co., Ltd. | Packet retransmission method and apparatus |
CN109842511A (zh) * | 2017-11-28 | 2019-06-04 | 网宿科技股份有限公司 | 一种tcp性能参数的确定方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004004272A1 (en) * | 2002-06-26 | 2004-01-08 | Sandvine Incorporated | A tcp proxy providing application layer modifications |
US20080181213A1 (en) * | 2007-01-26 | 2008-07-31 | Mike Ovsiannikov | Systems and Methods of Using an IP ID Field for Automatic WAN/LAN Detection |
CN101340322A (zh) * | 2008-08-29 | 2009-01-07 | 陈玲玲 | 一种web访问出错提示方法 |
CN101924771A (zh) * | 2010-08-26 | 2010-12-22 | 北京天融信科技有限公司 | 一种用于加速应用代理的核心级tcp连接粘合方法 |
CN103491065A (zh) * | 2012-06-14 | 2014-01-01 | 中兴通讯股份有限公司 | 一种透明代理及其实现方法 |
-
2014
- 2014-03-17 CN CN201410099474.6A patent/CN103825683B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004004272A1 (en) * | 2002-06-26 | 2004-01-08 | Sandvine Incorporated | A tcp proxy providing application layer modifications |
US20080181213A1 (en) * | 2007-01-26 | 2008-07-31 | Mike Ovsiannikov | Systems and Methods of Using an IP ID Field for Automatic WAN/LAN Detection |
CN101340322A (zh) * | 2008-08-29 | 2009-01-07 | 陈玲玲 | 一种web访问出错提示方法 |
CN101924771A (zh) * | 2010-08-26 | 2010-12-22 | 北京天融信科技有限公司 | 一种用于加速应用代理的核心级tcp连接粘合方法 |
CN103491065A (zh) * | 2012-06-14 | 2014-01-01 | 中兴通讯股份有限公司 | 一种透明代理及其实现方法 |
Non-Patent Citations (1)
Title |
---|
冯东雷等: ""多层交换技术在宽带防火墙***中的应用"", 《计算机工程与应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506490A (zh) * | 2014-11-27 | 2015-04-08 | 北京极科极客科技有限公司 | 一种路由器内核下的代理方法及装置 |
US10237153B2 (en) | 2015-11-25 | 2019-03-19 | Huawei Technologies Co., Ltd. | Packet retransmission method and apparatus |
CN109842511A (zh) * | 2017-11-28 | 2019-06-04 | 网宿科技股份有限公司 | 一种tcp性能参数的确定方法及*** |
CN109842511B (zh) * | 2017-11-28 | 2022-07-08 | 网宿科技股份有限公司 | 一种tcp性能参数的确定方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN103825683B (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10474514B2 (en) | Method for flow control and for reliable communication in a collaborative environment | |
US10392823B2 (en) | Synthetic client | |
CN108009027A (zh) | 队列消息一致性的实现方法、装置、设备及存储介质 | |
US9274894B1 (en) | System and method for providing a watchdog timer to enable collection of crash data | |
CN105898893B (zh) | 一种移动终端与物联网设备全双工通信的方法 | |
CN103491162B (zh) | 基于移动互联网的信息分享方法及*** | |
EP2866395A1 (en) | Maximum transmission unit negotiation method and data terminal | |
WO2016090995A1 (zh) | 页面与长连接服务器间的通信方法及客户端 | |
CN104079571A (zh) | 一种识别Android模拟器的方法及装置 | |
CN106452973A (zh) | 维持通信链路长连接的方法、装置及终端 | |
CN107203443A (zh) | 一种基于kvm虚拟化的虚拟机高可用的方法与装置 | |
CN103825683A (zh) | 基于tcp重传机制的内核代理方法及装置 | |
CN111385068B (zh) | 数据传输方法、装置、电子设备及通信*** | |
CN106375148A (zh) | 即时通讯中的动态网络心跳处理方法及终端 | |
US10476919B2 (en) | System and method for reliable messaging between application sessions across volatile networking conditions | |
US10033489B1 (en) | Managing communications based on network conditions | |
CN115348333B (zh) | 基于udp双端通信交互的数据传输方法、***及设备 | |
CN109286665B (zh) | 实时移动游戏长链接处理方法及装置 | |
CN101001213A (zh) | 一种短消息传输***及方法 | |
CN112787954A (zh) | 一种加密挖矿流量识别方法、***、装置及存储介质 | |
CN101616164B (zh) | 一种传输报文的方法和装置 | |
CN111949542B (zh) | 回归测试或者压力测试的生成数据的提取方法及装置 | |
CN102883129B (zh) | 视频通信方法及终端 | |
CN107623562A (zh) | 数据传输方法、装置及电子设备 | |
CN115118392A (zh) | D-sack的确定方法、处理器与通信*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Kernel proxy method and device based on TCP (transmission control protocol) retransmission mechanism Effective date of registration: 20180625 Granted publication date: 20170517 Pledgee: Beijing first financing Company limited by guarantee Pledgor: BEIJING JIKEJIKE TECHNOLOGY CO., LTD. Registration number: 2018990000486 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170517 Termination date: 20210317 |