一种基于ARQ和UDP协议的TCP网络加速方法转让专利
申请号 : CN202011278531.9
文献号 : CN112511377B
文献日 : 2022-02-01
发明人 : 段春明 , 周正军
申请人 : 成都云智天下科技股份有限公司
摘要 :
权利要求 :
1.一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于,包括以下配置步骤:步骤(1),在客户端与服务端分别与应用层服务建立SOCKS连接;步骤(2),在服务端,根据配置文件配置加密方式和密码;步骤(3),在服务端,通过回调的方式将UDP网络侧接收到的数据进行处理并暂存入接收队列;同时通过回调的方式将监听的SOCKS接收到的本地数据进行处理,并暂存入待发送队列;步骤(4),在服务端,进行主循环,将接收队列的数据拷贝写入至SOCKS连接端口;将待发送队列的数据通过与客户端对接的UDP连接进行发送;步骤(5),在客户端,根据配置文件配置与服务器一致的密码和加密方式;根据服务器地址和端口采用ARQ手段向服务端建立UDP通道,根据配置文件监听本地端口;步骤(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网络加速方法,其特征在于:校验发送队列的数据重新发送按照超时重传、快速重传和选择重传三种方式进行,如果发送队列的报文在设置的超时时长内未收到ACK报文或下一个可接受的序列号被确认,则按照超时重传的方式进行重发报文;如果该报文之后2个报文已经收到,则显示该报文被跳过2次,认为该报文丢失,此时不用等待超时,根据ACK报文和下一个可接受的序列号确定报文被跳过的次数,按照快速重传的方式直接重新发送该报文;如果部分ACK报文丢失,则按照选择重传的方式重发正在丢失的报文。
5.根据权利要求3所述的一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于:步骤(4)和步骤(7)中所述将待发送队列的数据,通过UDP连接进行发送包括以下步骤:首先,通过FEC编码器对发送队列的报文进行编码;其次,生成校验和并根据配置的加密方法对发送队列的报文进行加密;第三,将加密之后的数据采用UDP的方式进行发送。
6.根据权利要求5所述的一种基于ARQ和UDP协议的TCP网络加速方法,其特征在于:所述步骤(3)和步骤(6)中将UDP网络侧接收到的数据进行处理并暂存入接收队列包括以下步骤:a、根据配置的加密方法解密接收报文,并根据校验和确认报文是否有效;b、对有效的报文使用FEC解码器进行解码;c、将解码成功的数据,提取报文头,并针对4种不同的报文进行解析;d、根据序列号确认是否为重复报文,将非重复报文拷入待接收队列;e、将待接收队列报文,拷贝至接收队列,并清除已拷贝的待接收队列报文;f、根据下一个可接受的序列号确定是否滑动窗口,如果窗口滑动触发向UDP连接侧发送报文流程。
7.根据权利要求1所述的基于ARQ和UDP协议的TCP网络加速方法,其特征在于,所述的步骤(2)中,根据配置的监听端口,建立SOCKS连接;本机配置文件目的地址,用于UDP通讯。
8.根据权利要求7所述的基于ARQ和UDP协议的TCP网络加速方法,其特征在于,所述的目的地址为需要进行UDP传输数据的地址,所述的监听端口为与本地应用层对接的SOCKS连接端口。
说明书 :
一种基于ARQ和UDP协议的TCP网络加速方法
技术领域
背景技术
纠正协议之一,它包括停止等待ARQ协议和连续ARQ协议,具有错误侦测、正面确认、逾时重
传与负面确认继以重传等机制;其次,传输控制协议(TCP,Transmission Control
Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据链路层采用连
续ARQ(UNA)协议,强调数据的安全性,不同主机的应用层之间经常需要可靠的、像管道一样
的连接;另外,用户数据报协议(UDP,User Datagram Protocol)是OSI参考模型中一种无连
接的传输层协议,提供面向事务的简单不可靠信息传送服务。
会消耗大量时间。
率高。
延的网络传输方法。
发明内容
时间序列、sn:序列号、una:下一个可接收的序列号、len:数据长度。
下步骤:
据的SOCKS地址,建立SOCKS连接;
送队列。
的SOCKS地址,用于接收用户应用流量或实现全局流量代理。
送队列,此步骤与步骤3完全一致,都是基于对客户端与服务器UDP通道上的数据进行处理。
致。
均一致,以此来标识两个节点之间的通信是一个会话。
大小超过MTU限制,会被分成多个包,通过frg来标识不同包的序号,使得在不知道包到达的
先后顺序的情况下也能够通过frg字段来重新按照顺序组装成原始数据。
次,认为该报文丢失,此时不用等待超时,直接重新发送该报文。例如,发送端发送了1,2,3,
4,5几个包,然后收到远端的ACK:1,3,4,5,当收到ACK3时,发送端知道2被跳过1次,收到
ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善
了丢包时的传输速度
真正丢失的报文。
协议与UDP结合的方案,既解决了TCP传输时延高的问题,又解决UDP传输数据丢失的问题,
从根本上改善网络环境;在继承传统数据压缩的基础上,结合前向纠错技术,自动修复报
文,减少丢包重发,进一步加快数据传输速率;对数据进行加密传输,保证用户数据安全可
靠。
附图说明
具体实施方式
中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得所有其它实施例,都
属于本发明的保护范围。
务的数据进行发送和接受,本发明基于方法创建的流程按步骤进行描述,但其实在部署完
成之后上述的对网络侧UDP报文的发送和接收,以及对应用层用户或者服务的数据进行发
送和接受完全是并行进行的。基于这个前提描述,结合附图,本发明具体实施步骤如下:
SOCKS连接的数据;本机配置文件目的地址,监听本地UDP端口,即与客户端对接端口,并配
置网络侧缓冲区大小,用于接收来自UDP网络连接的数据;根据配置文件配置发送与接收的
滑动窗口大小;
文,并根据校验和确认报文是否有效;对有效的报文使用FEC解码器进行解析;将解码成功
的数据,提取本发明的报文头,获取如图3所示的报文头的各个参数,根据cmd对4种不同的
报文进行解析;根据序列号确认是否重复报文,将非重复报文考入待接收队列;根据接收窗
口大小将待接收队列数据移动至接收队列;根据下一个可接受的序列号确定是否滑动窗
口,如果窗口滑动触发向UDP连接侧发送报文流程,其中触发报文发送流程包括回ACK报文,
回响应窗口报文以及发送窗口中检查需要重发的报文。
收到的数据进行分片,并将数据拷入待发送缓冲队列;根据需要封装4种报文类型的报文
头,其中报文格式如图3,并将发送缓冲队列的数据拷贝至待发送队列;校验发送队列的数
据是否需要是否需要重新发送,并更新滑动窗口位置,其中校验数据是否需要重新发送的
方法包括:超时重传,根据配置的加速类型设置报文超时时长;如果发送队列的报文在设置
的超时时长内未收到ACK报文或下一个可接受的序列号确认则重发报文;快速重传,根据
ACK报文和下一个可接受的序列号确定报文被跳过的次数;如果后2个报文已经收到确认,
则知道该报文被跳过2次,认为该报文丢失,此时不用等待超时,直接重新发送该报文。比如
说,发送端发送了1,2,3,4,5几个包,然后收到远端的ACK:1,3,4,5,当收到ACK3时,发送端
知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直
接重传2号包;选择重传,本发明使用ARQ协议,每个报文需要有单独的ACK报文,且都带有下
一个可接受的序列号,所以即使部分ACK报文丢失,也能精确的定位到对端待接收的报文,
只需重发真正丢失的报文。
明最终的数据接收方除了使用本地的SOCKS端口之外,也可以使用其他的IP地址和端口进
行配置,之后的数据报文可通过TCP的方式进行二次传输,但是使用远端连接时需要确保目
的端口就是本次数据传输的最终地址。
的SOCKS地址,用于接收用户应用流量或实现全局流量代理。
送队列,此步骤与步骤3完全一致,都是基于对客户端与服务器UDP通道上的数据进行处理,
只不过一个是在客户端运行,一个是在服务端运行。
致。
内,当可利用上述揭示的技术内容作出些变动或修饰为等同变化的等效实施例。但凡是未
脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、
等同变化与修饰,均仍属于本发明说明书技术方案的范围内。