CN111294399B - 一种数据传输方法和装置 - Google Patents
一种数据传输方法和装置 Download PDFInfo
- Publication number
- CN111294399B CN111294399B CN202010079494.2A CN202010079494A CN111294399B CN 111294399 B CN111294399 B CN 111294399B CN 202010079494 A CN202010079494 A CN 202010079494A CN 111294399 B CN111294399 B CN 111294399B
- Authority
- CN
- China
- Prior art keywords
- protocol
- connection request
- data transmission
- target
- initial
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据传输方法,所述方法包括:拦截应用层发送的基于第一传输协议的初始连接请求;将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,以及将所述映射关系记录同步至本地代理;向所述本地代理发送基于所述第一传输协议的代理连接请求,以使得所述本地代理根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并使得所述本地代理向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。本申请提供的技术方案,可以不需要对应用层协议进行解析而获取目的地址。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种数据传输方法和装置。
背景技术
随着互联网的快速发展,互联网的交互场景越来越丰富,网络传输的数据量越来越大,用户对网络传输的效率和WEB服务的响应速度要求也越来越高,传统的传输层协议,例如TCP(Transmission Control Protocol)协议已不能满足用户的需求,因此出现了QUIC(Quick UDP Internet Connection)协议等改进的传输层协议,这些改进后的传输层协议可以加快网络传输速度,降低网络延迟,但是在将传统的传输层协议转换为改进后的传输层协议时,存在各种问题。
例如,在将TCP协议转换为QUIC协议时,可以设置本地代理进行协议转换,由本地代理将接收到的TCP协议报文转换为QUIC协议报文,并向远端服务器发送转换后的QUIC协议报文。但是本地代理在向远端服务器发送QUIC协议报文时,必须先获取远端服务器的地址,这就使得本地代理在接收到应用层发送的TCP协议报文后,需要对上述报文进行解析以获取报文中携带的远端服务器的地址,针对不同的应用层协议,本地代理需要通过不同的解析代码以实现解析过程,这显然增加了系统复杂性。
鉴于此,有必要提供一种新的数据传输方法和装置以解决上述不足。
发明内容
本申请的目的在于提供一种数据传输方法和装置,可以不需要对应用层协议进行解析而获取目的地址。
为实现上述目的,本申请一方面提供一种数据传输方法,所述方法包括:拦截应用层发送的基于第一传输协议的初始连接请求;将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,以及将所述映射关系记录同步至本地代理;向所述本地代理发送基于所述第一传输协议的代理连接请求,以使得所述本地代理根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并使得所述本地代理向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。
为实现上述目的,本申请另一方面还提供一种数据传输装置,所述数据传输装置包括:应用层模块,用于发送基于第一传输协议的初始连接请求;适配层模块,用于拦截所述应用层发送的基于第一传输协议的初始连接请求,将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,并将所述映射关系记录同步至本地代理,以及向所述本地代理发送基于所述第一传输协议的代理连接请求;本地代理模块,用于根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。
为实现上述目的,本申请另一方面还提供一种数据传输装置,所述数据传输装置包括存储器和处理器,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,实现上述数据传输的方法。
由此可见,本申请提供的技术方案,通过在客户端中设置适配层和本地代理,应用层发送的基于第一传输协议的初始连接请求可以被适配层拦截,适配层可以从被拦截到的初始连接请求中获取目的地址,然后适配层将上述目的地址与目标端口进行绑定,建立目标端口与目的地址的映射关系记录,并将上述映射关系记录同步至本地代理,适配层在完成上述工作后将向本地代理发起代理连接请求,通过代理连接请求中携带的目标端口,本地代理可以在储存的映射关系记录中查询到对应的目的地址,从而使得本地代理不需要对应用层发送的数据进行解析,就可以获取到上述数据发送的目的地址,之后本地代理基于上述目的地址和第二传输协议向远端服务器发送建立连接请求。当本地代理与远端服务器建立连接后,本地代理便可以作为协议转换的中转站,将应用层发送的基于第一传输协议的数据包转换为基于第二传输协议的数据包,然后向远端服务器发送转换后的数据包。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施方式中数据传输方法的抽象模型图;
图2是本申请实施方式一中数据传输方法的流程图;
图3是本申请实施方式中数据传输方法的时序图;
图4是本发明实施方式中数据传输装置的功能模块示意图;
图5是本发明实施方式中数据传输装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
随着互联网的快速发展,互联网的交互场景越来越丰富,网络传输的数据量越来越大,用户对网络传输的效率和WEB服务的响应速度要求也越来越高,传统的传输层协议,例如TCP协议已不能满足用户的需求,因此出现了QUIC协议等改进的传输层协议,这些改进后的传输层协议可以加快网络传输速度,降低网络延迟。因此,在弱网环境或者网络不稳定的环境下,可以考虑将传统的传输层协议转换为改进后的传输层协议。以将TCP协议转换为QUIC协议为例,可以通过直接嵌入库方式,编译出QUIC协议的动态库,然后定义传输层接口,由应用层主动调用,缺陷是需要改动应用层协议代码,实现方式较为复杂。
作为一种改进的方式,用户可以设置本地代理进行TCP协议到QUIC协议的转换,例如在网络请求框架中设置本地代理为127.0.0.1,利用本地代理接收TCP协议数据,再转为QUIC协议数据进行发送。具体的,本地代理可以接收应用层发送的基于TCP协议编译的TCP协议报文,并将接收到的TCP协议报文转换为QUIC协议报文,然后将QUIC协议报文发送至远端服务器,但是本地代理在向远端服务器发送QUIC协议报文时,必须先获取远端服务器的IP地址,这就使得本地代理需要解析应用层协议,以获取数据包中携带的目的地址,针对不同的应用层协议,本地代理需要通过不同的解析代码以实现解析过程;
在另一种实现方式中,用户可以改造请求URL的host为127.0.0.1,在本地代理接收TCP协议数据,再转为QUIC协议数据进行发送,缺陷是需要修改应用层代码,增加嵌入步骤,把请求URL的host字段改为127.0.0.1,并保留原host字段,当并发URL请求时,本地代理需要多端口监听,或解析应用层协议。
在另一种实现方式中,用户还可以改造HTTP请求中的URL,按照自定义协议格式编码,在协议转换模块里解码获取服务端代理地址和HTTP请求数据,然后通过QUIC协议发送请求,但是这种实现方式需要对数据包进行编码和解码,如果应用层发起的是https请求,交互过程变为本地代理与服务端握手,改变了https的加密流程,并且上述方法改变了原有的业务逻辑,应用层不能直接请求服务端,具有很大的局限性。
因此,如何改进协议转换的过程,使得本地代理不需要解析应用层协议就可以获取远端服务器的目的地址,便成为本领域亟需解决的课题。
本申请提供的技术方案可以解决上述不足。
为便于理解本申请中涉及到的应用层协议和传输层协议的内容,下面对其进行简要介绍。
应用层协议定义了面向主机应用程序的协议,主机中的应用程序通过应用层协议利用网络完成数据的交互,应用层协议主要有FTP、TFTP、HTTP、SMTP、DHCP、DNS和SNMP等。传输层协议定义了主机应用程序之间端到端的连通性,传输层协议主要有TCP、UDP、SCTP和QUIC等。以TCP协议为例,TCP协议可以对上层网络提供接口,TCP连接的建立需要进行三次连接信息的发送/接收(即三次握手),三次握手过程中传递的报文是不包含数据的,只包含有TCP协议首部内容,当三次握手完毕,客户端与服务器建立TCP连接后,客户端与服务器之间才会正式开始传送数据。
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远端主机的IP地址,远端进程的协议端口。应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题,多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据,为了区别不同的应用程序进程和连接,应用程序与TCP/IP协议交互时可以通过套接字(Socket)接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
请参阅图1,为数据传输方法的抽象模型图。本申请中的应用层、适配层和本地代理可以理解为部署在同一台主机上的服务进程或者线程,其中,应用层与适配层可以处于同一进程中的不同线程,本地代理可以与应用层和适配层处于不同的进程,或者处于同一进程中的不同线程。
协议转换装置为该方法的抽象模块,包括适配层和本地代理,应用层通过TCP协议连接到协议转换装置,具体的,协议转换装置中的适配层一方面拦截应用层发起的TCP连接请求,一方面通过与本地代理建立新的TCP连接,建立应用层到协议转换装置的第一数据传输通道。协议转换装置通过QUIC协议连接到远端服务器,具体的,协议转换装置中的本地代理向远端服务器发起QUIC连接请求,建立协议转换装置到远端服务器的第二数据传输通道。
当协议转换装置接收到应用层通过第一数据传输通道发送的TCP协议报文后,协议转换装置中的本地代理可以将其转换为QUIC协议报文,并将转换后的QUIC协议报文通过第二数据传输通道发送至远端服务器;当协议转换装置接收到远端服务器通过第二数据传输通道发送的QUIC协议报文后,可以将其转换为TCP协议报文,并将转换后的TCP协议报文通过第一数据传输通道发送至应用层。
当应用层与协议转换装置建立TCP连接后,应用层发送的数据,不需要经过适配层,而是直接导流到本地代理的前端,本地代理采用QUIC协议与远端服务器进行数据传输,在应用层和远端服务器之间起到流量中转站的作用,实现本地代理前端进行TCP协议报文收发,后端进行QUIC协议报文收发,从而使得本地代理不需要解析应用层协议,就可以实现数据的双向透明传输。
需要特别指出的是,在上述抽象模型图中,本地代理的前端是基于TCP协议模型进行介绍的,其同样适用于IPv4和IPv6,以及UDP协议;本地代理的后端是基于QUIC协议模型进行介绍的,其同样适用于UDP协议,或其它私有定制协议。
请一并参阅图2和图3,图2为本申请实施方式一中数据传输方法的流程图,图3为本申请实施方式中数据传输方法的时序图。
S101:拦截应用层发送的基于第一传输协议的初始连接请求。
在一个实施方式中,适配层可以通过内存函数地址替换,将第一传输协议(例如TCP协议)对应的原生Connect函数替换为自定义Connect函数,这样当应用层基于第一传输协议发起初始连接请求,请求与远端服务器建立通信连接时,适配层便可以拦截应用层发起的上述初始连接请求。
由于动态库在加载到内存中后,系统会重新为动态库中的函数分配地址,因此在一种可实现的实施方式中,在拦截应用层发送的基于第一传输协议的初始连接请求之前,适配层可以在已加载到内存中的各个动态库中查询目标动态库,上述目标动态库可以为第一传输协议提供函数或者资源,以实现数据的传输,适配层查询目标动态库可以通过设置系统白名单的方式实现。
当适配层查询到目标动态库后,适配层可以在目标动态库符号中查找初始connect函数的符号地址,并将初始connect函数的入口地址替换为目标connect函数的入口地址,这样当代码访问初始connect函数的入口地址时,便可以跳转到目标connect函数的入口地址,目标动态库中的初始connect函数便被替换为适配层的目标connect函数,应用层发起的上述初始连接请求实际上是调用的便是目标connect函数,适配层便可以实现拦截应用层发起的上述初始连接请求的目的。
S102:将所述初始连接请求中携带的目的地址绑定至目的端口,并建立所述目标端口与所述目的地址的映射关系记录,以及将所述映射关系记录同步至本地代理。
在一个实施方式中,当适配层拦截到应用层发起的初始连接请求后,适配层可以对上述初始连接请求的头部信息进行解析,以获取到初始连接请求中携带的目的地址,然后调用bind函数,由系统为适配层分配新的本地端口(即目标端口)。当适配层获取到上述目标端口后,可以将上述目标端口与目的地址进行绑定,并建立目标端口与目的地址的映射关系记录,通过上述映射关系记录,目标端口与目的地址建立唯一对应关系,通过查询目标端口便可以获取到对应的目的地址。
适配层建立目标端口与目的地址的映射关系记录后,可以将上述映射关系记录同步至本地代理。如果适配层与本地代理处于同一进程中的不同线程,则可以通过直接调用函数的方式,将上述映射关系记录同步至本地代理;如果适配层与本地代理处于不同的进程,则可以通过进程间通信的方式,将上述映射关系记录同步至本地代理。本地代理获取到上述映射关系记录后,可以将其进行储存。
S103:向所述本地代理发送基于所述第一传输协议的代理连接请求,以使得所述本地代理根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并使得所述本地代理向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。
在一个实施方式中,当适配层将映射关系记录同步至本地代理后,适配层可以基于第一传输协议向本地代理发送代理连接请求,上述代理连接请求中携带有系统为适配层分配的目标端口,当本地代理接收到适配层发送的代理连接请求后,可以解析上述代理连接请求的头部信息,以获取对端端口(即目标端口),然后本地代理可以依据目标端口在储存的所有映射关系记录中查询到对应的目的地址。这样,本地代理不需要进行协议解析,便可以获取到应用层发送的初始连接请求中的目的地址。
当本地代理获取到初始连接请求中的目的地址后,便可以基于第二传输协议(例如QUIC协议),向目的地址指向的目标服务器发送转换连接请求,当目标服务器对上述转换连接请求进行确认后,可以向本地代理反馈确认信息,这样本地代理便可以基于第二传输协议与目标服务器建立通信连接。当本地代理接收到应用层发送的数据报文后,可以基于第二传输协议,将其转换为符合第二传输协议规范的新的数据报文,并将上述新的数据报文发送至远端服务器。
在一个实施方式中,向本地代理发送基于第一传输协议的代理连接请求,可以通过以下步骤实现:
首先,获取本地代理建立的监听端口,并根据监听端口和回送地址生成目标socket地址;
然后,基于目标socket地址和初始connect函数,向本地代理发送代理连接请求。
在实际应用中,当适配层在已加载到内存中的各个动态库中查询目标动态库时,本地代理可以同时创建本地监听服务以建立监听端口,这样当适配层需要向本地代理发送代理连接请求时,适配层便可以通过直接调用函数或者进程间通信的方式,从本地代理处获取到上述监听端口,然后适配层可以将监听端口作为远端进程的协议端口,将127.0.0.1(即回送地址)作为远端主机的IP地址,组装目标socket地址,并以目标端口作为本地进程的协议端口,构建套接字。
由于适配层的目标connect函数用于拦截应用层发起的初始连接请求,如果适配层发起代理连接请求时继续调用目标connect函数,适配层便会进入死循环,因此当适配层发起代理连接请求时需要调用初始connect函数,以使得代理连接请求可以进行到第一传输协议的协议栈底层。因此,当适配层完成套接字的构建后,适配层可以基于目标socket地址和初始connect函数,向本地代理发送代理连接请求,从而在应用层与本地代理之间建立基于第一传输协议的通信连接。
需要特别指出的是,本地代理创建本地监听服务以建立监听端口,可以包括包括IPv4连接和IPv6连接,当适配层从本地代理处获取监听端口时,可以根据初始连接请求为IPv4连接或者IPv6连接,从本地代理获取监听端口。
在一个实施方式中,适配层在将初始连接请求中携带的目的地址绑定至目标端口之前,适配层还可以判断上述初始连接请求是否符合预设规则,如果符合预设规则,适配层则将初始连接请求中携带的目的地址绑定至目标端口;如果不符合预设规则,适配层则恢复初始连接请求。
在实际应用中,适配层可以根据业务需求制定过滤规则,例如,针对A域名的数据访问需要利用新的传输协议进行传输,针对B域名的数据访问不需要利用新的传输协议进行传输,那么适配层可以根据上述预设的规则,建立正则表达式,通过正则匹配对拦截到的初始连接请求进行过滤。对符合预设规则的初始连接请求,适配层可以将其携带的目的地址绑定至目标端口,并进行后继的操作;对不符合预设规则的初始连接请求,适配层可以不将上述初始连接请求引导至本地代理,而是恢复上述初始连接请求,使得应用层可以根据上述初始连接请求的原始连接逻辑,直接与上述初始连接请求中携带的目的地址指向的目标服务器建立通信连接。
在一个实施方式中,适配层可以基于代理连接请求,在应用层与本地代理之间建立第一数据传输通道,以使得应用层发送的基于第一传输协议的初始协议报文通过第一数据传输通道发送至本地代理,并使得本地代理基于第二传输协议将初始协议报文转换为目标协议报文。
适配层在向本地代理发送代理连接请求时,其调用的是目标动态库中的初始connect函数,而应用层在发送初始连接请求时,其调用的也是目标动态库中的初始connect函数,因此当适配层与本地代理建立通信连接后,适配层便在应用层与本地代理之间建立了通信连接(即第一数据传输通道),这样当应用层发送的基于第一传输协议的初始协议报文便可以不经过适配层的中转,而直接通过上述第一数据传输通道被发送至本地代理,从而实现将应用层发送的初始协议报文引导至本地代理。
当本地代理接收到应用层发送的初始协议报文后,本地代理可以基于第二传输协议将上述初始协议报文转换为目标协议报文。例如,假设第一传输协议为TCP协议,第二传输协议为QUIC协议,那么当本地代理接收到应用层发送的TCP协议报文(即初始协议报文)后,本地代理可以不对上述TCP协议报文进行解码和编码,而是根据QUIC协议规范,直接在上述TCP协议报文上增加QUIC协议首部,将其转换为QUIC协议报文(即目标协议报文)。
在一个实施方式中,本地代理可以基于转换连接请求,在本地代理与所述目标服务器之间建立第二数据传输通道,以使得本地代理通过第二数据传输通道将目标协议报文发送至目标服务器。
当本地代理向目标服务器发送基于第二传输协议的转换连接请求后,目标服务器可以对上述转换连接请求进行确认,并向本地代理反馈确认信息,这样本地代理便可以与目标服务器建立通信连接(即第二数据传输通道)。当本地代理将应用层发送的初始协议报文转换为目标协议报文后,本地代理可以通过上述第二数据传输通道将目标协议报文发送至目标服务器。例如,假设第一传输协议为TCP协议,第二传输协议为QUIC协议,那么当本地代理将应用层发送的TCP协议报文(即初始协议报文)转换为QUIC协议报文(即目标协议报文)后,本地代理便可以使用QUIC协议通过第二数据传输通道将QUIC协议报文发送至目标服务器。
需要特别指出的是,由于第一数据传输通道基于代理连接请求建立,而代理连接请求基于第一传输协议发起,因此第一数据传输通道只用于传输符合第一传输协议规范的数据报文。同样的,由于第二数据传输通道基于转换连接请求建立,而转换连接请求基于第二传输协议发起,因此第二数据传输通道只用于传输符合第二传输协议规范的数据报文。
由此可见,本地代理的前端接收应用层发送的TCP协议报文,后端向目标服务器发送QUIC协议报文,本地代理既不需要对TCP协议报文进行解析,也不需要改变应用层原有的业务逻辑,就可以实现TCP协议到QUIC协议的转换。
在一个实施方式中,当应用层与本地代理之间建立第一数据传输通道,本地代理与目标服务器之间建立第二数据传输通道之后,本地代理可以接收目标服务器通过上述第二数据传输通道反馈的初始响应报文,其中,上述初始响应报文基于第二传输协议生成,初始响应报文的报文格式符合第二传输协议规范。当本地代理接收到初始响应报文后,本地代理可以基于第一传输协议将上述初始响应报文转换为目标响应报文,并通过上述第一数据传输通道将目标响应报文发送至应用层。
由于第二数据传输通道只用于传输符合第二传输协议规范的数据报文,第一数据传输通道只用于传输符合第一传输协议规范的数据报文,因此本地代理需要将符合第二传输协议规范的初始响应报文,转换为符合第一传输协议规范的目标响应报文,才可以通过第一数据传输通道向应用层发送反馈数据。例如,假设第一数据传输通道基于TCP协议生成,第二数据传输通道基于QUIC协议生成,那么目标服务器在向本地代理反馈初始响应报文时,上述初始响应报文的报文格式符合QUIC协议的规范,本地代理不能直接通过第一数据传输通道将上述初始响应报文发送至应用层,而需要将上述初始响应报文转换为符合TCP协议规范的报文(即目标响应报文),然后才可以通过第一数据传输通道将目标响应报文发送至应用层。
需要特别指出的是,本地代理在将初始响应报文转换为目标响应报文时,不需要对初始响应报文进行解码和编码,而是根据第一传输协议规范,直接在上述初始响应报文上增加第一传输协议首部,将其转换为目标响应报文。
通过上述第一数据传输通道和第二数据传输通道,当应用层基于第一传输协议进行数据发送操作时,应用层流量被导流到本地代理,本地代理不需要对数据进行解析,而可以直接基于第二传输协议将接收到的数据透传到目标服务器,如图3中的TCP_send和QUIC_send;当本地代理接收到目标服务器基于第二传输协议反馈的数据时,本地代理同样不需要对数据进行解析,而可以直接基于第一传输协议将接收到的数据透传到应用层,如图3中的QUIC_recv和TCP_recv。
在一个实施方式中,本地代理可以根据目标服务器发送的转换关闭消息,关闭第一数据传输通道,或者,根据应用层发送的转换关闭消息,关闭第二数据传输通道,从而维护第一数据传输通道和第二数据传输通道的生命周期,实现数据在不同协议之间的传输。
当本地代理的前端接收到应用层发送的关闭第一数据传输通道的指令(即转换关闭消息)后,本地代理可以关闭后端的第二数据传输通道,如图3中的TCP_close(1)和QUIC_close(1),从而关闭应用层与目标服务器之间的协议转换通道。相应的,当本地代理的后端接收到目标服务器发送的关闭第二数据传输通道的指令后,本地代理可以关闭前端的第一数据传输通道,如图3中的QUIC_close(2)和TCP_close(2),从而关闭应用层与目标服务器之间的协议转换通道。
需要特别指出的是,当目标服务器出现故障后,目标服务器会向系统反馈故障消息,此时,本地代理可以根据上述故障消息,关闭前端的第一数据传输通道。相应的,当应用层出现故障后,应用层同样会向系统反馈故障消息,此时,本地代理可以根据上述故障消息,关闭后端的第二数据传输通道。
请参阅图4,本申请还提供一种数据传输装置,所述数据传输装置包括:
应用层模块,用于发送基于第一传输协议的初始连接请求;
适配层模块,用于拦截所述应用层发送的基于第一传输协议的初始连接请求,将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,并将所述映射关系记录同步至本地代理,以及向所述本地代理发送基于所述第一传输协议的代理连接请求;
本地代理模块,用于根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。
在一个实施方式中,所述适配层模块,还用于在已加载的各个动态库中查询目标动态库,并将所述目标动态库中的初始connect函数的入口地址替换为目标connect函数的入口地址。
在一个实施方式中,向所述本地代理发送基于所述第一传输协议的代理连接请求包括:
获取所述本地代理建立的监听端口,并根据所述监听端口和回送地址生成目标socket地址;
基于所述目标socket地址和所述初始connect函数,向所述本地代理发送代理连接请求。
在一个实施方式中,所述适配层模块,还用于判断所述初始连接请求是否符合预设规则,若符合所述预设规则,则将所述初始连接请求中携带的目的地址绑定至目标端口;若不符合所述预设规则,则恢复所述初始连接请求。
在一个实施方式中,所述应用层模块,还用于发送基于所述第一传输协议的初始协议报文;
所述适配层模块,还用于基于所述代理连接请求,在所述应用层与所述本地代理之间建立第一数据传输通道,以使得所述应用层发送的基于所述第一传输协议的初始协议报文通过所述第一数据传输通道发送至所述本地代理;
所述本地代理模块,还用于基于所述第二传输协议将所述初始协议报文转换为目标协议报文,以及基于所述转换连接请求,与所述目标服务器之间建立第二数据传输通道,以通过所述第二数据传输通道将所述目标协议报文发送至
所述目标服务器。
在一个实施方式中,所述本地代理模块,还用于接收所述目标服务器通过所述第二数据传输通道反馈的初始响应报文,其中,所述初始响应报文基于所述第二传输协议生成;以及,基于所述第一传输协议将所述初始响应报文转换为目标响应报文,并通过所述第一数据传输通道将所述目标响应报文发送至所述应用层。
在一个实施方式中,所述本地代理模块,还用于根据所述目标服务器发送的转换关闭消息,关闭所述第一数据传输通道;或者,根据所述应用层发送的转换关闭消息,关闭所述第二数据传输通道。
请参阅图5,本申请还提供一种数据传输装置,所述数据传输装置包括存储器和处理器,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,可以实现如上述的数据传输方法。具体地,在硬件层面,该数据传输装置可以包括处理器、内部总线和存储器。所述存储器可以包括内存以及非易失性存储器。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述数据传输装置的结构造成限定。例如,所述数据传输装置还可包括比图5中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如GPU(GraphicsProcessing Unit,图像处理器),或者对外通信端口等。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等。
本实施方式中,所述的处理器可以包括中央处理器(CPU)或图形处理器(GPU),当然也可以包括其他的具有逻辑处理能力的单片机、逻辑门电路、集成电路等,或其适当组合。本实施方式所述的存储器可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器等。实现的时候,该存储器也可以采用云存储器的方式实现,具体实现方式,本说明书不做限定。
需要说明的是,本说明书中的数据传输装置,具体的实现方式可以参照方法实施方式的描述,在此不作一一赘述。
由此可见,本申请提供的技术方案,通过在客户端中设置适配层和本地代理,应用层发送的基于第一传输协议的初始连接请求可以被适配层拦截,适配层可以从被拦截到的初始连接请求中获取目的地址,然后适配层将上述目的地址与目标端口进行绑定,建立目标端口与目的地址的映射关系记录,并将上述映射关系记录同步至本地代理,适配层在完成上述工作后将向本地代理发起代理连接请求,通过代理连接请求中携带的目标端口,本地代理可以在储存的映射关系记录中查询到对应的目的地址,从而使得本地代理不需要对应用层发送的数据进行解析,就可以获取到上述数据发送的目的地址,之后本地代理基于上述目的地址和第二传输协议向远端服务器发送建立连接请求。当本地代理与远端服务器建立连接后,本地代理便可以作为协议转换的中转站,将应用层发送的基于第一传输协议的数据包转换为基于第二传输协议的数据包,然后向远端服务器发送转换后的数据包。本申请提供的技术方案,不需要修改应用层协议和业务代码,就可以实现协议的转换,对于HTTPS请求,不需要改变原HTTPS的握手过程,不存在数据安全问题,并且也不需要对服务端进行修改,可直接使用初始连接请求中的目标地址,降低了协议转换的复杂性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种数据传输方法,其特征在于,所述方法应用于适配层中,所述方法包括:
拦截应用层发送的初始连接请求,其中,所述初始连接请求为所述应用层调用目标动态库中的原生函数,并基于第一传输协议生成;
将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,以及将所述映射关系记录同步至本地代理;
调用所述原生函数,以向所述本地代理发送基于所述第一传输协议的代理连接请求,并使得所述本地代理根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并使得所述本地代理向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求;
基于所述原生函数在所述应用层与所述本地代理之间建立第一数据传输通道,以使得所述应用层发送的基于所述第一传输协议的初始协议报文通过所述第一数据传输通道发送至所述本地代理。
2.根据权利要求1所述的方法,其特征在于,在拦截应用层发送的基于第一传输协议的初始连接请求之前,所述方法还包括:
在已加载的各个动态库中查询目标动态库;
将所述目标动态库中的初始connect函数的入口地址替换为目标connect函数的入口地址。
3.根据权利要求2所述的方法,其特征在于,向所述本地代理发送基于所述第一传输协议的代理连接请求包括:
获取所述本地代理建立的监听端口,并根据所述监听端口和回送地址生成目标socket地址;
基于所述目标socket地址和所述初始connect函数,向所述本地代理发送代理连接请求。
4.根据权利要求1所述的方法,其特征在于,将所述初始连接请求中携带的目的地址绑定至目标端口之前,所述方法还包括:
判断所述初始连接请求是否符合预设规则,若符合所述预设规则,则将所述初始连接请求中携带的目的地址绑定至目标端口;
若不符合所述预设规则,则恢复所述初始连接请求。
5.根据权利要求1所述的方法,其特征在于,当所述本地代理接收到所述初始协议报文后,所述方法还包括:
所述本地代理基于所述第二传输协议将所述初始协议报文转换为目标协议报文。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述转换连接请求,在所述本地代理与所述目标服务器之间建立第二数据传输通道,以使得所述本地代理通过所述第二数据传输通道将所述目标协议报文发送至所述目标服务器。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收所述目标服务器通过所述第二数据传输通道反馈的初始响应报文,其中,所述初始响应报文基于所述第二传输协议生成;
基于所述第一传输协议将所述初始响应报文转换为目标响应报文,并通过所述第一数据传输通道将所述目标响应报文发送至所述应用层。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据所述目标服务器发送的转换关闭消息,关闭所述第一数据传输通道;或者,根据所述应用层发送的转换关闭消息,关闭所述第二数据传输通道。
9.一种数据传输装置,其特征在于,所述数据传输装置包括:
应用层模块,用于发送基于第一传输协议的初始连接请求和初始协议报文,其中,所述初始连接请求通过调用目标动态库中的原生函数,并基于第一传输协议生成;
适配层模块,用于拦截所述应用层发送的所述初始连接请求,将所述初始连接请求中携带的目的地址绑定至目标端口,并建立所述目标端口与所述目的地址的映射关系记录,并将所述映射关系记录同步至本地代理,以及调用所述原生函数,以向所述本地代理发送基于所述第一传输协议的代理连接请求,并基于所述原生函数在所述应用层模块与本地代理模块之间建立第一数据传输通道,以使得所述应用层模块发送的所述初始协议报文通过所述第一数据传输通道发送至所述本地代理模块;
本地代理模块,用于根据所述代理连接请求中的所述目标端口,从所述映射关系记录中查询所述目的地址,并向所述目的地址指向的目标服务器发送基于第二传输协议的转换连接请求。
10.根据权利要求9所述的数据传输装置,其特征在于,
所述适配层模块,还用于在已加载的各个动态库中查询目标动态库,并将所述目标动态库中的初始connect函数的入口地址替换为目标connect函数的入口地址。
11.根据权利要求10所述的数据传输装置,其特征在于,向所述本地代理发送基于所述第一传输协议的代理连接请求包括:
获取所述本地代理建立的监听端口,并根据所述监听端口和回送地址生成目标socket地址;
基于所述目标socket地址和所述初始connect函数,向所述本地代理发送代理连接请求。
12.根据权利要求9所述的数据传输装置,其特征在于,
所述适配层模块,还用于判断所述初始连接请求是否符合预设规则,若符合所述预设规则,则将所述初始连接请求中携带的目的地址绑定至目标端口;若不符合所述预设规则,则恢复所述初始连接请求。
13.根据权利要求9所述的数据传输装置,其特征在于,
所述本地代理模块,还用于基于所述第二传输协议将所述初始协议报文转换为目标协议报文,以及基于所述转换连接请求,与所述目标服务器之间建立第二数据传输通道,以通过所述第二数据传输通道将所述目标协议报文发送至所述目标服务器。
14.根据权利要求13所述的数据传输装置,其特征在于,
所述本地代理模块,还用于接收所述目标服务器通过所述第二数据传输通道反馈的初始响应报文,其中,所述初始响应报文基于所述第二传输协议生成;以及,基于所述第一传输协议将所述初始响应报文转换为目标响应报文,并通过所述第一数据传输通道将所述目标响应报文发送至所述应用层。
15.一种数据传输装置,其特征在于,所述数据传输装置包括存储器和处理器,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1至8中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010079494.2A CN111294399B (zh) | 2020-02-04 | 2020-02-04 | 一种数据传输方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010079494.2A CN111294399B (zh) | 2020-02-04 | 2020-02-04 | 一种数据传输方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111294399A CN111294399A (zh) | 2020-06-16 |
CN111294399B true CN111294399B (zh) | 2023-06-23 |
Family
ID=71024385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010079494.2A Active CN111294399B (zh) | 2020-02-04 | 2020-02-04 | 一种数据传输方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111294399B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112311774B (zh) * | 2020-10-16 | 2023-05-05 | 北京金山云网络技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112702319B (zh) * | 2020-12-11 | 2023-03-24 | 杭州安恒信息技术股份有限公司 | 访问请求端口的标准化方法、装置、电子设备及存储介质 |
CN114979261B (zh) * | 2021-02-24 | 2024-06-25 | 华为技术有限公司 | 业务交互方法、终端、服务器及系统 |
CN113382062B (zh) * | 2021-06-08 | 2024-08-27 | 北京天空卫士网络安全技术有限公司 | 一种数据传输方法、装置和系统 |
CN113965577B (zh) * | 2021-08-31 | 2024-02-27 | 联通沃音乐文化有限公司 | 一种智能切换Socks5代理服务器节点的系统与方法 |
CN113569368B (zh) * | 2021-09-17 | 2022-01-11 | 支付宝(杭州)信息技术有限公司 | 基于协议的建模方法及装置 |
CN113783893A (zh) * | 2021-09-29 | 2021-12-10 | 远景智能国际私人投资有限公司 | 数据传输方法、装置及系统 |
CN114157607A (zh) * | 2021-12-06 | 2022-03-08 | 上海哔哩哔哩科技有限公司 | 媒体流传输方法和系统 |
CN114338836B (zh) * | 2022-03-15 | 2022-06-17 | 佛山智能装备技术研究院 | 一种基于后台代理的人机命令交互方法 |
CN118474213A (zh) * | 2024-06-06 | 2024-08-09 | 上海博昂电气有限公司 | 一种协议转换器及转换系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6070198A (en) * | 1995-10-19 | 2000-05-30 | Hewlett-Packard Company | Encryption with a streams-based protocol stack |
CN106844273A (zh) * | 2016-12-13 | 2017-06-13 | 硅谷数模半导体(北京)有限公司 | 访问dp辅助通道的方法及装置 |
CN108696526A (zh) * | 2018-05-23 | 2018-10-23 | 北京五八信息技术有限公司 | 网络请求响应数据的解析方法、装置、设备及存储介质 |
CN109831404A (zh) * | 2017-11-23 | 2019-05-31 | 惠州臻享云科技有限公司 | 一种兼容多终端的即时通讯系统及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277424B1 (en) * | 1998-07-21 | 2007-10-02 | Dowling Eric M | Method and apparatus for co-socket telephony |
US7882247B2 (en) * | 1999-06-11 | 2011-02-01 | Netmotion Wireless, Inc. | Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments |
JP4435082B2 (ja) * | 2005-12-15 | 2010-03-17 | 株式会社東芝 | 通信装置、通信方法および通信プログラム |
CN103997787B (zh) * | 2013-02-18 | 2017-11-03 | 中国移动通信集团浙江有限公司 | 一种内外部信令接口协议流程关联方法及系统 |
CN103338488B (zh) * | 2013-06-21 | 2016-03-09 | 华为技术有限公司 | 网络切换方法、终端、控制器、网关及系统 |
CN105227687B (zh) * | 2014-06-20 | 2019-05-03 | 中国电信股份有限公司 | IPv4用户访问IPv6资源的通信方法与系统 |
CN106657180B (zh) * | 2015-10-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 用于云服务的信息传输方法、装置、终端设备及系统 |
US10841222B2 (en) * | 2016-07-05 | 2020-11-17 | Ologn Technologies Ag | Systems, apparatuses and methods for network packet management |
CN107948232B (zh) * | 2016-10-13 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 基于Hook API的代理实现方法、数据传输方法、装置及系统 |
CN107295573B (zh) * | 2017-07-12 | 2019-08-02 | 网宿科技股份有限公司 | 一种业务应用流量的引导方法和系统 |
CN108243192B (zh) * | 2018-01-11 | 2020-12-15 | 世纪龙信息网络有限责任公司 | 应用访问网络的识别方法和系统 |
-
2020
- 2020-02-04 CN CN202010079494.2A patent/CN111294399B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6070198A (en) * | 1995-10-19 | 2000-05-30 | Hewlett-Packard Company | Encryption with a streams-based protocol stack |
CN106844273A (zh) * | 2016-12-13 | 2017-06-13 | 硅谷数模半导体(北京)有限公司 | 访问dp辅助通道的方法及装置 |
CN109831404A (zh) * | 2017-11-23 | 2019-05-31 | 惠州臻享云科技有限公司 | 一种兼容多终端的即时通讯系统及方法 |
CN108696526A (zh) * | 2018-05-23 | 2018-10-23 | 北京五八信息技术有限公司 | 网络请求响应数据的解析方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
"23060-8a0_CRs_Implemented".3GPP tsg_sa\WG2_Arch.2010,全文. * |
"23228-d40_repl_1138R2_CRs_Implemented".3GPP tsg_sa\WG2_Arch.2015,全文. * |
J. Palet Martinez.Additional Deployment Guidelines for NAT64/464XLAT in Operator and Enterprise Networks (RFC8683).Additional Deployment Guidelines for NAT64/464XLAT in Operator and Enterprise Networks (RFC8683).2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111294399A (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111294399B (zh) | 一种数据传输方法和装置 | |
US10250646B2 (en) | Method and device for establishing channel | |
TW567699B (en) | Communication protocols, method, and apparatus operable through network address translation (NAT) type devices | |
EP3958534B1 (en) | Method and apparatus for establishing end-to-end network connection, and network system | |
EP2536092A1 (en) | Method and device for port mapping, and communications system | |
EP1792408A2 (en) | System and method for network-assisted connection in a wireless environment | |
RU2008115139A (ru) | Оборудование, система и способ связи между клиентом и серверной стороной | |
WO2023272874A1 (zh) | 实时通信rtc连接方法、服务器及存储介质 | |
US10367894B2 (en) | Information processing apparatus, method for controlling the same, non-transitory computer-readable storage medium, and information processing system | |
EP4175221A1 (en) | Method for accessing network, media gateway, electronic device, and storage medium | |
CN111711705B (zh) | 基于代理节点作双向nat实现网络连接的方法和装置 | |
WO2024152479A1 (zh) | 一种基于web的分布式部署云渲染方法和系统 | |
JP7401564B2 (ja) | 通信方法及び関連デバイス | |
US9413590B2 (en) | Method for management of a secured transfer session through an address translation device, corresponding server and computer program | |
US7023847B2 (en) | Network address translation based mobility management | |
CN108234511B (zh) | 多媒体数据传输的方法、系统、设备、存储介质及网关 | |
CN114518969A (zh) | 进程间通信方法、系统、存储介质和计算机设备 | |
WO2013120325A1 (zh) | 浏览器与浏览器直通的方法、装置和通信系统 | |
CN112968965A (zh) | Nfv网络节点的元数据服务方法、服务器及存储介质 | |
JP2002141954A (ja) | 通信中継装置、および通信中継方法、並びにプログラム記憶媒体 | |
CN110771117B (zh) | 一种采用面向id的网络的会话层通信 | |
WO2013185696A2 (zh) | 一种数据处理的方法与设备 | |
Cui et al. | Research and Implementation of WEBRTC Signaling via websocket-based for real-time multimedia communications | |
JP2017010388A (ja) | Httpサーバとその制御方法、画像形成装置およびプログラム | |
WO2017161866A1 (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 |