本发明专利技术涉及一种TCP中间人处理方法,包括:发送端与接收端之间建立TCP连接;所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;发送端向接收端发送TCP数据包;所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;接收端接收TCP数据包,并向发送端发送响应数据。
【技术实现步骤摘要】
一种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数据包,并向本文档来自技高网...
【技术保护点】
一种TCP中间人处理方法,包括:步骤1)、发送端与接收端之间建立TCP连接;所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;步骤2)、发送端向接收端发送TCP数据包;所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;步骤3)、接收端接收TCP数据包,并向发送端发送响应数据。
【技术特征摘要】
1.一种TCP中间人处理方法,包括:步骤1)、发送端与接收端之间建立TCP连接;所述TCP中间人截取并转发发送端和接收端的TCP握手报文,协调发送端和接收端,在发送端和接收端之间建立TCP连接并维持这一TCP连接;步骤2)、发送端向接收端发送TCP数据包;所述TCP中间人截取TCP数据包,剥离数据包MAC头和IP头,提交TCP数据包给其内部的TCP处理模块进行处理、修改,然后TCP中间人为处理后的数据包重新封装IP头和MAC头,重新计算校验和后转发给接收端;步骤3)、接收端接收TCP数据包,并向发送端发送响应数据;所述步骤1)进一步包括:步骤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中间人代替接收端向发送端转发此二...
【专利技术属性】
技术研发人员:郑艳伟,叶晓舟,宋磊,袁鼎,
申请(专利权)人:中国科学院声学研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。