CN109525661B - 数据传输方法及装置 - Google Patents
数据传输方法及装置 Download PDFInfo
- Publication number
- CN109525661B CN109525661B CN201811353027.3A CN201811353027A CN109525661B CN 109525661 B CN109525661 B CN 109525661B CN 201811353027 A CN201811353027 A CN 201811353027A CN 109525661 B CN109525661 B CN 109525661B
- Authority
- CN
- China
- Prior art keywords
- http
- target
- data
- protocol
- message
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明提供了数据传输方法及装置,HTTP客户端获得HTTP请求数据后,将该HTTP请求数据封装成符合目标协议的目标请求消息,并将该目标请求消息发送至服务端。服务端解析该请求消息还原成HTTP请求数据,并响应该HTTP请求数据得到相应的HTTP响应数据。然后,服务端将该HTTP响应数据转换成符合目标协议的目标响应消息并返回给HTTP客户端;HTTP客户端解析接收到的目标响应消息得到HTTP响应数据并返回给应用层。由上述过程可知,该数据传输方法实现了HTTP客户端与服务端之间通过目标协议进行数据传输。当网络状况较差时,可以选择传输速度较快的其它传输协议传输数据,从而提高了HTTP客户端与服务端之间的传输速度,同时,提高了数据传输的灵活性。
Description
技术领域
本发明属于互联网技术领域,尤其涉及数据传输方法及装置。
背景技术
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是互联网上应用最广泛的网络协议。HTTP客户端是指采用HTTP协议的客户端,例如,web浏览器就是一个HTTP客户端,主要用来发起HTTP请求或访问,实现从服务端下载数据或向服务端上传数据。
cURL库是依据统一资源定位符(Uniform Resource Locator,URL)规则,来模拟请求服务器资源的客户端工具。利用cURL库能够在各个项目中自定义实现自己的HTTP客户端功能。但是,cURL库采用单一的TCP协议传输数据,在某些网络环境下TCP连接建立慢、效率低,传输速度慢,无法充分利用带宽,导致HTTP客户端与服务端之间传输速度低。
发明内容
有鉴于此,本发明的目的在于一种数据传输方法及装置,以解决目前的HTTP客户端只能使用TCP连接传输数据导致的传输速度低的技术问题,其技术方案如下:
第一方面,本申请提供了一种数据传输方法,应用于超文本传输协议HTTP客户端中,该方法包括:
获取HTTP请求数据;
将所述HTTP请求数据转换成符合目标协议的目标请求消息,所述目标协议为除HTTP协议之外的其它传输协议;
将所述目标请求消息发送至服务端,以使所述服务端将该目标请求消息还原为所述HTTP请求数据并响应该HTTP请求数据得到HTTP响应数据,以及将所述HTTP响应数据转换为符合所述目标协议的目标响应消息;
接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据。
可选地,所述HTTP客户端包括客户端工具库和客户端协议适配模块;
所述将所述HTTP请求数据转换成符合目标协议的目标请求消息,包括:
所述客户端工具库将来自应用层的HTTP请求数据转换成第一请求消息,并将该第一请求消息发送至所述客户端协议适配模块,所述第一请求消息的消息格式为所客户端协议适配模块所支持的第一消息格式;
所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息。
可选地,所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息,包括:
所述客户端协议适配模块解码所述第一请求消息得到HTTP请求数据,并将该HTTP请求数据存入发送消息队列中;
当检测到该发送消息队列中有数据且与所述服务端之间的网络接口可写时,所述客户端协议适配模块从所述发送消息队列中读取当前待读取HTTP请求数据,并将该当前待读取HTTP请求数据转换成符合所述目标协议的目标请求消息。
可选地,所述接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据,包括:
所述客户端协议适配模块将所述目标响应消息转换成符合所述第一消息格式的第一响应消息,并将该第一响应消息发送至所述客户端工具库;
所述客户端工具库解码所述第一响应消息得到所述HTTP响应数据。
可选地,所述接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据,还包括:
所述客户端协议适配模块将所述第一响应消息存入接收消息队列中;
当所述客户端协议适配模块检测到所述接收消息队列中有数据且与所述客户端工具库之间的传输控制协议TCP接口可写时,从所述接收消息队列中读取当前待读取第一响应消息,并将该当前待读取第一响应数据发送至所述客户端工具库进行解码。
可选地,所述目标协议包括:基于UDP的数据传输协议UDT、KCP协议和QUIC协议。
第二方面,本申请还提供了一种数据传输方法,应用于服务端中,该方法包括:
接收超文本传输协议HTTP客户端发送的符合目标协议的目标请求消息,该目标请求消息由所述HTTP客户端依据HTTP请求数据转换得到,所述目标协议为除传输控制协议TCP之外的其它传输协议;
将所述目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息;
将所述HTTP响应消息转换成符合所述目标协议的目标响应消息,并将该目标响应消息发送至所述HTTP客户端。
第三方面,本申请提供了一种数据传输装置,应用于超文本传输协议HTTP客户端中,该装置包括:
第一获取模块,用于获取HTTP请求数据;
协议转换模块,用于将所述HTTP请求数据转换成符合目标协议的目标请求消息,所述目标协议为除HTTP协议之外的其它传输协议;
发送模块,用于将所述目标请求消息发送至服务端,以使所述服务端将该目标请求消息还原为所述HTTP请求数据并响应该HTTP请求数据得到HTTP响应数据,以及将所述HTTP响应数据转换为符合所述目标协议的目标响应消息;
接收模块,用于接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据。
可选地,所述HTTP客户端包括客户端工具库和客户端协议适配模块;所述协议转换模块具体用于:
调用所述客户端工具库将来自应用层的HTTP请求数据转换成第一请求消息,并将该第一请求消息发送至所述客户端协议适配模块,所述第一请求消息的消息格式为所客户端协议适配模块所支持的第一消息格式;
调用所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息。
第四方面,本申请还提供了一种数据传输装置,应用于服务端中,该装置包括:
接收模块,用于接收超文本传输协议HTTP客户端发送的符合目标协议的目标请求消息,该目标请求消息由所述HTTP客户端依据HTTP请求数据转换得到,所述目标协议为除HTTP协议之外的其它传输协议;
响应模块,用于将所述目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息;
协议转换模块,用于将所述HTTP响应消息转换成符合所述目标协议的目标响应消息,并将该目标响应消息发送至所述HTTP客户端。
本发明提供的上述技术方案,HTTP客户端获得HTTP请求数据后,将该HTTP请求数据封装成符合目标协议的目标请求消息,并将该目标请求消息发送至服务端。服务端解析该目标请求消息还原成HTTP请求数据,并处理该HTTP请求数据得到相应的HTTP响应数据。然后,服务器将该HTTP响应数据转换成符合目标协议的目标响应消息并返回给HTTP客户端;HTTP客户端解析接收到的目标响应消息得到HTTP响应数据并返回给应用层。由上述过程可知,利用该方法实现了HTTP客户端与服务端之间通过第三方协议进行数据传输。当网络状况较差时,可以选择传输速度较快的第三方传输协议传输数据,从而提高了HTTP客户端与服务端之间的传输速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一种基于TCP的数据传输系统的结构示意图;
图2是本申请实施例另一种基于TCP的数据传输系统的结构示意图;
图3是本申请实施例一种数据传输方法的流程图;
图4是本申请提供的UCA消息格式示意图;
图5是本申请实施例提供的UCA模块的结构示意图;
图6是本申请实施例提供的UCA模块的工作流程图;
图7是本申请实施例提供的一种数据传输装置的框图;
图8是本申请实施例提供的另一种数据传输装置的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,示出了本申请实施例一种基于TCP的数据传输系统的结构示意图;如图1所示,该系统包括HTTP客户端1、服务端2。
其中,在HTTP客户端1中增加一客户端协议适配模块(UProxy Client Adaptor,UCA)11,该UCA模块11用于将cURL库(即,客户端工具库)以TCP协议传输的HTTP数据与第三方协议数据进行相互转换。
UCA模块与cURL库之间通过UCA消息格式进行数据交互。其中,UCA消息格式能够携带应用层看不到的消息,例如,控制消息、错误消息等。而且,需要在cURL库中增加新的数据请求回调函数和数据响应回调函数,以使cURL库能够与UCA模块11之间通过UCA消息格式进行数据交互。
其中,cURL库通过数据请求回调函数将HTTP客户端应用层发起的HTTP请求编码成UCA消息格式的UCA请求消息,并通过HTTP客户端的本地TCP连接发送给UCA模块11。UCA模块接收到该UCA请求消息后转换成第三方协议数据并发送给服务端的代理模块21。
cURL库通过数据响应回调函数将UCA模块11发送的UCA响应消息转换成HTTP响应消息,通过cURL库原有的处理逻辑返回给应用层。
服务端2为web服务器,可以与HTTP客户端之间传输HTTP数据。本申请在服务端2中增加代理模块21,该代理模块21用于将第三方协议数据与以TCP协议传输的HTTP数据进行相互转换。UCA模块11与代理模块21之间利用第三方协议进行通信。
在本申请的一个实施例中,第三方协议包括但不限于:基于UDP的数据传输协议(UDP-based Data Transfer Protocol,UDT),快速传输控制协议KCP,基于UDP的低时延互联网传输层协议(Quick UDP Internet Connection,QUIC)等。
请参见图2,示出了本申请实施例提供的基于TCP的数据传输系统的构架示意图。
如图2所示,HTTP客户端1与服务端2之间在原有TCP传输通道基础上,增加了通过UCA模块及服务端2的代理模块建立的能够传输第三方协议数据的传输通道。可以根据实际网络环境选择传输数据的通道。例如,在线上弱网环境中,可以通过UCA模块将HTTP数据转换成UDT数据并传输,与传输HTTP数据相比提高了数据传输速度。
请参见图3,示出了本申请实施例一种数据传输方法的流程图,该方法应用于图1所示的系统中。
如图3所示,该方法可以包括以下步骤:
S110,cURL库接收应用层发起的HTTP请求,并将该HTTP请求按照UCA消息格式进行编码得到UCA请求消息。
在本申请的一个实施例中,cURL侧的数据请求回调函数将应用层发起的HTTP请求编码成UCA消息格式。
HTTP客户端侧的cURL库与UCA模块之间通信采用自定义的UCA消息格式,该消息格式能够携带应用层看不到的消息,例如,控制消息、错误消息等。
请参见图4,示出了本申请提供的UCA消息格式示意图,如图4所示,该UCA消息格式包括以下字段:
Internal Message Tag:UCA消息标签,2字节长,定义为0x5154,即“QT”,以区分消息头;
Head Len:头部长度,2字节长;
DataLen:数据长度,4字节长;
Message ID:消息序号,4字节长;
Reserved:保留字段,4字节长;
Head:头部数据,以JSON格式定义,不定长,易读易扩展,用于cURL库与UCA模块的信息交互;
Data:HTTP原始数据,不定长。
此外,cURL库与UCA模块之间的消息交互情况包括以下:
发起HTTP请求:cURL库发往UCA模块,消息格式为{"connect_time":"xxx","ip":"xxx.xxx.xxx.xxx","port":"9001"},connect_time设定连接超时时间,ip和port分别为服务端的代理模块的IP地址地址及端口号;其中“xx”根据实际情况替换为具体消息内容。
取消HTTP请求:cURL侧通过断开TCP连接来通知UCA模块取消HTTP请求,UCA模块再与服务端断开第三方协议连接。
收到HTTP响应:UCA模块发往cURL库,消息格式为{"connect_time":"xxx","local_ip":"xxx.xxx.xxx.xxx","local_port":"xxxx"},connect_time为连接建立时间,local_ip和local_port为UCA模块与服务端的代理模块建立UDT/KCP连接所使用的本地IP地址和端口号;
错误响应:UCA模块发往cURL库,当UCA侧发生错误时通知cURL侧,消息格式为{“error_code”:"xxx","last_error":"xxx"},error_code为自定义错误码,last_error为系统错误码。
S120,cURL库将该UCA请求消息发送至UCA模块。
cURL库通过自身与UCA模块之间的TCP连接将该UCA请求消息发送至UCA模块。
S130,UCA模块解码接收到的UCA请求消息,并将解码后的数据转换成符合目标协议的目标请求消息。
其中,该目标协议可以是上述第三方协议中的任意一种。
UCA模块首先将接收到的UCA请求消息进行解码,得到解码后的数据,然后,再将解码后的数据封装成符合目标协议的消息,即目标请求消息。
S140,UCA模块将该目标请求消息发送至代理模块。
UCA模块通过自身与服务端代理模块之间的目标协议连接将该目标请求消息发送至该代理模块。其中,目标协议连接可以是UDT连接或KCP连接等。
S150,代理模块将该目标请求消息转换成HTTP请求并发送至服务器。
服务端代理模块接收到该目标请求消息后转换成HTTP请求数据(即,HTTP请求),并通过该代理模块与服务端之间的TCP连接发送该HTTP请求数据。
S160,服务器响应该HTTP请求并向该代理模块返回HTTP响应消息。
服务器接收到代理模块发送的HTTP请求数据后,依据原有的处理逻辑处理该HTTP请求数据得到HTTP响应消息。
S170,代理模块将该HTTP响应消息转换成符合所述目标协议的目标响应消息并发送至UCA模块。
服务端代理模块将HTTP响应消息转换成符合目标协议的响应消息并返回给UCA模块。
S180,UCA模块解码该符合目标协议的目标响应消息,并将解码后的响应数据封装成符合UCA消息格式的UCA响应消息。
UCA模块首先将目标响应消息进行解码,得到解码后的响应数据,然后将该响应数据封装成UCA响应消息。
S190,UCA模块将该UCA响应消息发送至cURL库。
UCA模块利用自身与cURL库之间的TCP连接将该UCA响应消息发送至cURL库。
S1100,cURL库解码该UCA响应消息并返回给应用层。
cURL库的响应回调函数解码该UCA响应消息得到HTTP响应数据并返回给应用层。
执行完S1100步骤后即完成了一次HTTP请求及响应。
本实施例提供的数据传输方法,HTTP客户端通过UCA模块实现HTTP数据与第三方协议数据的相互转换,服务器通过代理模块实现第三方协议数据与HTTP数据的相互转换;实现了HTTP客户端与服务器之间以第三方协议连接传输数据,从而提高了数据传输的灵活性,同时提高了数据传输速度。
请参见图5,示出了本申请实施例提供的UCA模块的结构示意图,本实施例中,UCA模块采用单线程模型,使用IO多路复用和消息缓存机制,在有限的资源消耗下高效处理多并发HTTP请求。
如图5所示,该UCA模块内部包括TCP处理模块和UDP处理模块(因为第三方协议大多基于UDP协议)。其中,TCP处理模块负责处理与cURL库之间的UCA消息交互,UDP处理模块负责处理与服务端代理模块之间的第三方协议数据交互;
结合图5和图6,UCA模块的具体工作流程如下:
S210,TCP处理模块接收来自cURL库的UCA请求消息。
当应用层发起HTTP请求后,cURL库将该HTTP请求封装成UCA消息格式,得到该UCA请求消息并发送至该TCP处理模块。
具体的,TCP处理模块监听UCA模块与cURL库之间的TCP端口(默认20820),当应用层发起HTTP请求时,通过该TCP端口接收来自cURL库的UCA消息。
S220,TCP处理模块解码该UCA请求消息,并将解码后的数据发送至发送消息队列中,以及,从解码后的数据中提取出服务端的IP地址和端口号,创建对应的UDP socket。
TCP处理模块解码接收到的UCA请求消息,提取HTTP服务端的IP地址和端口号创建对应的UDP socket,并把解码后的消息放入发送消息队列。
如图1所示,HTTP客户端可以与多个不同的web服务器之间传输数据,即HTTP可以与多个不同的web服务器之间建立多个UDP socket,并基于这些UDP socket传输目标协议数据,例如,图1所示的UDT数据和KCP数据。
S230,UDP处理模块从该发送消息队列中读取当前待读取数据并利用目标协议进行封装后发送至服务端代理模块。
当前待读取数据是指按照发送消息队列的读取顺序,当前应该读取的数据。
UDP处理模块检测到发送消息队列中有数据且与服务端代理模块连接的UDPsocket可写时,从发送消息队列中读取数据并封装成符合目标协议的目标协议请求消息发送至服务端代理模块。
在本申请的一个实施例中,UDP socket可写是指UDP socket建立后,当前网络未拥塞或对端接收缓冲区空闲等情况;UDP socket可写反之不可写。
然后,服务端代理模块将接收到的目标请求消息还原成HTTP请求,并通过TCP连接发送给HTTP服务端。HTTP服务端处理该HTTP请求并向服务端代理模块返回HTTP响应消息。服务端代理模块将该HTTP响应消息利用目标协议进行封装后发送至UCA模块内的UDP处理模块。
S240,UDP处理模块接收代理模块发送的符合目标协议的目标响应消息,并解码该目标响应消息得到HTTP响应消息,以及将该HTTP响应消息封装成UCA响应消息发送至接收消息队列中。
UDP处理模块检测到与服务端代理模块之间的UDP socket可读时,通过该UDPsocket接收服务端代理模块发送的符合目标协议的响应消息,解码该响应消息得到HTTP响应消息,再将该HTTP响应消息封装成UCA响应消息发送至接收消息队列中。
与UDP socket可写相似,UDP socket可读是指当前网络未拥塞或接收缓冲区空闲等情况;反之UDP socket不可读。
S250,TCP处理模块从接收消息队列中读取当前待读取数据并发送至cURL库。
TCP处理模块检测到接收消息队列中有数据且与cURL库之间的TCP socket可写时,从接收消息队列中读取当前待读取数据并发送至cURL库。
当前待读取数据是指按照所述接收消息队列的读取顺序,当前应该读取的数据。
接收消息队列中的数据是UCA消息格式,因此发送至cURL库的数据也是UCA消息格式。
cURL侧的响应回调函数解码该UCA响应消息得到HTTP响应数据并返回给应用层。
本实施例提供的UCA模块,使用采用单线程模型、使用IO多路复用和消息缓存机制,实现在有限资源消耗下高效处理多并发HTTP请求,即在一定资源消耗的前提下,提高HTTP请求并发处理能力。
相应于上述的数据传输方法实施例,本申请还提供了数据传输装置实施例。
请参见图7,示出了本申请实施例提供的一种数据传输装置的框图,该装置应用于HTTP客户端中,如图7所示,该装置包括:第一获取模块110、协议转换模块120、发送模块130和接收模块140;
第一获取模块110,用于获取HTTP请求数据。
该第一获取模块110接收HTTP客户端的应用层发起的HTTP请求数据。
协议转换模块120,用于将HTTP请求数据转换成符合目标协议的目标请求消息。
其中,目标协议为除HTTP协议之外的其它传输协议,例如,UDT协议、KCP协议、QUIC协议。
在本申请的一个实施例中,HTTP客户端包括cURL库和UCA模块;其中,该协议转换模块120调用cURL库将该HTTP请求数据按照UCA消息格式进行编码得到UCA请求消息,并由cURL库将该UCA请求消息发送至UCA模块。该协议转换模块120再调用UCA模块解码接收到的UCA请求消息,并由UCA模块将解码后的数据转换成符合目标协议的目标请求消息。
发送模块130,用于将目标请求消息发送至服务端。
所述服务端将该目标请求消息还原为所述HTTP请求数据并响应该HTTP请求数据得到HTTP响应数据,以及将HTTP响应数据转换为符合目标协议的目标响应消息。
在本申请的一个实施例中,服务端需要增加代理模块,发送模块将目标请求消息发送至服务端的代理模块中,由该代理模块将接收到的目标请求消息转换成HTTP请求数据,并将该HTTP请求发送至服务器,服务器响应该HTTP请求并向该代理模块返回HTTP响应消息。服务端的代理模块将该HTTP响应消息转换成符合目标协议的响应消息返回至UCA模块。
接收模块140,用于接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据。
该接收模块140调用UCA模块解码接收到的符合目标协议的目标响应消息,并将解码后的响应数据封装成符合UCA消息格式的UCA响应消息发送至cURL库。
该接收模块140调用cURL库解码该UCA响应消息并返回给HTTP客户端的应用层。
本实施例提供的数据传输装置,HTTP客户端获得HTTP请求数据后,将该HTTP请求数据封装成符合目标协议的目标请求消息,并将该目标请求消息发送至服务端。服务端解析该目标请求消息还原成HTTP请求数据,并处理该HTTP请求数据得到相应的HTTP响应数据。然后,服务器将该HTTP响应数据转换成符合目标协议的目标响应消息并返回给HTTP客户端;HTTP客户端解析接收到的目标响应消息得到HTTP响应数据并返回给应用层。该数据传输装置实现了HTTP客户端与服务端之间通过第三方协议进行数据传输。当网络状况较差时,可以选择传输速度较快的第三方传输协议传输数据,从而提高了HTTP客户端与服务端之间的传输速度。
相应于上述应用于HTTP客户端的数据传输装置实施例,本申请还提供了应用于服务端的数据传输装置实施例。
请参见图8,示出了本申请另一种数据传输装置的框图,该装置应用于服务端中,如图8所示,该装置可以包括:接收模块210、响应模块220和协议转换模块230;
接收模块210,用于接收HTTP客户端发送的符合目标协议的目标请求消息。
该目标请求消息由HTTP客户端依据HTTP请求数据转换得到,目标协议为除HTTP协议之外的其它传输协议,例如,可以包括UDT协议、KCP协议和QUIC协议。
在本申请的一个实施例中,服务端需要增加一个代理模块,接收模块210调用该代理模块接收HTTP客户端发送的目标请求消息。
响应模块220,用于将目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息。
响应模块220调用服务端的代理模块解析HTTP客户端发送的目标请求消息,并将该目标请求消息转换成HTTP请求数据,并返回至该响应模块220,该响应模块220响应该HTTP请求数据得到相应的HTTP响应消息。
协议转换模块230,用于将HTTP响应消息转换成符合目标协议的目标响应消息,并将该目标响应消息发送至HTTP客户端。
该协议转换模块230调用服务端的代理模块,以使服务端的代理模块将HTTP响应消息转换成符合目标协议的目标响应消息,并将该目标响应消息发送至HTTP客户端。
本实施例提供的数据传输装置,服务端接收HTTP客户端发送的目标请求消息,并将该目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息;然后,将HTTP响应消息转换成符合目标协议的目标响应消息,再将该目标响应消息返回至HTTP客户端。通过这个过程实现HTTP客户端与服务端之间以第三方协议传输数据,提高了数据传输速度及灵活性。对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据传输方法,其特征在于,应用于超文本传输协议HTTP客户端中,所述HTTP客户端与服务端之间在原有TCP传输通道的基础上增设基于其他传输协议的传输通道,该方法包括:
获取HTTP请求数据;
根据当前网络质量确定基于目标协议的目标传输通道,将所述HTTP请求数据转换成符合所述目标协议的目标请求消息,所述目标协议是在所述当前网络质量下能够提高数据传输速度的传输协议;
将所述目标请求消息发送至服务端,以使所述服务端将该目标请求消息还原为所述HTTP请求数据并响应该HTTP请求数据得到HTTP响应数据,以及将所述HTTP响应数据转换为符合所述目标协议的目标响应消息;
接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据。
2.根据权利要求1所述的方法,其特征在于,所述HTTP客户端包括客户端工具库和客户端协议适配模块;
所述将所述HTTP请求数据转换成符合目标协议的目标请求消息,包括:
所述客户端工具库将来自应用层的HTTP请求数据转换成第一请求消息,并将该第一请求消息发送至所述客户端协议适配模块,所述第一请求消息的消息格式为所客户端协议适配模块所支持的第一消息格式;
所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息。
3.根据权利要求2所述的方法,其特征在于,所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息,包括:
所述客户端协议适配模块解码所述第一请求消息得到HTTP请求数据,并将该HTTP请求数据存入发送消息队列中;
当检测到该发送消息队列中有数据且与所述服务端之间的网络接口可写时,所述客户端协议适配模块从所述发送消息队列中读取当前待读取HTTP请求数据,并将该当前待读取HTTP请求数据转换成符合所述目标协议的目标请求消息。
4.根据权利要求2所述的方法,其特征在于,所述接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据,包括:
所述客户端协议适配模块将所述目标响应消息转换成符合所述第一消息格式的第一响应消息,并将该第一响应消息发送至所述客户端工具库;
所述客户端工具库解码所述第一响应消息得到所述HTTP响应数据。
5.根据权利要求4所述的方法,其特征在于,所述接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据,还包括:
所述客户端协议适配模块将所述第一响应消息存入接收消息队列中;
当所述客户端协议适配模块检测到所述接收消息队列中有数据且与所述客户端工具库之间的传输控制协议TCP接口可写时,从所述接收消息队列中读取当前待读取第一响应消息,并将该当前待读取第一响应数据发送至所述客户端工具库进行解码。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述目标协议包括:基于UDP的数据传输协议UDT、KCP协议和QUIC协议。
7.一种数据传输方法,其特征在于,应用于服务端中,所述HTTP客户端与服务端之间在原有TCP传输通道的基础上增设基于其他传输协议的传输通道,该方法包括:
接收超文本传输协议HTTP客户端发送的符合目标协议的目标请求消息,该目标请求消息由所述HTTP客户端依据HTTP请求数据转换得到,所述目标协议由所述HTTP客户端根据当前网络质量确定的,在在所述当前网络质量下能够提高数据传输速度的传输协议;
将所述目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息;
将所述HTTP响应消息转换成符合所述目标协议的目标响应消息,并将该目标响应消息发送至所述HTTP客户端。
8.一种数据传输装置,其特征在于,应用于超文本传输协议HTTP客户端中,所述HTTP客户端与服务端之间在原有TCP传输通道的基础上增设基于其他传输协议的传输通道,该装置包括:
第一获取模块,用于获取HTTP请求数据;
协议转换模块,用于根据当前网络质量确定基于目标协议的目标传输通道,将所述HTTP请求数据转换成符合所述目标协议的目标请求消息,所述目标协议是在所述当前网络质量下能够提高数据传输速度的传输协议;
发送模块,用于将所述目标请求消息发送至服务端,以使所述服务端将该目标请求消息还原为所述HTTP请求数据并响应该HTTP请求数据得到HTTP响应数据,以及将所述HTTP响应数据转换为符合所述目标协议的目标响应消息;
接收模块,用于接收服务端返回的所述目标响应消息,并将该目标响应消息还原为HTTP响应数据。
9.根据权利要求8所述的装置,其特征在于,所述HTTP客户端包括客户端工具库和客户端协议适配模块;所述协议转换模块具体用于:
调用所述客户端工具库将来自应用层的HTTP请求数据转换成第一请求消息,并将该第一请求消息发送至所述客户端协议适配模块,所述第一请求消息的消息格式为所客户端协议适配模块所支持的第一消息格式;
调用所述客户端协议适配模块将接收到的所述第一请求消息转换成符合所述目标协议的目标请求消息。
10.一种数据传输装置,其特征在于,应用于服务端中,所述HTTP客户端与服务端之间在原有TCP传输通道的基础上增设基于其他传输协议的传输通道,该装置包括:
接收模块,用于接收超文本传输协议HTTP客户端发送的符合目标协议的目标请求消息,该目标请求消息由所述HTTP客户端依据HTTP请求数据转换得到,所述目标协议由所述HTTP客户端根据当前网络质量确定的,在在所述当前网络质量下能够提高数据传输速度的传输协议;
响应模块,用于将所述目标请求消息转换成HTTP请求数据,并响应该HTTP请求数据得到HTTP响应消息;
协议转换模块,用于将所述HTTP响应消息转换成符合所述目标协议的目标响应消息,并将该目标响应消息发送至所述HTTP客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811353027.3A CN109525661B (zh) | 2018-11-14 | 2018-11-14 | 数据传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811353027.3A CN109525661B (zh) | 2018-11-14 | 2018-11-14 | 数据传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109525661A CN109525661A (zh) | 2019-03-26 |
CN109525661B true CN109525661B (zh) | 2021-08-13 |
Family
ID=65777619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811353027.3A Active CN109525661B (zh) | 2018-11-14 | 2018-11-14 | 数据传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109525661B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10778812B1 (en) | 2019-05-09 | 2020-09-15 | Alibaba Group Holding Limited | Data encapsulation conversion and transmission |
CN110213241A (zh) * | 2019-05-09 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 一种数据传输方法、设备、介质以及装置 |
CN112039824B (zh) * | 2019-06-03 | 2022-08-26 | 上海哔哩哔哩科技有限公司 | 通信方法、系统、设备及计算机可读存储介质 |
CN111193716B (zh) * | 2019-12-11 | 2023-04-07 | 未鲲(上海)科技服务有限公司 | 业务数据调用方法、装置、计算机设备和存储介质 |
CN111224999A (zh) * | 2020-01-21 | 2020-06-02 | 安徽文香信息技术有限公司 | 一种传输协议切换方法、装置、设备及存储介质 |
CN111212097A (zh) * | 2020-04-21 | 2020-05-29 | 炬星科技(深圳)有限公司 | 机器人访问服务器的方法、设备及存储介质 |
CN111934840A (zh) * | 2020-06-29 | 2020-11-13 | 北京百度网讯科技有限公司 | 客户端和服务端的通信方法、网关、电子设备及存储介质 |
CN111935135B (zh) * | 2020-08-07 | 2022-04-08 | 浪潮云信息技术股份公司 | 一种基于cmsp的amqp协议代理方法 |
CN111885093B (zh) * | 2020-09-27 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 事件请求的传输方法和装置、存储介质及电子设备 |
CN112311774B (zh) * | 2020-10-16 | 2023-05-05 | 北京金山云网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113890896A (zh) * | 2021-09-24 | 2022-01-04 | 中移(杭州)信息技术有限公司 | 网络访问方法、通信设备及计算机可读存储介质 |
CN114189562B (zh) * | 2021-11-30 | 2023-11-14 | 惠州Tcl移动通信有限公司 | 数据处理方法、装置、终端和存储介质 |
CN114710476A (zh) * | 2021-12-17 | 2022-07-05 | 武汉众智数字技术有限公司 | 一种基于http协议的跨边界数据交换方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005136684A (ja) * | 2003-10-30 | 2005-05-26 | Nippon Telegr & Teleph Corp <Ntt> | データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム |
CN1921438A (zh) * | 2006-09-15 | 2007-02-28 | 深圳市深信服电子科技有限公司 | 一种应用代理实现网间应用加速的方法 |
CN106357590A (zh) * | 2015-07-15 | 2017-01-25 | 艾默生网络能源系统北美公司 | 一种网络协议转换系统、网络协议转换器及其转换方法 |
-
2018
- 2018-11-14 CN CN201811353027.3A patent/CN109525661B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005136684A (ja) * | 2003-10-30 | 2005-05-26 | Nippon Telegr & Teleph Corp <Ntt> | データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム |
CN1921438A (zh) * | 2006-09-15 | 2007-02-28 | 深圳市深信服电子科技有限公司 | 一种应用代理实现网间应用加速的方法 |
CN106357590A (zh) * | 2015-07-15 | 2017-01-25 | 艾默生网络能源系统北美公司 | 一种网络协议转换系统、网络协议转换器及其转换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109525661A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109525661B (zh) | 数据传输方法及装置 | |
US10778554B2 (en) | Latency measurement in resource requests | |
US11729294B2 (en) | Processing DNS queries to identify pre-processing information | |
US9912740B2 (en) | Latency measurement in resource requests | |
US9253065B2 (en) | Latency measurement in resource requests | |
US9185012B2 (en) | Latency measurement in resource requests | |
CN101989913B (zh) | 用于使局域网中的网络设备获取业务内容的方法及装置 | |
CN110300050A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN111294399B (zh) | 一种数据传输方法和装置 | |
CN111917900B (zh) | 一种域名代理的请求处理方法及装置 | |
JP2006501578A5 (zh) | ||
CN104363291A (zh) | 一种网络通信中间件实现方法 | |
CN110769009B (zh) | 用户身份认证方法及系统 | |
CN109327435B (zh) | 媒体资源获取方法、装置及网关设备 | |
CN102111437A (zh) | 一种基于soap扩展的web服务传输压缩方法 | |
CN112073545A (zh) | 使用dns来传送服务器设备的mp-tcp能力 | |
CN102055774B (zh) | 基于包处理的http服务器及其数据处理方法 | |
CN110888329A (zh) | 设备厂家开放式接入的智能家居平台及其数据处理方法 | |
CN118158299A (zh) | 一种数据转换方法、装置、设备及介质 | |
US8301781B1 (en) | Methods and systems for browser file transfer | |
CN109005250B (zh) | 用于访问服务端的方法和装置 | |
CN101465783B (zh) | 异构家庭网络设备之间的连接方法、装置及连接网桥 | |
US8276158B2 (en) | HTTP based bounding storage space protocol | |
JP2018516478A5 (zh) | ||
CN114500487B (zh) | 一种端到端超文本传输协议转换方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |