CN114143382A - 一种双边加速数据传输方法及系统 - Google Patents
一种双边加速数据传输方法及系统 Download PDFInfo
- Publication number
- CN114143382A CN114143382A CN202111448162.8A CN202111448162A CN114143382A CN 114143382 A CN114143382 A CN 114143382A CN 202111448162 A CN202111448162 A CN 202111448162A CN 114143382 A CN114143382 A CN 114143382A
- Authority
- CN
- China
- Prior art keywords
- proxy
- udp
- tcp
- protocol
- information
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
Abstract
本发明提供了一种双边加速数据传输方法,应用于双边加速数据传输系统,涉及网络通信技术领域。包括:第一代理设备接收客户端通过TCP协议发送的请求信息,将请求信息转换为UDP协议格式,通过UDP协议将请求信息发送至第二代理设备;第二代理设备以UDP协议接收请求信息,将请求信息转换为TCP协议格式,通过TCP协议将请求信息发送至服务器;第二代理设备接收服务器通过TCP协议发送的响应信息,将响应信息转换为UDP协议格式,通过UDP协议将响应信息发送至第一代理设备;第一代理设备以UDP协议接收响应信息,将响应信息转换为TCP协议格式,通过TCP协议将响应信息发送至所述客户端。采用本方法能够在高丢包率的网络环境下提升TCP的传输效率。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种双边加速数据传输方法及系统。
背景技术
传统的TCP拥塞控制算法不适用于高延时、高误码的链路,随着web元素的丰富,用户量的增加对交互时延和处理能力的要求越来越高。
现有技术中主流的网络加速(一般指TCP加速)技术大致分为单边加速和双边加速,单边加速,只需要在TCP的一端部署的加速技术,因为部署容易,变动不大,所以应用范围较广,缺点是必须兼容标准的TCP协议,优化调整点不如双边多。双边加速,可以采用更高效的传输协议,数据缓存,流量压缩,多路径转发,缺点是需要在双端部署,如果是服务器对服务器,那么两边的服务器上都要进行部署,如果是服务器对客户端,那么除了服务器端部署外,客户端也要安装软件。现在常用的实现双边加速的项目有Kcptun、UDPspeeder以及tinyfecVPN。其中,Kcptun是github上开源的实现了TCP双边加速的项目;UDPspeeder是github上开源的实现了UDP加速的项目,可以和OpenVPN一起使用来对TCP加速。但是以上方式均有如下缺点:不支持透明代理、不支持客户端与服务器多对多、双边加速的两台设备根据数据方向需要部署两种不同的程序或双边加速的两台设备根据数据方向需要在不同的运行模式下。
因此,如何在高丢包率的网络环境下提升TCP的传输速率是当前亟需解决的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供了一种双边加速数据传输方法及系统,解决了高丢包率的网络环境下TCP传输速率低的问题。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供一种双边加速数据传输方法,应用于双边加速数据传输系统,所述双边加速数据传输系统包括:客户端、第一代理设备、第二代理设备以及服务器;所述方法包括:
所述第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议格式的请求信息转换为UDP协议格式的请求信息,通过UDP协议将所述请求信息发送至所述第二代理设备;
所述第二代理设备以UDP协议接收所述请求信息,将UDP协议格式的请求信息转换为TCP协议格式的请求信息,通过TCP协议将所述请求信息发送至所述服务器;
所述第二代理设备接收服务器通过TCP协议发送的响应信息,将TCP协议格式的响应信息转换为UDP协议格式的响应信息,通过UDP协议将所述响应信息发送至所述第一代理设备;
所述第一代理设备以UDP协议接收所述响应信息,将所述UDP协议格式的响应信息转换为TCP协议格式的响应信息,通过TCP协议将所述响应信息发送至所述客户端。
作为本发明实施例一种可选的实施方式,所述方法还包括:
所述第一代理设备包括第一连接端口和第二连接端口;所述第一连接端口为所述第一代理设备建立的TCP连接端口;所述第二连接端口为所述第一代理设备建立的UDP连接端口;
所述第二代理设备包括第三连接端口和第四连接端口;所述第三连接端口为所述第二代理设备建立的UDP连接端口;所述第四连接端口为所述第二代理设备建立的TCP连接端口。
作为本发明实施例一种可选的实施方式,所述方法还包括:
所述第一代理设备将客户端源IP地址与所述第二连接端口进行绑定,以使所述第一代理设备与服务器进行通信;
所述第一代理设备将服务器IP地址与所述第一连接端口进行绑定,以使客户端与所述第一代理设备进行通信;
所述第二代理设备将客户端源IP地址与所述第四连接端口进行绑定,以使所述第二代理设备与服务器进行通信;
所述第二代理设备将服务器IP地址与所述第三连接端口进行绑定,以使客户端与所述第二代理设备进行通信。
作为本发明实施例一种可选的实施方式,所述方法还包括:
若所述第一代理设备通过所述第一连接端口接收到客户端通过TCP协议发送的第一信息,则将TCP协议格式的第二信息转换为UDP协议格式的第二信息;所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第二信息;其中,所述第一信息用于指示客户端与服务器断开连接;所述第二信息为所述第一代理设备已缓存的请求信息;
所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第一信息;
若所述第二代理设备通过所述第三连接端口接收到所述第一信息,则所述第二代理设备通过所述第四连接端口向所述服务器发送所述第二信息之后,所述第四连接端口与所述服务器断开连接。
作为本发明实施例一种可选的实施方式,所述通过UDP协议将所述请求信息发送至所述第二代理设备,包括:
基于UDP协议采用数据包增加序列号技术,通过UDP协议将所述请求信息发送至所述第二代理设备。
作为本发明实施例一种可选的实施方式,在通过UDP协议将所述请求信息发送至所述第二代理设备之前,所述方法还包括:
基于前向纠错技术对所述请求信息进行处理,将处理后的请求信息通过UDP协议发送至所述第二代理设备。
作为本发明实施例一种可选的实施方式,在基于前向纠错技术对所述请求信息进行处理之后,所述方法还包括:
基于压缩技术对所述请求信息进行压缩处理,通过UDP协议将压缩处理后的请求信息发送至所述第二代理设备。
第二方面,作为本发明实施例一种可选的实施方式,本发明实施例提供一种双边加速数据传输系统,其特征在于,包括:客户端、第一代理设备、第二代理设备以及服务器,用于执行权利要求1至7任一项所述的双边加速数据传输方法。
第三方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面或第一方面的任一实施方式所述的双边加速数据传输方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的双边加速数据传输方法。
本发明实施例提供的双边加速数据传输方法,应用于双边加速数据传输系统,首先第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,通过UDP协议将请求信息发送至第二代理设备;然后第二代理设备以UDP协议接收所述请求信息,将UDP协议格式的请求信息转换为TCP协议格式的请求信息,通过TCP协议将所述请求信息发送至所述服务器;接着第二代理设备接收服务器通过TCP协议发送的响应信息,将TCP协议格式的响应信息转换为UDP协议格式的响应信息,通过UDP协议将所述响应信息发送至第一代理设备;最后第一代理设备以UDP协议接收所述响应信息,将UDP协议格式的响应信息转换为TCP协议格式的响应信息,通过TCP协议将所述响应信息发送至客户端。
由于第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,发送给第二代理设备;第二代理设备将UDP协议格式的请求信息转换为TCP协议格式的请求信息,发送给服务器;所以采用本方法能够通过协议转换技术实现左连接和右连接进行TCP转UDP以及UDP转TCP的处理,克服了传统的Nginx通过UDP协议或者TCP协议进行代理时左右连接只能是相同的协议的缺陷,又由于使用TCP协议必须建立连接才可传输数据,因此其在高并发传输数据时效率相对较低,而UDP协议不需要建立连接,其传输速度快,所以采用本方法结合TCP协议与UDP协议的优点,通过代理服务器对传输的数据格式进行转化,能够在高并发的网络环境下非常显著的提升TCP的传输效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所述的双边加速数据传输系统的系统架构示意图;
图2为本发明实施例所述的双边加速数据传输系统的交互流程示意图;
图3为本发明实施例所述的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面将对本发明的方案进行进一步描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本发明还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本发明的一部分实施例,而不是全部的实施例。
本发明的说明书和权利要求书中的术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本发明实施例中,“示例性的”或者“例如”等词是用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
TCP协议(传输控制协议,Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的通信协议。TCP把连接作为最基本的抽象单元,每条TCP连接有两个端点,TCP连接的端点即套接字。示例性的,套接字socket=(IP地址:端口号),TCP连接={socket1,socket2}={(IP1:port1),(IP2,port2)}。
UDP协议(用户数据包协议,User Datagram Protocol)。UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据包的方法。UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据包长度、校验值。
TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。
TCP保证数据准确传输,UDP保证数据快速传输,KCP是两种协议的折中。KCP协议是为了解决在网络拥堵的情况下TCP传输速度慢的问题。
KCP:KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以callback(回调函数)的方式提供给KCP。
Nginx,即engine x,是一个高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强。
FEC(前向纠错也叫前向纠错码,Forward Error Correction),是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。FEC是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。
本发明实施例的整体构思:由于标准的Nginx代理并不是透明代理,客户端访问的是代理服务器Nginx的地址,而不是真实的服务器的地址,并且在高并发下socket的缓存会被很快耗尽。本发明实施例借助Nginx的高并发性能加以改造实现一套性能稳定配置灵活的TCP双边加速数据传输系统,采用本系统能够实现在高丢包率的网络环境下提升TCP的传输速率的目标。
本发明实施例提供的双边加速数据传输方法应用的系统架构可以如图1所示。参照图1所示,该系统包括:客户端11、第一代理设备12、第二代理设备13以及服务器14。客户端11可以但不限于是台式电脑、笔记本电脑、平板电脑等。第一代理设备12、第二代理设备13均是基于Nginx(engine x)服务器改进之后的透明代理服务器;其中,Nginx是一个高性能的HTTP和反向代理web服务器,其特点是占用内存少,并发能力强,服务器14可以是用独立的服务器或者多个服务器组成的服务器集群来实现。
基于图1所示的双边加速数据传输系统本发明实施例提供了一种双边加速数据传输方法。具体的,参照图2所示,本发明实施例提供的双边加速数据传输方法包括如下步骤:
S20、所述第一代理设备接收客户端通过TCP协议发送的请求信息。
其中,第一代理设备是Nginx服务器。请求信息包括请求行、请求头、请求数据包、空行等。
S21、第一代理设备将TCP协议格式的请求信息转换为UDP协议格式的请求信息。
具体的,协议转换是一种映射,就是把某一协议的收发信息(或事件)序列映射为另一协议的收发信息序列。需要映射的信息为重要信息,因此协议转换可以看作是两个协议的重要信息之间的映射。
S22、第一代理设备通过UDP协议将所述请求信息发送至所述第二代理设备。
示例性的,第一代理设备通过创建的监听连接监听数据请求信息,然后解析请求信息,解析TCP协议,修改请求信息里面的标识TCP/RTP/AVP为RTP/AVP,修改以后的请求信息发送给第二代理设备。
相应的,所述第二代理设备以UDP协议接收所述请求信息。然后执行步骤S23、第二代理设备将所述UDP协议格式的请求信息转换为TCP协议格式的请求信息。
S24、第二代理设备通过TCP协议将所述请求信息发送至所述服务器。
示例性的,第二代理设备修改请求信息里面的标识RTP/AVP为TCP/RTP/AVP,将修改以后的请求信息发送给服务器。
S25、所述第二代理设备接收服务器通过TCP协议发送的响应信息。
具体的,服务器以TCP协议返回请求信息对应的响应信息。
S26、第二代理设备将TCP协议格式的响应信息转换为UDP协议格式的响应信息。
具体的,第二代理设备接收到TCP协议格式的响应信息,将响应信息里面的标识TCP/RTP/AVP修改为RTP/AVP。
S27、第二代理设备通过UDP协议将所述响应信息发送至所述第一代理设备。
示例性的,将修改后的响应信息以UDP协议格式发送给第一代理设备。
相应的,第一代理设备接收以UDP协议接收所述响应信息。然后执行步骤S28、第一代理设备将所述UDP协议格式的响应信息转换为TCP协议格式的响应信息。
示例性的,第一代理设备修改响应信息里面的标识RTP/AVP为TCP/RTP/AVP。
S29、第一代理设备通过TCP协议将所述响应信息发送至所述客户端。
示例性的,第一代理设备将修改以后的响应信息以TCP协议格式发送给客户端。
本发明实施例提供的双边加速数据传输方法,应用于双边加速数据传输系统,首先第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,通过UDP协议将请求信息发送至第二代理设备;然后第二代理设备以UDP协议接收所述请求信息,将UDP协议格式的请求信息转换为TCP协议格式的请求信息,通过TCP协议将所述请求信息发送至所述服务器;接着第二代理设备接收服务器通过TCP协议发送的响应信息,将TCP协议格式的响应信息转换为UDP协议格式的响应信息,通过UDP协议将所述响应信息发送至第一代理设备;最后第一代理设备以UDP协议接收所述响应信息,将UDP协议格式的响应信息转换为TCP协议格式的响应信息,通过TCP协议将所述响应信息发送至客户端。
由于第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,发送给第二代理设备;第二代理设备将UDP协议格式的请求信息转换为TCP协议格式的请求信息,发送给服务器;所以采用本方法能够通过协议转换技术实现左连接和右连接进行TCP转UDP以及UDP转TCP的处理,克服了传统的Nginx通过UDP协议或者TCP协议进行代理时左右连接都是相同协议的缺陷,又由于使用TCP协议必须建立连接才可传输数据,因此其在高并发传输数据时效率相对较低,而UDP协议不需要建立连接,其传输速度快,所以采用本方法结合TCP协议与UDP协议的优点,通过代理服务器对传输的数据格式进行转化,能够在高并发的网络环境下非常显著的提升TCP的传输效率。
在一个实施例中,所述第一代理设备包括第一连接端口和第二连接端口。
其中,所述第一连接端口为第一代理设备建立的TCP连接端口,所述第二连接端口为第一代理设备建立的UDP连接端口。
所述第二代理设备包括第三连接端口和第四连接端口。
其中,所述第三连接端口为所述第二代理设备建立的UDP连接端口;所述第四连接端口为所述第二代理设备建立的TCP连接端口。
在一个实施例中,所述第一代理设备将客户端源IP地址与所述第二连接端口进行绑定,以使所述第一代理设备与服务器进行通信;所述第一代理设备将服务器IP地址与所述第一连接端口进行绑定,以使客户端与所述第一代理设备进行通信;所述第二代理设备将客户端源IP地址与所述第四连接端口进行绑定,以使所述第二代理设备与服务器进行通信;所述第二代理设备将服务器IP地址与所述第三连接端口进行绑定,以使客户端与所述第二代理设备进行通信。
具体的,实现透明代理的原理是,Nginx代理服务器使用获取到的客户端IP来建立Nginx代理服务器与上游服务器直接的TCP连接,客户端不知道有代理服务器的存在,代理服务器改变请求信息的通信格式,并以客户端源IP地址与真实服务器建立连接进行代理转发,即,在本实施例中,客户端不知道有第一代理设备和第二代理设备的存在,第一代理设备和第二代理设备改变请求信息的通信格式,并以客户端源IP地址与真实服务器建立连接进行代理转发。因此,对于客户端和服务器来说,代理服务器都是透明的。
示例性的,当客户端A向服务器B提交请求时,透明代理设备根据自身策略拦截并修改客户端A发的报文,并作为实际的请求方,向服务器B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至客户端A。可以理解的是,如果透明代理设备设置不允许访问服务器B,那么客户端A就不会得到服务器B的数据。
进一步,可以通过设置套接字透明属性的方式来实现代理设备与客户端源IP地址或服务器IP地址进行本地绑定。示例性的,在代码中可以如下方式实现:inton=1;setsockopt(sockfd,SOL_IP,IP_TRANSPARENT,(char*)&on,sizeof(on))。具体的,第一个就是套接字fd,SOL_IP代表设置的网络通信层是在IP层,IP_TRANSPARENT就是透明属性,on的值就代表透明属性设置是开启还是关闭,透明属性设置后,套接字就可以绑定非本机的地址,或者可以接收目的地址不是本套接字接收地址的数据包。由此,即可实现Nginx的TCP透明代理设置。
示例性的,首先客户端要发送请求数据包时,先创建TCP新连接={socket1,socket2}={(IP1:port1),(IP2,port2)},这里的IP1指客户端的IP地址、IP2指真实服务器的IP地址。第一代理设备在接收客户端发的TCP新连接后,也需要对第一代理设备创建的左连接和右连接设置透明属性,使其能绑定非本机设备的IP地址,用于第一代理设备与服务器进行通信或者代理服务器给客户端发送数据。
另外,第一代理设备和第二代理设备均创建了监听连接,作为接收端监听是否有客户端或服务器请求连接。
通过上述方式,能够克服传统的Nginx的透明代理仅支持右连接的透明代理的缺陷,使得代理设备的左右连接均支持透明代理。
在一个实施例中,若所述第一代理设备通过所述第一连接端口接收到客户端通过TCP协议发送的第一信息,则执行以下步骤a-d:
其中,所述第一信息用于指示客户端与服务器断开连接。
a、将TCP协议格式的第二信息转换为UDP协议格式的第二信息。
其中,所述第二信息为所述第一代理设备已缓存的请求信息。
b、所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第二信息。
具体的,第一代理设备通过UDP连接向第二代理设备发送已缓存但未发出的请求信息。
在第一代理设备发送已缓存的请求信息之后,执行以下步骤c。
c、所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第一信息。
具体的,第一代理设备通过UDP连接向第二代理设备发送客户端断开连接的信息。
相应的,若所述第二代理设备通过所述第三连接端口接收到所述第一信息,则执行以下步骤d。
d、所述第二代理设备通过所述第四连接端口向所述服务器发送所述第二信息。
具体的,第二代理设备通过UDP连接接收客户端断开连接的信息之后,通过TCP连接向真实的服务器发送已缓存的请求信息,等到第二代理设备发送已缓存的请求信息之后,第二代理设备的TCP连接与真实的服务器断开连接。
进一步,第一代理设备在接收TCP新连接后,右连接需要建立UDP类型的socket,并创建KCP对象设置在右连接上,设置UDP连接上KCP对象的超时时间用于维护KCP的数据包发送和ACK的发送机制。进一步,第一代理设备使用第二连接端口给第二代理设备的第一连接端口发送连接信息,并且只发送一次,剩下的数据包发送交由KCP对象来发送。
需要说明的是,若在预设时间内,第一代理设备再次接收到客户端发送的请求数据包,则需要在连接超时处理逻辑中判断右连接上的KCP对象发送完所有的数据包并且没有未确认的数据包才能关闭连接。
在一个实施例中,基于UDP协议采用数据包增加序列号技术,通过UDP协议将所述请求信息发送至所述第二代理设备。
具体的,当网络拥堵严重时,会发生丢包,丢包发生时KCP为了保证可靠性需要重传数据。而发送方需要判断什么时候发生了丢包,以及丢了哪些包。为了解决这个问题,发送方为缓存队列中的每个包设置了包序号和超时重传时间。当检测到当前时间超过了分片的超时重传时间,该分片还没有得到确认时就会触发该分片的超时重传。
为实现重传机制,KCP为每个分片分配一个唯一标识,接收方收到一个包后告知发送方接到的包的序号,发送方接到确认后再继续发送。而如果发送方在一定时间内(超时重传时间)没有接到确认,就说明数据包丢失了,发送方需要重传丢失的数据包,所以发送方会把待确认的数据缓存起来,方便重传。停等的重传机制发送一个包后必须等待确认后再发下一个包,传输速度较慢,所以为了提高发送速度,发送方可以不必再每发送一个包后就进行等待确认,而是可以发送多个包出去,然后等待接收方一一确认。又由于接收方不可能同时处理无限多的数据,因此需要限制发送方往网络中发送的数据数量。
示例性的,由于KCP引入了快速重传机制,当第一代理设备发送了编号为n,n+1,n+2...等请求数据包出去后,第二代理设备没有接收到编号为n的请求数据包,而接收到编号为n+1,n+2等等n号包之后的包,这时因为n号包之后的包都已经接收到了,而n号包还没有接收到,所以可以认为n号包已经丢失了,告知第一代理设备可以进行快速重传。KCP为了支持快速重传,第二代理设备需要告诉发送方,哪些包已经成功收到了,哪些包没有收到。
在一个实施例中,在通过UDP协议将所述请求信息发送至所述第二代理设备之前,基于前向纠错技术对所述请求信息进行处理,将处理后的请求信息通过UDP协议发送至所述第二代理设备。
通过上述方法,能够克服传统的Nginx代理不支持数据包冗余的缺陷,通过前向纠错技术对数据包的发送、接收进行处理使其支持使用前向纠错来改善丢包环境下的网络质量。
在一个实施例中,在基于前向纠错技术对所述请求信息进行处理之后,基于压缩技术对所述请求信息进行压缩处理,通过UDP协议将压缩处理后的请求信息发送至所述第二代理设备。
通过上述方法,能够克服传统的Nginx代理不支持数据压缩的缺陷,通过压缩技术对数据包进行压缩,减少数据传输量,提高网络传输效率。
本发明实施例提供的双边加速数据传输方法,应用于双边加速数据传输系统,首先第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,通过UDP协议将请求信息发送至第二代理设备;然后第二代理设备以UDP协议接收所述请求信息,将UDP协议格式的请求信息转换为TCP协议格式的请求信息,通过TCP协议将所述请求信息发送至所述服务器;接着第二代理设备接收服务器通过TCP协议发送的响应信息,将TCP协议格式的响应信息转换为UDP协议格式的响应信息,通过UDP协议将所述响应信息发送至第一代理设备;最后第一代理设备以UDP协议接收所述响应信息,将UDP协议格式的响应信息转换为TCP协议格式的响应信息,通过TCP协议将所述响应信息发送至客户端。
由于第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议的请求信息转换为UDP协议格式的请求信息,发送给第二代理设备;第二代理设备将UDP协议格式的请求信息转换为TCP协议格式的请求信息,发送给服务器;所以采用本方法能够通过协议转换技术实现左连接和右连接进行TCP转UDP以及UDP转TCP的处理,克服了传统的Nginx通过UDP协议或者TCP协议进行代理时左右连接都是相同的协议的缺陷,又由于使用TCP协议必须建立连接才可传输数据,因此其在高并发传输数据时效率相对较低,而UDP协议不需要建立连接,其传输速度快,所以采用本方法结合TCP协议与UDP协议的优点,通过代理服务器对传输的数据格式进行转化,能够在高并发的网络环境下非常显著的提升TCP的传输效率。
本发明实施例还提供了一种电子设备,图3为本发明实施例提供的双边加速数据传输电子设备的结构示意图。如图3所示,本实施例提供的双边加速数据传输电子设备包括:存储器31和处理器32,存储器31用于存储计算机程序;处理器32用于调用计算机程序时执行上述方法实施例提供的双边加速数据传输方法中测试管理服务器或测试任务服务器所执行的步骤。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例提供的双边加速数据传输方法。
本领域技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央判断单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种双边加速数据传输方法,其特征在于,应用于双边加速数据传输系统,所述双边加速数据传输系统包括:客户端、第一代理设备、第二代理设备以及服务器;所述方法包括:
所述第一代理设备接收客户端通过TCP协议发送的请求信息,将TCP协议格式的请求信息转换为UDP协议格式的请求信息,通过UDP协议将所述请求信息发送至所述第二代理设备;
所述第二代理设备以UDP协议接收所述请求信息,将所述UDP协议格式的请求信息转换为TCP协议格式的请求信息,通过TCP协议将所述请求信息发送至所述服务器;
所述第二代理设备接收服务器通过TCP协议发送的响应信息,将TCP协议格式的响应信息转换为UDP协议格式的响应信息,通过UDP协议将所述响应信息发送至所述第一代理设备;
所述第一代理设备以UDP协议接收所述响应信息,将所述UDP协议格式的响应信息转换为TCP协议格式的响应信息,通过TCP协议将所述响应信息发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一代理设备包括第一连接端口和第二连接端口;所述第一连接端口为所述第一代理设备建立的TCP连接端口;所述第二连接端口为所述第一代理设备建立的UDP连接端口;
所述第二代理设备包括第三连接端口和第四连接端口;所述第三连接端口为所述第二代理设备建立的UDP连接端口;所述第四连接端口为所述第二代理设备建立的TCP连接端口。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述第一代理设备将客户端源IP地址与所述第二连接端口进行绑定,以使所述第一代理设备与服务器进行通信;
所述第一代理设备将服务器IP地址与所述第一连接端口进行绑定,以使客户端与所述第一代理设备进行通信;
所述第二代理设备将客户端源IP地址与所述第四连接端口进行绑定,以使所述第二代理设备与服务器进行通信;
所述第二代理设备将服务器IP地址与所述第三连接端口进行绑定,以使客户端与所述第二代理设备进行通信。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第一代理设备通过所述第一连接端口接收到客户端通过TCP协议发送的第一信息,则将TCP协议格式的第二信息转换为UDP协议格式的第二信息;所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第二信息;其中,所述第一信息用于指示客户端与服务器断开连接;所述第二信息为所述第一代理设备已缓存的请求信息;
所述第一代理设备通过所述第二连接端口向所述第二代理设备发送所述第一信息;
若所述第二代理设备通过所述第三连接端口接收到所述第一信息,则所述第二代理设备通过所述第四连接端口向所述服务器发送所述第二信息之后,所述第四连接端口与所述服务器断开连接。
5.根据权利要求1所述的方法,其特征在于,所述通过UDP协议将所述请求信息发送至所述第二代理设备,包括:
基于UDP协议采用数据包增加序列号技术,通过UDP协议将所述请求信息发送至所述第二代理设备。
6.根据权利要求5所述的方法,其特征在于,在通过UDP协议将所述请求信息发送至所述第二代理设备之前,所述方法还包括:
基于前向纠错技术对所述请求信息进行处理,将处理后的请求信息通过UDP协议发送至所述第二代理设备。
7.根据权利要求6所述的方法,其特征在于,在基于前向纠错技术对所述请求信息进行处理之后,所述方法还包括:
基于压缩技术对所述请求信息进行压缩处理,通过UDP协议将压缩处理后的请求信息发送至所述第二代理设备。
8.一种双边加速数据传输系统,其特征在于,包括:客户端、第一代理设备、第二代理设备以及服务器,用于执行权利要求1至7任一项所述的双边加速数据传输方法。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述双边加速数据传输方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1至7任一项所述的双边加速数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448162.8A CN114143382A (zh) | 2021-11-30 | 2021-11-30 | 一种双边加速数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448162.8A CN114143382A (zh) | 2021-11-30 | 2021-11-30 | 一种双边加速数据传输方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114143382A true CN114143382A (zh) | 2022-03-04 |
Family
ID=80386235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111448162.8A Pending CN114143382A (zh) | 2021-11-30 | 2021-11-30 | 一种双边加速数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114143382A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114884881A (zh) * | 2022-05-12 | 2022-08-09 | 福建天晴在线互动科技有限公司 | 一种数据压缩传输方法及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1476181A (zh) * | 2003-07-14 | 2004-02-18 | 中国科学院计算技术研究所 | 一种分布式的卫星网络tcp性能加速协议格式和方法 |
CN102244645A (zh) * | 2010-05-14 | 2011-11-16 | 北京快网科技有限公司 | 一种基于udp协议的可靠,透明,通用加速网关系统 |
CN102404204A (zh) * | 2011-11-01 | 2012-04-04 | 深信服网络科技(深圳)有限公司 | 网络拓扑中的加速方法、装置及系统 |
-
2021
- 2021-11-30 CN CN202111448162.8A patent/CN114143382A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1476181A (zh) * | 2003-07-14 | 2004-02-18 | 中国科学院计算技术研究所 | 一种分布式的卫星网络tcp性能加速协议格式和方法 |
CN102244645A (zh) * | 2010-05-14 | 2011-11-16 | 北京快网科技有限公司 | 一种基于udp协议的可靠,透明,通用加速网关系统 |
CN102404204A (zh) * | 2011-11-01 | 2012-04-04 | 深信服网络科技(深圳)有限公司 | 网络拓扑中的加速方法、装置及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114884881A (zh) * | 2022-05-12 | 2022-08-09 | 福建天晴在线互动科技有限公司 | 一种数据压缩传输方法及终端 |
CN114884881B (zh) * | 2022-05-12 | 2023-07-07 | 福建天晴在线互动科技有限公司 | 一种数据压缩传输方法及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8458280B2 (en) | Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations | |
US6275471B1 (en) | Method for reliable real-time multimedia streaming | |
US7966380B2 (en) | Method, system, and program for forwarding messages between nodes | |
US7761588B2 (en) | System and article of manufacture for enabling communication between nodes | |
JP4575435B2 (ja) | ネットワーク・リンク上でのhttpの加速 | |
Partridge et al. | An implementation of the revised internet stream protocol (ST-2) | |
US20040249948A1 (en) | Performing application layer transactions during the connection establishment phase of connection-oriented protocols | |
US20070208820A1 (en) | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations | |
Dunkels | Minimal TCP/IP implementation with proxy support | |
US20110134930A1 (en) | Packet-based networking system | |
CA2841511A1 (en) | System and method for reliable virtual bi-directional data stream communications with single socket point-to-multipoint capability | |
US20170373975A1 (en) | Carrying tcp over an icn network | |
WO2006133655A1 (fr) | Procede pour la transmission fiable de donnees utilisant un protocole de multidiffusion et de diffusion individuelle et hote pour la reception des donnees | |
CN101567769A (zh) | 数据重传方法、系统及对等节点 | |
Géhberger et al. | Performance evaluation of low latency communication alternatives in a containerized cloud environment | |
KR101600060B1 (ko) | 다중캐스트 네트워크에서 sctp를 위한 프로토콜 부스터 | |
Liri et al. | Robustness of iot application protocols to network impairments | |
US20070291782A1 (en) | Acknowledgement filtering | |
US7349384B2 (en) | Reliable one-way messaging over request-response transport protocols | |
CN114143382A (zh) | 一种双边加速数据传输方法及系统 | |
US7689702B1 (en) | Methods and apparatus for coordinating processing of network connections between two network protocol stacks | |
US8418017B2 (en) | Adaptive acknowledgment mechanism for network communication | |
WO2022259452A1 (ja) | 中間装置、通信方法、およびプログラム | |
Song et al. | Architecture of a web accelerator for wireless networks | |
US9172774B2 (en) | Technique for managing communications at a router |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |