CN105791239A - 一种tcp中间人处理方法 - Google Patents

一种tcp中间人处理方法 Download PDF

Info

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 end
data packet
intermediary
header
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
Application number
CN201410817823.3A
Other languages
English (en)
Other versions
CN105791239B (zh
Inventor
郑艳伟
叶晓舟
宋磊
袁鼎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Xinrand Network Technology Co ltd
Original Assignee
Institute of Acoustics CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Acoustics CAS filed Critical Institute of Acoustics CAS
Priority to CN201410817823.3A priority Critical patent/CN105791239B/zh
Publication of CN105791239A publication Critical patent/CN105791239A/zh
Application granted granted Critical
Publication of CN105791239B publication Critical patent/CN105791239B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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中间人处理方法
技术领域
本发明涉及计算机网络和数据传输领域,特别涉及一种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确认的数据包。
CN201410817823.3A 2014-12-24 2014-12-24 一种tcp中间人处理方法 Active CN105791239B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 丛林网络公司 对分布式拒绝服务攻击的服务器防护

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CN101534302B (zh) 一种提供tcp服务的方法、系统和相关装置
CN102546800B (zh) 一种网关握手、通信方法、网关及Web通信系统
CN112583874B (zh) 异构网络的报文转发方法及装置
US9118717B2 (en) Delayed network protocol proxy for packet inspection in a network
CN103795632B (zh) 一种数据报文传输方法及相关设备、系统
US20160241664A1 (en) Method, device, and system for redirecting data by using service proxy
CN104518973B (zh) 一种基于sdn环境的数据的可靠组播传输方法
CN105959228B (zh) 一种流量处理方法及透明缓存系统
US20150373135A1 (en) Wide area network optimization
US9787770B2 (en) Communication system utilizing HTTP
WO2014023003A1 (zh) 控制数据传输的方法、装置和系统
WO2011100911A2 (zh) 探测处理方法、数据发送端、数据接收端以及通信系统
WO2014018782A2 (en) Delay-tolerant web transaction delegations
WO2015106453A1 (zh) 处理业务的方法和网络设备
Gomez et al. TCP usage guidance in the Internet of Things (IoT)
CN115567346A (zh) 数据报文传输方法、装置、电子设备及存储介质
CN110120854A (zh) 传输数据的方法和装置
CN105791239A (zh) 一种tcp中间人处理方法
CN102752188A (zh) 一种传输控制协议连接迁移方法及系统
CN102055774B (zh) 基于包处理的http服务器及其数据处理方法
CN110505300A (zh) 一种ip网络与命名数据网络混合的新型链式代理方法
CN102546659B (zh) 面向远过程调用的持久tcp连接方法
WO2012122832A1 (zh) 网络地址转换表项的热备份方法及装置
CN103036984B (zh) 一种单向流量的检测方法及网络设备
CN108259576A (zh) 一种软硬件实时信息传输系统和方法

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
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