CN105791239A - 一种tcp中间人处理方法 - Google Patents
一种tcp中间人处理方法 Download PDFInfo
- Publication number
- CN105791239A CN105791239A CN201410817823.3A CN201410817823A CN105791239A CN 105791239 A CN105791239 A CN 105791239A CN 201410817823 A CN201410817823 A CN 201410817823A CN 105791239 A CN105791239 A CN 105791239A
- Authority
- CN
- China
- Prior art keywords
- tcp
- receiving terminal
- transmitting terminal
- syn
- head
- 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
Landscapes
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种TCP中间人处理方法,包括:发送端与接收端之间建立TCP连接;所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;发送端向接收端发送TCP数据包;所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;接收端接收TCP数据包,并向发送端发送响应数据。
Description
技术领域
本发明涉及计算机网络和数据传输领域,特别涉及一种TCP中间人处理方法。
背景技术
随着信息技术和网络互联技术的发展,网络与信息安全问题日益突出。应用网关、应用级代理以及数据采集分析设备在HTTP代理、HTTP缓存、基于应用的负载均衡、深度内容检测、网关病毒过滤、数据采集审计等领域扮演者越来越重要的网络服务角色。应用网关、应用级代理以及数据采集分析设备通常采用透明代理技术,在客户端和服务器之间充当中间人的角色,接收流经的TCP数据包并重定向到内核层的本地网络协议栈中,由协议栈对数据包进行协议解析处理和TCP重组,提取出应用数据,然后通过套接字将应用层数据从内核层拷贝到用户层,传递给业务程序进行各种处理(如病毒检测、关键词过滤)和修改(替换、删除);处理后,业务程序再将数据通过套接字从用户层拷贝到内核层,交给本地网络协议栈,并通知协议栈采用重定向前原始数据包的目的IP地址和目的端口重新构建数据包并进行协议封装,然后发送出去。
现有的TCP中间人处理方法都是工作在正常TCP/IP协议栈模式下,中间人分别与客户端和服务端建立两个socket连接,透明的进行数据的双向传递,作为一个中间人监听两端的交互报文,并协助客户端和服务端完成网络通信。传统方法保持了对现有网络的兼容性,可以在应用层实现负责的协议处理;缺点是会对两端的正常交互造成影响,吞吐量小,通信时延长,性能降低。原因是对于每一个报文都存在多次的拷贝和用户态到内核态的切换,消耗了大量的资源,增加了通信延迟。
发明内容
本发明的目的在于克服现有技术中的现有的TCP中间人处理方法吞吐量小、通信时延长、性能低的缺陷,从而提供一种吞吐量大、时延小、高性能的TCP中间人处理方法。
为了实现上述目的,本发明提供了一种TCP中间人处理方法,包括:
步骤1)、发送端与接收端之间建立TCP连接;
所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;
步骤2)、发送端向接收端发送TCP数据包;
所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;
步骤3)、接收端接收TCP数据包,并向发送端发送响应数据。
上述技术方案中,所述步骤101)进一步包括:
步骤1-1)、发送端向接收端发送SYN报文,请求建立TCP连接;
步骤1-2)、TCP中间人截取发送端的SYN报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN报文,并按照二层数据包的封装格式为此SYN报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-3)、TCP中间人代替发送端向接收端转发此SYN报文;
步骤1-4)、接收端接收到TCP中间人转发的一次握手SYN报文,回复二次握手SYN/ACK报文给发送端;
步骤1-5)、TCP中间人截取到接收端的二次握手SYN/ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN/ACK报文,并按照二层数据包的封装格式为此SYN/ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-6)、TCP中间人代替接收端向发送端转发此二次握手SYN/ACK报文;
步骤1-7)、发送端接收到TCP中间人转发的二次握手SYN/ACK报文,成功建立TCP连接;
步骤1-8)、发送端向接收端回复三次握手ACK报文;
步骤1-9)、TCP中间人截取到发送端的三次握手ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此ACK报文,并按照二层数据包的封装格式为此ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-10)、TCP中间人代替发送端向接收端转发此ACK报文;
步骤1-11)、接收端接收到TCP中间人转发的三次握手ACK报文,接收端成功建立TCP连接。
上述技术方案中,所述步骤2)进一步包括:
步骤2-1)、发送端通过TCP连接向接收端发送应用数据;
步骤2-2)、TCP中间人截取发送端的数据包,去掉并缓存MAC头和IP头,提交给TCP处理模块并缓存;
步骤2-3)、TCP中间人代替接收端向发送端回复ACK响应,此ACK报文的源IP和MAC是接收端,目的IP和MAC是发送端;
步骤2-4)、TCP中间人对数据包进行修改处理,并代替发送端向接收端转发修改后的数据包。
上述技术方案中,所述步骤3)进一步包括:
步骤4-1)、接收端接收到TCP中间人转发的数据包,向发送端回复ACK响应;
步骤4-2)、TCP中间人截取到接收端回复的ACK响应,去掉并缓存MAC头和IP头,提交给TCP处理模块,删除缓存中被ACK确认的数据包。
本发明的优点在于:
在本发明的TCP中间人处理方法中,TCP中间人置于两个网络节点之间,对流经的TCP数据包进行接收、转发处理,保持了两端正常的TCP连接,本发明对TCP数据包的修改对发送端和接收端来说是透明的,不影响发送端和接收端的正常交互;并且通过TCP处理模块的缓存、丢包重传、定时器超时重传、滑动窗口、拥塞控制等机制,实现TCP数据包的可靠传输。
附图说明
图1是本发明的TCP中间人处理方法的流程图;
图2是本发明的TCP中间人处理方法中建立TCP连接的流程图;
图3是本发明的TCP中间人处理方法中传输应用数据的流程图。
具体实施方式
现结合附图对本发明作进一步的描述。
应用网关、应用级代理以及数据采集分析等网络设备通常并不是普通的X86服务器架构,大多是嵌入式的网络处理器架构,而且这些设备的系统一般并不是完备的操作系统,而是简单的实时操作系统。嵌入式网络处理器特点是处理网络数据包的能力比较高,但是CPU运算能力相对较弱。TCP中间人最主要的功能是把流经的TCP数据包截获、处理、转发,因此可针对嵌入式网络处理器和实时简单操作系统的特征,有选择地对TCPIP协议栈进行裁剪修改,减少不必要的数据拷贝和进程切换。
下面对本发明的TCP中间人处理方法进行说明。
本发明中所述的TCP中间人置于两个网络节点之间(这两个网络节点既可以是发送端,也可以是接收端),它能够对流经的TCP数据包进行接收、修改、转发处理,并保持正常的TCP连接。所述TCP中间人包括有TCP处理模块,该模块基于TCP协议的原理,实现了接收确认、丢包重传、定时器超时重传、滑动窗口、拥塞控制、慢启动、快速恢复等机制。
参考图1,本发明的TCP中间人处理方法包括:
步骤101)、发送端与接收端之间建立TCP连接;
本步骤中,TCP中间人并不分别与发送端和接收端各建立两个完整的TCP连接,而是截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;
步骤102)、发送端向接收端发送TCP数据包;
本步骤中,TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;
步骤103)、接收端接收TCP数据包,并向发送端发送响应数据。
参考图2,步骤101)中所涉及的发送端与接收端之间建立TCP连接的进一步包括如下步骤:
201)发送端向接收端发送SYN报文,请求建立TCP连接;
202)TCP中间人截取发送端的SYN报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN报文,并按照二层数据包的封装格式为此SYN报文填充原有的IP头和MAC头,重新计算数据包的校验和;
203)TCP中间人代替发送端向接收端转发此SYN报文;
204)接收端接收到TCP中间人转发的一次握手SYN报文,回复二次握手SYN/ACK报文给发送端;
205)TCP中间人截取到接收端的二次握手SYN/ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN/ACK报文,并按照二层数据包的封装格式为此SYN/ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
206)TCP中间人代替接收端向发送端转发此二次握手SYN/ACK报文;
207)发送端接收到TCP中间人转发的二次握手SYN/ACK报文,成功建立TCP连接;
208)发送端向接收端回复三次握手ACK报文;
209)TCP中间人截取到发送端的三次握手ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此ACK报文,并按照二层数据包的封装格式为此ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
210)TCP中间人代替发送端向接收端转发此ACK报文;
211)接收端接收到TCP中间人转发的三次握手ACK报文,接收端成功建立TCP连接。
进一步地,通过TCP中间人的协调,发送端和接收端建立TCP连接后,传输数据的过程如图3所示,包括如下步骤:
301)发送端通过TCP连接向接收端发送应用数据;
302)TCP中间人截取发送端的数据包,去掉并缓存MAC头和IP头,提交给TCP处理模块并缓存;
303)TCP中间人代替接收端向发送端回复ACK响应,此ACK报文的源IP和MAC是接收端,目的IP和MAC是发送端;
304)TCP中间人对数据包进行修改处理,并代替发送端向接收端转发修改后的数据包;
305)接收端接收到TCP中间人转发的数据包,向发送端回复ACK响应;
306)TCP中间人截取到接收端回复的ACK响应,去掉并缓存MAC头和IP头,提交给TCP处理模块,删除缓存中被ACK确认的数据包,至此完成一次成功的数据传输。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (4)
1.一种TCP中间人处理方法,包括:
步骤1)、发送端与接收端之间建立TCP连接;
所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;
步骤2)、发送端向接收端发送TCP数据包;
所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;
步骤3)、接收端接收TCP数据包,并向发送端发送响应数据。
2.根据权利要求1所述的TCP中间人处理方法,其特征在于,所述步骤101)进一步包括:
步骤1-1)、发送端向接收端发送SYN报文,请求建立TCP连接;
步骤1-2)、TCP中间人截取发送端的SYN报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN报文,并按照二层数据包的封装格式为此SYN报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-3)、TCP中间人代替发送端向接收端转发此SYN报文;
步骤1-4)、接收端接收到TCP中间人转发的一次握手SYN报文,回复二次握手SYN/ACK报文给发送端;
步骤1-5)、TCP中间人截取到接收端的二次握手SYN/ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此SYN/ACK报文,并按照二层数据包的封装格式为此SYN/ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-6)、TCP中间人代替接收端向发送端转发此二次握手SYN/ACK报文;
步骤1-7)、发送端接收到TCP中间人转发的二次握手SYN/ACK报文,成功建立TCP连接;
步骤1-8)、发送端向接收端回复三次握手ACK报文;
步骤1-9)、TCP中间人截取到发送端的三次握手ACK报文,去掉并缓存MAC头和IP头,提交给TCP处理模块,TCP处理模块缓存此ACK报文,并按照二层数据包的封装格式为此ACK报文填充原有的IP头和MAC头,重新计算数据包的校验和;
步骤1-10)、TCP中间人代替发送端向接收端转发此ACK报文;
步骤1-11)、接收端接收到TCP中间人转发的三次握手ACK报文,接收端成功建立TCP连接。
3.根据权利要求1所述的TCP中间人处理方法,其特征在于,所述步骤2)进一步包括:
步骤2-1)、发送端通过TCP连接向接收端发送应用数据;
步骤2-2)、TCP中间人截取发送端的数据包,去掉并缓存MAC头和IP头,提交给TCP处理模块并缓存;
步骤2-3)、TCP中间人代替接收端向发送端回复ACK响应,此ACK报文的源IP和MAC是接收端,目的IP和MAC是发送端;
步骤2-4)、TCP中间人对数据包进行修改处理,并代替发送端向接收端转发修改后的数据包。
4.根据权利要求1所述的TCP中间人处理方法,其特征在于,所述步骤3)进一步包括:
步骤4-1)、接收端接收到TCP中间人转发的数据包,向发送端回复ACK响应;
步骤4-2)、TCP中间人截取到接收端回复的ACK响应,去掉并缓存MAC头和IP头,提交给TCP处理模块,删除缓存中被ACK确认的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410817823.3A CN105791239B (zh) | 2014-12-24 | 2014-12-24 | 一种tcp中间人处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410817823.3A CN105791239B (zh) | 2014-12-24 | 2014-12-24 | 一种tcp中间人处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105791239A true CN105791239A (zh) | 2016-07-20 |
CN105791239B CN105791239B (zh) | 2019-01-25 |
Family
ID=56378419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410817823.3A Active CN105791239B (zh) | 2014-12-24 | 2014-12-24 | 一种tcp中间人处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105791239B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357710A (zh) * | 2015-07-15 | 2017-01-25 | 中国科学院声学研究所 | 一种基于多核网络处理器的tcp粘合系统及方法 |
CN110213167A (zh) * | 2018-02-28 | 2019-09-06 | 吴瑞 | 一种传输控制协议在网络拥塞时的处理方法和装置 |
CN114025030A (zh) * | 2021-11-08 | 2022-02-08 | 北京天融信网络安全技术有限公司 | 透明代理实现方法、装置、计算机设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040006643A1 (en) * | 2002-06-26 | 2004-01-08 | Sandvine Incorporated | TCP proxy providing application layer modifications |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN101699797A (zh) * | 2009-11-13 | 2010-04-28 | 珠海网博信息科技有限公司 | 使用udp协议进行数据传输的方法 |
CN101783789A (zh) * | 2009-01-16 | 2010-07-21 | 深圳市维信联合科技有限公司 | 网络数据包传输处理方法、设备及系统 |
CN101834833A (zh) * | 2009-03-13 | 2010-09-15 | 丛林网络公司 | 对分布式拒绝服务攻击的服务器防护 |
-
2014
- 2014-12-24 CN CN201410817823.3A patent/CN105791239B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040006643A1 (en) * | 2002-06-26 | 2004-01-08 | Sandvine Incorporated | TCP proxy providing application layer modifications |
CN101783789A (zh) * | 2009-01-16 | 2010-07-21 | 深圳市维信联合科技有限公司 | 网络数据包传输处理方法、设备及系统 |
CN101834833A (zh) * | 2009-03-13 | 2010-09-15 | 丛林网络公司 | 对分布式拒绝服务攻击的服务器防护 |
CN101626384A (zh) * | 2009-08-05 | 2010-01-13 | 腾讯科技(深圳)有限公司 | 一种基于tcp协议传输数据包的方法和系统 |
CN101699797A (zh) * | 2009-11-13 | 2010-04-28 | 珠海网博信息科技有限公司 | 使用udp协议进行数据传输的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357710A (zh) * | 2015-07-15 | 2017-01-25 | 中国科学院声学研究所 | 一种基于多核网络处理器的tcp粘合系统及方法 |
CN110213167A (zh) * | 2018-02-28 | 2019-09-06 | 吴瑞 | 一种传输控制协议在网络拥塞时的处理方法和装置 |
CN114025030A (zh) * | 2021-11-08 | 2022-02-08 | 北京天融信网络安全技术有限公司 | 透明代理实现方法、装置、计算机设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105791239B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101217493B (zh) | 一种tcp数据包的传输方法 | |
US9906630B2 (en) | Processing data packets in performance enhancing proxy (PEP) environment | |
CN101217464B (zh) | 一种udp数据包的传输方法 | |
US20070025374A1 (en) | TCP normalization engine | |
WO2018032399A1 (en) | Server and method having high concurrency capability | |
KR20170026541A (ko) | 터널화된 트래픽의 최적화를 위한 방법 및 장치 | |
EP1327196A2 (en) | System and method for highly scalable high-speed content-based filtering and load balancing in interconnected fabrics | |
US20160241664A1 (en) | Method, device, and system for redirecting data by using service proxy | |
US20220166832A1 (en) | Device and Method for Romote Direct Memory Access | |
US20150373135A1 (en) | Wide area network optimization | |
WO2016099357A1 (en) | Methods and first network node for managing a stream control transmission protocol association | |
WO2017219813A1 (zh) | 一种流量处理方法及透明缓存系统 | |
Chihani et al. | A Multipath TCP model for ns-3 simulator | |
US20150222703A1 (en) | Communication system utilizing http | |
WO2015106453A1 (zh) | 处理业务的方法和网络设备 | |
Gomez et al. | Tcp usage guidance in the internet of things (iot) | |
JP6172546B2 (ja) | トラフィックステアリング方法、デバイス、及びシステム | |
CN105791239A (zh) | 一种tcp中间人处理方法 | |
CN111385068B (zh) | 数据传输方法、装置、电子设备及通信系统 | |
CN108737413B (zh) | 传输层的数据处理方法、装置及计算机可读存储介质 | |
CN106789878A (zh) | 一种面向大流量环境的文件还原系统以及方法 | |
WO2016154831A1 (zh) | 一种实现传输控制协议tcp传输的方法及装置 | |
Zheng et al. | Research on multi-path network in cloud computing based on SCTP | |
WO2015048999A1 (en) | Method and proxy node for source to destination packet transfer | |
Nikitinskiy et al. | A stateless transport protocol in software defined networks |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210803 Address after: Room 1601, 16th floor, East Tower, Ximei building, No. 6, Changchun Road, high tech Industrial Development Zone, Zhengzhou, Henan 450001 Patentee after: Zhengzhou xinrand Network Technology Co.,Ltd. Address before: 100190, No. 21 West Fourth Ring Road, Beijing, Haidian District Patentee before: INSTITUTE OF ACOUSTICS, CHINESE ACADEMY OF SCIENCES |
|
TR01 | Transfer of patent right |