一种基于ARQ和UDP协议的TCP网络加速方法技术

技术编号:27691935 阅读:11 留言:0更新日期:2021-03-17 04:46
本发明专利技术公开一种基于ARQ和UDP协议的TCP网络加速方法,主要包括以下步骤:步骤(1),在客户端与服务端上分别与需要加速的应用层服务之间建立SOCKS连接;步骤(2),在服务端,根据配置文件配置加密方式和密码;步骤(3)在服务端,将UDP网络侧接收到的数据进行处理并暂存入接收队列;步骤(4)在服务端,进行主循环,实现数据与应用层交互;步骤(5)在客户端,根据配置文件配置与服务器一致的密码和加密方式;(6)在客户端,将UDP网络侧接收到的数据进行处理并暂存入接收队列;步骤(7)在客户端,进行主循环,实现数据与应用层交互。通过上述方法,既解决了TCP传输时延高的问题,又解决了UDP传输数据不可靠的问题,具有广泛的市场前景。

【技术实现步骤摘要】
一种基于ARQ和UDP协议的TCP网络加速方法
本专利技术涉及属于通信软件
,具体涉及一种基于ARQ和UDP协议的TCP网络加速方法。
技术介绍
随着近年来宽带速度大幅提升,目前关于网络传输的手段主要包括ARQ、TCP、UDP等。首先,自动重传请求(ARQ,AutomaticRepeat-reQuest)是OSI模型中数据链路层的错误纠正协议之一,它包括停止等待ARQ协议和连续ARQ协议,具有错误侦测、正面确认、逾时重传与负面确认继以重传等机制;其次,传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据链路层采用连续ARQ(UNA)协议,强调数据的安全性,不同主机的应用层之间经常需要可靠的、像管道一样的连接;另外,用户数据报协议(UDP,UserDatagramProtocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。然而,对于TCP协议而言,为保证数据可靠其有下列缺点:慢,效率低,在传递数据之前要先建立连接,这会消耗时间;而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间。此外,对于UDP协议而言,UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差,但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高。随着全球视频直播业务、网络实时游戏业务快速增长,在跨国网络应用种,急需提供一种在UDP快速低时延的基础上,加上ARQ进行数据可靠性确认,而形成一种可靠的低时延的网络传输方法。
技术实现思路
本专利技术主要是提供一种解决在网络环境很差的场景下,TCP超时重传时延巨大的方法。首先,具有如下定义:conv:连接号、cmd:命令字、frg:分片、cwnd:接收窗口大小、ts:时间序列、sn:序列号、una:下一个可接收的序列号、len:数据长度。本专利技术解决上述技术问题所提供的技术方案是:一种基于ARQ和UDP协议的TCP网络加速方法。由于UDP本身是不可靠的,所以需要额外信息来保证传输数据的可靠性,因此,本方法在传输的数据上增加一个包头,用于实现ARQ技术,确保数据的可靠、有序,具体包括以下步骤:步骤1、在客户端与服务端上分别与需要加速的应用层服务建立SOCKS连接。步骤2、在服务端,根据配置文件配置密码,加密方式等;根据配置的目的地址,即需要与客户端通信的UDP地址,建立UDP通道;本机配置文件监听端口,即需要接受应用层数据的SOCKS地址,建立SOCKS连接;步骤3、在服务端,通过回调的方式将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时通过回调的方式将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列。步骤4、同时在服务端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据,通过与客户端对接的UDP连接进行发送。步骤5、在客户端,根据配置文件配置与服务器一致的密码,加密方式等;并根据服务器地址,端口,采用ARQ技术向服务端建立UDP通道;根据配置文件监听本地端口,即建立的SOCKS地址,用于接收用户应用流量或实现全局流量代理。步骤6、在客户端,通过回调的方式将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时通过回调的方式将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列,此步骤与步骤3完全一致,都是基于对客户端与服务器UDP通道上的数据进行处理。步骤7、同时在客户端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据,通过与服务端对接的UDP连接进行发送,此步骤与步骤4逻辑一致。进一步的技术方案是,所述步骤3和步骤6中将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列,包括以下步骤:A、根据待发送数据大小与本地窗口大小、远端窗口大小,对接收到的数据进行分片,并将数据拷入待发送缓冲队列。B、根据封装4种报文类型的报文头,并将发送缓冲队列的数据拷贝至待发送队列。其中报文头参数详细定义如下:B-1,conv(conversation),4字节,会话标识。由于UDP不是面向连接的,因此本方法自己实现了一套会话机制。conv由客户端随机生成,之后客户端和服务端交互的conv值均一致,以此来标识两个节点之间的通信是一个会话。B-2.cmd(command),1字节,是标识本方法的报文类型。有以下ACK报文、数据报文、探测窗口报文、响应窗口报文4种。B-3.frg(fragment),1字节,分段序号。本方法有两种模式,一种是stream模式,一种是message模式。当为stream模式时,frg的值始终为0;当为message模式时,传输的数据大小超过MTU限制,会被分成多个包,通过frg来标识不同包的序号,使得在不知道包到达的先后顺序的情况下也能够通过frg字段来重新按照顺序组装成原始数据。B-4.wnd(window),2字节,窗口大小,自己(发送当前包的终端)能够接收数据量,窗口大小可以为0,当为0时,在发送数据前会进行探测窗口大小的操作。B-5.ts(timestamp),4字节,当前毫秒时间戳。B-6.Sn(sequencenumber),4字节,包序号,该包序号为当前会话中的序号,从0开始。B-7.una,4字节,表示此编号前所有的包都已收到。B-8.len,4字节,数据部分的长度。C、校验发送队列的数据是否需要是否需要重新发送,并更新滑动窗口位置。更进一步,其中,判断报文是否需要重传的方法包括:方法一、超时重传。根据配置的加速类型设置报文超时时长,如果发送队列的报文在设置的超时时长内未收到ACK报文或下一个可接受的序列号确认则重发报文。方法二、快速重传。根据ACK报文和下一个可接受的序列号确定报文被跳过的次数,如果该报文之后2个报文已经收到ACK确认,且una仍为当前报文,则知道该报文被跳过2次,认为该报文丢失,此时不用等待超时,直接重新发送该报文。例如,发送端发送了1,2,3,4,5几个包,然后收到远端的ACK:1,3,4,5,当收到ACK3时,发送端知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度方法三、选择重传。本专利技术每个报文需要有单独的ACK报文,且都带有下一个可接受的序列号。所以即使部分ACK报文丢失,也能精确的定位到对端待接收的报文,只需重发真正丢失的报文。进一步的技术方案是,所述步骤4和步骤7中所述将待发送队列的数据,通过UDP连接进行发送包括以下步骤:一、通过FEC编码器对发送队列的报文进行编码。二、生成校验和并根据配置的加密方法对发送队列的报文进行加密。三、将加密之后的的数据采用UDP的方式进行发送。进一本文档来自技高网
...

【技术保护点】
1.一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于,包括以下配置步骤:步骤(1),在客户端与服务端分别与应用层服务建立SOCKS连接;步骤(2),在服务端,根据配置文件配置加密方式和密码;步骤(3)在服务端,通过回调的方式将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时通过回调的方式将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列;步骤(4),在服务端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据通过与客户端对接的UDP连接进行发送;步骤(5),在客户端,根据配置文件配置与服务器一致的密码和加密方式;根据服务器地址和端口采用ARQ手段向服务端建立UDP通道,根据配置文件监听本地端口,即建立的SOCKS地址;步骤(6),在客户端,将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列;步骤(7),在客户端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据,通过与服务端对接的UDP连接进行发送。/n

【技术特征摘要】
1.一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于,包括以下配置步骤:步骤(1),在客户端与服务端分别与应用层服务建立SOCKS连接;步骤(2),在服务端,根据配置文件配置加密方式和密码;步骤(3)在服务端,通过回调的方式将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时通过回调的方式将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列;步骤(4),在服务端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据通过与客户端对接的UDP连接进行发送;步骤(5),在客户端,根据配置文件配置与服务器一致的密码和加密方式;根据服务器地址和端口采用ARQ手段向服务端建立UDP通道,根据配置文件监听本地端口,即建立的SOCKS地址;步骤(6),在客户端,将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列;步骤(7),在客户端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据,通过与服务端对接的UDP连接进行发送。


2.根据权利要求1所述的一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于:所述步骤(3)和步骤(6)中将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列,包括以下步骤:首先,根据待发送数据大小与本地窗口大小、远端窗口大小,对接收到的数据进行分片,并将数据拷入待发送缓冲队列;其次,根据待发送数据的类型,封装4种报文类型的报文头,并将发送缓冲队列的数据拷贝至待发送队列;最后,校验发送队列的数据是否需要重新发送,并更新滑动窗口位置。


3.根据权利要求2所述的一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于:所述报文包括数据报文、ACK报文、探测窗口报文和响应窗口报文;报文头内容共20字节,其中包括所述的字节包括连接号、命令字、分片、接收窗口大小、时间序列、序列号、下一个可接收的序列号、数据长度。


4.根据权利要求2所述的一种基于ARQ和UDP协议的TCP...

【专利技术属性】
技术研发人员:段春明周正军
申请(专利权)人:成都云智天下科技股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1