CN114143386A - 一种基于quic协议的通信方法、系统、设备及存储介质 - Google Patents
一种基于quic协议的通信方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN114143386A CN114143386A CN202111391213.8A CN202111391213A CN114143386A CN 114143386 A CN114143386 A CN 114143386A CN 202111391213 A CN202111391213 A CN 202111391213A CN 114143386 A CN114143386 A CN 114143386A
- Authority
- CN
- China
- Prior art keywords
- quic
- client
- data
- protocol
- request
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
-
- 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/164—Adaptation or special uses of UDP protocol
-
- 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/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及通信技术领域,尤其是涉及一种基于QUIC协议的通信方法、系统、设备及存储介质,其方法包括自定义QUIC传输层应用协议;基于QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;当监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,得到请求数据包;基于请求数据包,获取反馈信息并返回给客户端。解决了现有客户端直连服务器端通信方法的对接效率极低的问题。本申请具有提高客户端和服务器端通信时的对接效率的效果。
Description
技术领域
本申请涉及通信技术领域,尤其是涉及一种基于QUIC协议的通信方法、系统、设备及存储介质。
背景技术
目前,在游戏项目开发的过程中,为了实现客户端与服务器端的通信连接,通常是将待连接的服务器端的IP地址写到游戏程序中,服务器端基于接口启动服务后,客户端在运行游戏程序时能直接连接待连接的服务器端。
然而,客户端直连服务器端,使得客户端和服务器端之间的所有交互数据包均没有被跟踪与记录,交互过程中无法快速确定出错责任方,客户端和服务器端之间的对接效率极低,不利于游戏业务的开发与调试。
针对上述中的相关技术,发明人认为现有的客户端直连服务器端的通信方法存在有对接效率极低的缺陷。
发明内容
为了提高客户端和服务器端通信时的对接效率,本申请提供了一种基于QUIC协议的通信方法、系统、设备及存储介质。
第一方面,本申请提供一种基于QUIC协议的通信方法,具有提高客户端和服务器端通信时的对接效率的特点。
本申请是通过以下技术方案得以实现的:
一种基于QUIC协议的通信方法,包括以下步骤:
自定义QUIC传输层应用协议;
基于所述QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
当监听到所述客户端的连接请求后,拦截所述客户端的连接请求并进行解析,得到请求数据包;
基于所述请求数据包,获取反馈信息并返回给所述客户端。
通过采用上述技术方案,自定义QUIC传输层应用协议,并基于该QUIC传输层应用协议,与服务器端建立连接,监听客户端的连接请求,并在监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,以得到请求数据包,以代理客户端的连接请求,并基于解析得到的请求数据包,获取反馈信息返回给客户端,实现代理客户端的业务请求的目的;同时,基于自定义QUIC传输层应用协议,拦截客户端的连接请求并进行解析,实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能,提供了更便捷、高效、易用的功能,提高了游戏项目的开发效率,以及保证了游戏运行时的数据传输效率。
本申请在一较佳示例中可以进一步配置为:解析所述客户端的连接请求的步骤包括:
所述QUIC传输层应用协议中预设的数据帧中设置有用于标识客户端连接请求类型的标识位,解析所述连接请求,获得标识位;
基于所述标识位,获得对应的接口描述信息,并根据所述接口描述信息,识别所述客户端连接请求的类型。
通过采用上述技术方案,QUIC传输层应用协议预设有带用于标识客户端连接请求类型的标识位的数据帧,基于标识位,获得对应的接口描述信息,包括接口类型、处理指令、输入参数数据类型和返回数据类型等,并根据接口描述信息,识别客户端连接请求的类型,再进行相应的数据包处理,解析客户端的连接请求,得到请求数据包,实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能。
本申请在一较佳示例中可以进一步配置为:所述数据帧还设置有用于通讯数据包存根使用的流标识;
基于所述流标识,确定所述数据帧具体是属于哪个通道流,并在该通道流中进行数据传输。
通过采用上述技术方案,基于数据帧的流标识,创建一个“虚拟的数据通道”,即通道流,以使通讯双方能识别数据帧具体是属于哪个通道流,进而通过这个通道进行数据传输,以及大批量数据的分块传输,解决了在一批量比较大的数据的应用场景下无法一次性完成数据传输的问题,适用于大批量数据分块传输的应用场景。
本申请在一较佳示例中可以进一步配置为:基于所述请求数据包,获取反馈信息并返回给所述客户端的步骤包括:
对指定的请求数据包的内容进行修改;
获取所述服务器端的所有业务接口信息;
根据修改的所述请求数据包和获取的所述所有业务接口信息,将修改的所述请求数据包转发至所述服务器端,并监听所述服务器端的反馈信息;
当获得所述服务器端的反馈信息时,将所述反馈信息转发至所述客户端。
通过采用上述技术方案,基于请求数据包,对符合预设情景的请求数据包的内容进行修改,再按照获取的所有业务接口信息,将修改的请求数据包转发至服务器端,监听服务器端的反馈信息,并在获得服务器端的反馈信息时,使反馈信息转发至客户端,即通过模拟客户端特定的不易触发以及需要定向调试的场景数据,发送到服务器端,以便调试服务器端在相应场景下的处理逻辑以及服务器端返回数据至客户端后的客户端处理逻辑,提高了游戏开发和调试的效率。
本申请在一较佳示例中可以进一步配置为:基于所述请求数据包,获取反馈信息并返回给所述客户端的步骤还包括:
根据指定的请求数据包输出模拟的反馈信息;将模拟的所述反馈信息转发至所述客户端。
通过采用上述技术方案,基于请求数据包,为符合预设情景的请求数据包匹配模拟的反馈信息,并使模拟的反馈信息转发至客户端,以解除对服务器端的接口的依赖,防止出现因服务器端只是定义了接口,但还没有实现而影响客户端开发进度的情况,方便客户端的开发与调试,实现了脱离对应端进行单独开发调试的目的。
本申请在一较佳示例中可以进一步配置为:通信过程中,基于所述QUIC传输层应用协议,使用quic流进行UDP数据传输。
通过采用上述技术方案,基于QUIC传输层应用协议,使用quic流进行UDP数据传输,以使得通信时数据传输的效率更快。
本申请在一较佳示例中可以进一步配置为:所述通信过程中,基于所述QUIC传输层应用协议,使用quic流进行UDP数据传输的步骤包括:
判断当前的quic流池里是否有未被使用的quic流;
当存在未被使用的quic流时,则使用该quic流进行UDP数据传输。
通过采用上述技术方案,使用quic流前,先判断当前的quic流池里是否有未被使用的quic流,若有,则使用该quic流进行UDP数据传输,以均衡quic流池里的quic流的使用效率,提高quic流的利用率。
本申请在一较佳示例中可以进一步配置为:还包括以下步骤:
当没有未被使用的quic流时,则判断当前的所述quic流池的容量是否达到上限值;
若所述quic流池的容量未达到上限值时,则在所述quic流池中新创建一个quic流用于UDP数据传输。
通过采用上述技术方案,在当前的quic流池里没有未被使用的quic流且容量未达到上限值时,在quic流池中新创建一个quic流用于UDP数据传输,以提高通信时的数据传输效率。
本申请在一较佳示例中可以进一步配置为:还包括以下步骤:
若所述quic流池的容量达到上限值时,则获取当前的所述quic流池里的被占用次数最少的quic流进行UDP数据传输。
通过采用上述技术方案,在当前的quic流池里没有未被使用的quic流且容量已经达到上限值时,获取当前的quic流池里的被占用次数最少的quic流进行UDP数据传输,以减少数据传输时的排队等待时间,进一步改善了通信时的数据传输效率。
第二方面,本申请提供一种基于QUIC协议的通信系统,具有提高客户端和服务器端通信时的对接效率的特点。
本申请是通过以下技术方案得以实现的:
一种基于QUIC协议的通信系统,包括:
配置模块,用于自定义QUIC传输层应用协议;
监听模块,用于基于所述QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
解析模块,用于在监听到所述客户端的连接请求后,拦截所述客户端的连接请求并进行解析,得到请求数据包;
反馈模块,用于基于所述请求数据包,获取反馈信息并返回给所述客户端。
第三方面,本申请提供一种基于QUIC协议的通信系统,具有提高客户端和服务器端通信时的对接效率的特点。
本申请是通过以下技术方案得以实现的:
一种基于QUIC协议的通信系统,包括服务器端和客户端,所述服务器端和所述客户端之间设置有代理中间件;
服务器端设有携带所有业务接口信息的业务信息接口;
代理中间件,用于代理所有的客户端的请求,记录所有客户端与服务器端之间的所有交互数据,并在其数据窗口展示记录的交互数据。
第四方面,本申请提供一种设备,具有提高客户端和服务器端通信时的对接效率的特点。
本申请是通过以下技术方案得以实现的:
一种设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种基于QUIC协议的通信方法的步骤。
第五方面,本申请提供一种存储介质,具有提高客户端和服务器端通信时的对接效率的特点。
本申请是通过以下技术方案得以实现的:
一种存储介质,存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于QUIC协议的通信方法的步骤。
综上所述,本申请包括以下至少一种有益技术效果:
1、自定义QUIC传输层应用协议,拦截客户端的连接请求并进行解析,实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能,提供了更便捷、高效、易用的功能,同时,代理客户端的业务请求,以提高游戏项目的开发效率,保证了游戏运行时的数据传输效率;
2、基于QUIC传输层应用协议预设的标识位,获得对应的接口描述信息,并根据接口描述信息,识别客户端连接请求的类型,再进行相应的数据包处理,解析客户端的连接请求,得到请求数据包,实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能;
3、基于数据帧的流标识,创建通道流,以使通讯双方能识别数据帧具体是属于哪个通道流,进而通过这个通道进行数据传输,以及大批量数据的分块传输,解决了在一批量比较大的数据的应用场景下无法一次性完成数据传输的问题,适用于大批量数据分块传输的应用场景;
4、基于请求数据包,对符合预设情景的请求数据包的内容进行修改,再按照获取的所有业务接口信息,将修改的请求数据包转发至服务器端,监听服务器端的反馈信息,并在获得服务器端的反馈信息时,使反馈信息转发至客户端,即通过模拟客户端特定的不易触发以及需要定向调试的场景数据,发送到服务器端,以便调试服务器端在相应场景下的处理逻辑以及服务器端返回数据至客户端后的客户端处理逻辑,更能满足游戏业务场景的需要;
5、基于请求数据包,为符合预设情景的请求数据包匹配模拟的反馈信息,并使模拟的反馈信息转发至客户端,以解除对服务器端的接口的依赖,防止出现因服务器端只是定义了接口,但还没有实现而影响客户端开发进度的情况,方便客户端的开发与调试,实现了脱离对应端进行单独开发调试的目的;
6、基于QUIC传输层应用协议,使用quic流进行UDP数据传输,以使得通信时数据传输的效率更快;
7、使用quic流前,先判断当前的quic流池里是否有未被使用的quic流,若有,则使用该quic流进行UDP数据传输,以均衡quic流池里的quic流的使用效率,提高quic流的利用率;
8、在当前的quic流池里没有未被使用的quic流且容量未达到上限值时,在quic流池中新创建一个quic流用于UDP数据传输,以提高通信时的数据传输效率;
9、在当前的quic流池里没有未被使用的quic流且容量已经达到上限值时,获取当前的quic流池里的被占用次数最少的quic流进行UDP数据传输,以减少数据传输时的排队等待时间,进一步改善了通信时的数据传输效率。
附图说明
图1是本申请其中一实施例一种基于QUIC协议的通信方法的流程图。
图2是基于QUIC协议的代理中间件、服务器端和客户端之间的交互图。
图3是QUIC协议中使用quic流进行UDP数据传输的流程图。
图4是本申请其中一实施例一种基于QUIC协议的通信系统的结构框图。
图5是本申请其中一实施例一种基于QUIC协议的通信系统的示意图。
具体实施方式
本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
参照图1,本申请实施例提供一种基于QUIC协议的通信方法,所述方法的主要步骤描述如下。
S1:自定义QUIC传输层应用协议;
S2:基于QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
S3:当监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,得到请求数据包;
S4:基于请求数据包,获取反馈信息并返回给客户端。
其中,S4:基于请求数据包,获取反馈信息并返回给客户端的步骤包括:
S41:基于请求数据包和接收到的修改指令,对请求数据包的内容进行修改;
获取服务器端的所有业务接口信息;
根据修改的请求数据包和获取的所有业务接口信息,将修改的请求数据包转发至服务器端,并监听服务器端的反馈信息;
当获得服务器端的反馈信息时,使反馈信息转发至客户端。
进一步地,S4:基于请求数据包,获取反馈信息并返回给客户端的步骤还包括:
S42:基于请求数据包和接收到的模拟指令,为请求数据包匹配模拟的反馈信息,并输出模拟的反馈信息;
使模拟的反馈信息转发至客户端。
进一步地,S3:解析客户端的连接请求时,包括以下步骤:
S31:基于QUIC传输层应用协议预设数据帧中的标识位,解析客户端的连接请求,获得标识位;再基于该标识位获得对应的接口描述信息,并根据接口描述信息,识别客户端连接请求的类型。
其中,QUIC传输层应用协议预设有带用于标识客户端连接请求类型的标识位的数据帧。
进一步地,数据帧还设置有流标识,基于流标识,确定数据帧具体是属于哪个通道流,并在该通道流中进行数据传输,以及进行大批量数据的分块传输。
具体地,针对游戏项目,本实施例中,自定义的QUIC传输层应用协议支持多种(多会话)子协议、针对指令请求、压缩处理等功能。
基于QUIC传输层应用协议,规定每次发送的数据为数据帧,数据帧包括数据帧头、数据帧元数据和数据帧体三个部分。
数据帧头包括数据帧长度、用于通讯数据包存根使用的流标识、用于识别数据交互中的通讯协议的会话标识和用于识别数据帧的通讯类型,以做不同操作处理的帧类型。数据帧元数据包括键值对形式数据,其格式可由使用者自定义,如采用K-V结构形式的键值对。数据帧体则由帧类型确定。
每个数据帧都有一个固定的数据帧头格式,每个数据帧头包含4个字节帧长度、2个字节帧类型+标识位、一个字节的会话标识和4个字节的流标识,目前设计的数据帧的帧类型有CREATE_SESSION、ACCEPT_SESSION、Fire_And_Forget、Request_Response、Request_Stream、payload等18种。每种数据帧都拥有固定格式的数据帧头,但不同类型的数据帧有不同的数据帧体。比如,若帧类型均为业务请求接口类型,则对应的数据帧的数据帧体中都包含了相应的指令字段,而其他数据帧类型是没有该指令字段的。
其中,设置流标识,在代理中间件接收到如FireAndForget、RequestResponse、RequestStream等数据帧的请求时,会通过创建一个“虚拟的数据通道”,即通道流,并通过设置流标识使通讯双方能识别数据帧具体是属于哪个通道流的。比如,发送一个RequestStream请求,对端则返回一个数据流。该数据流为发送该请求后建立的一个“虚拟的数据通道”,对端会往这个通道源源不断的传输数据给请求者。特别地,在传输一批量比较大的数据的应用场景下,因无法一次性完成传输,此时服务器端基于流标识,可以将数据分块,在每次传输时只传一小块数据,解决了在一批量比较大的数据的应用场景下无法一次性完成数据传输的问题,适用于大批量数据分块传输的应用场景。
此外,位于数据帧上的标识位也起到关键作用,标识位是用于协议内部的针对预设业务场景设计的一个占16位的字段,以用于标识客户端连接请求类型,进而对数据包进行顺序保证、传输压缩处理等相应操作。比如,当接收到一个压缩帧,则代理中间件可以通过对应的标识位去辨别这个压缩帧的数据帧体是否是压缩的,如果是压缩的,则采取先将该数据帧体解压后,再进行解码成强类型对象,然后再传给应用端,包括客户端或服务器端使用。
又如,标识位在本方案的QUIC传输层应用协议中还可以有以下作用:
(1)如在FireAndForget、RequestResponse、RequestStream和Payload数据帧中使用标识位中的第12位来标记用户数据是否是压缩过的,包括第12位为1则表示数据是压缩过的,第12位为0则表示数据未压缩。
(2)如在FireAndForget、RequestResponse、RequestStream三个数据帧中,使用标识位中的第13位来标记当前数据帧是否是通过有顺序保证的会话发送过来的。
(3)如在Payload数据帧中使用标识位中的第10位作为流结束标识,使用标识位中的第11位作为是否包含用户数据标识等。
由于数据帧中加入了关键的标识位,因此,在代理中间件监听到客户端的连接请求时,主动拦截客户端的连接请求,并基于启动时加载的服务器端的所有接口描述,包括接口类型、处理指令、输入参数数据类型和返回数据类型等,对客户端发送的数据帧进行解析,基于标识位,获得对应的接口描述信息,并根据接口描述信息,从而识别分辨出客户端连接请求的类型,再进行相应的数据包处理,在获得接口的输入和输出类型的情况下,将二进制数据解析成相应的类型对象,以解析客户端的连接请求,得到请求数据包,实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能,以代理客户端的业务请求;同时,打破了传统的QUIC传输层应用协议基于传输数据的目的,自定义实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能,提供了更便捷、高效、易用的功能,提高了游戏项目的开发效率,以及保证了游戏运行时的数据传输效率。
具体地,参照图2,本实施例在服务器端和客户端之间引入代理中间件,以使用代理中间件代理所有的客户端请求,记录所有客户端与服务器端之间的所有交互数据,并在其数据窗口展示记录的交互数据。
服务器端提供一个带有所有业务接口信息的业务信息接口和一个开发业务接口,该业务信息接口包含接口类型、名称、输入参数、返回值等业务接口信息。
代理中间件的数据窗口还设置有输入框和“启动代理”按钮。通过在代理中间件的数据窗口的输入框中输入服务器端地址+端口号,再点击代理中间件的数据窗口的“启动代理”按钮,与服务器端建立基于QUIC的连接。
与服务器端建立连接后,代理中间件调用服务器端的业务信息接口,以获取服务器端的所有业务接口信息,并记录和保存服务器端的所有业务接口信息。
待代理中间件获得所有业务接口信息后,启动一个监听服务,监听客户端的连接请求。
当代理中间件监听到客户端的连接请求后,主动拦截客户端发起的业务接口请求,并解析得到请求数据包。
基于请求数据包和接收到的修改指令,代理中间件根据已保存的服务器端的业务接口信息,对指定的请求数据包的内容进行修改,并将修改的客户端的请求数据包转发到服务器端,等待服务器端的反馈信息。
当代理中间件接收到服务器端的反馈信息后,将该反馈信息转发给客户端,以完成客户端的业务接口请求工作。
或者,基于请求数据包和接收到的模拟指令,代理中间件直接匹配模拟的反馈信息输出,并使模拟的反馈信息转发至客户端,以完成客户端的业务接口请求工作。
具体地,在接收到客户端的连接请求后,代理中间件获取对应的数据帧的数据帧体信息;再基于获取的数据帧体信息,识别该连接请求所在的协议和指令信息;再基于识别的连接请求所在的协议和指令信息,在预设的代理列表里进行逐一比对。
当在代理列表里找到相同的协议和指令信息时,则代理中间件会接收到一个要求修改或者要求模拟的指令,并对应进行数据包的内容修改转发至服务器端或直接模拟反馈信息返回客户端的操作。
当接收到修改指令时,则对该数据包的内容进行预设的处理,预设的处理包括替换、添加关键的参数等,以修改数据包内容,再转发至服务器端。一般用于不修改客户端/服务器端的代码下的调错和调试场景,且主要通过模拟客户端特定的不易触发以及需要定向调试的场景数据,发送到服务器端,以便调试服务器端在相应场景下的处理逻辑以及服务器端返回数据至客户端后的客户端处理逻辑。
例如,在监听到客户端的连接请求后,基于启动时获取并在内存里保存的服务器端的业务接口信息,即接口描述,其包含接口类型、处理指令、输入参数数据类型和返回数据类型等等,代理中间件接收到该客户端连接请求的数据帧,首先会从该数据帧的数据帧头提取帧类型。
如果帧类型为业务接口请求,则提取该请求的指令字段,再根据指令字段找到相应的接口描述的输入参数类型信息,该输入参数类型信息包括类名、成员名称以及成员类型等,并动态生成结构一致的类,然后再利用编解码器,如protocolbuf,将二进制数据解码成具体的类对象,最后基于该类对象,根据预设的拦截处理规则修改类对象成员值后,将类对象编码成二进制并转发到服务器端。
其中,预设的拦截处理规则基于配置文件,比如一个指令为1,参数为LoginModel的对象,该对象内有一个Account字段的请求,规定无论传入的对象Account字段值是多少,都将Account值设置为“admin”,后转发到服务器端,即代理中间件在启动代理时,即写好相应的基于xml的针对指令1,原参数名和映射的转发值的含映射关系的拦截处理规则。
又例如,当需要在攻击指令接口添加绑定固定的玩家信息时,通过代理修改数据包中的玩家信息的值,则客户端可以直接请求攻击指令接口,无需先调用登录认证接口,充分满足了游戏业务场景的需要。
而当接收到模拟指令时,代理中间件监听到客户端的连接请求后,直接返回模拟的反馈信息,无需转发服务器端,以解除对服务器端的接口的依赖,防止出现因服务器端只是定义了接口,但还没有实现而影响客户端开发进度的情况,方便客户端的开发与调试。且模拟的反馈信息是按照游戏业务预期配置的模拟数据,通过直接在配置文件里针对指定的指令写死一些假数据,当代理中间件接收到客户端的连接请求时,则直接返回假数据给客户端,无需经过服务器端处理。例如,需要开发一个攻击指令接口,正常情况服务器端会返回该指令生效的数据,即返回布尔值true,此时,模拟的反馈信息为一个true值。由于在常规的游戏开发流程的客户端与服务器端调试过程中,必须双方人员都在场沟通调试,而使用代理中间件返回模拟的反馈信息时,客户端或服务器端都可以脱离对方的人员,单独开发,实现脱离对应端进行开发调试的目的。
客户端与代理中间件建立连接,并且所有的请求数据都经过代理中间件代理,再转发至服务器端。
而现有的游戏场景中使用客户端直连服务器端的常规方式,由于游戏中一般有登录认证的过程,当需要调试玩家攻击接口时,必须先调用登录认证接口,在通过了游戏验证后,才能进行玩家攻击接口的调试,调试流程会相对复杂,对游戏业务的开发与调试不够友好;而本实施例中,采用代理中间件的方式,可以把登录的过程通过代理中间件模拟,在调试过程中直接调用玩家攻击接口,完成客户端和服务器端之间的调试。
在整个代理过程,不同于现有的基于TCP协议的代理工具的通信方式或基于HTTP协议的代理工具的通信方式,本方案的客户端、代理中间件和服务器端之间的所有通信都基于QUIC传输层通讯协议。
同时,代理中间件会跟踪记录所有客户端和服务器端的所有交互数据包。记录的所有交互数据包被解码成可读数据后,在代理中间件的数据窗口可视化展示,开发人员通过观察交互传输的数据,查看数据值是否符合业务预期,从而可以在接口联调时确定BUG与业务逻辑的修复,大大简化了调试流程,方便开发人员的调试。
其中,记录的交互数据包的类型需要根据具体的游戏业务场景而定。例如,在游戏中的攻击指令场景下,记录的交互数据为游戏的攻击指令序号、玩家ID和攻击指令相关数据值。
进一步地,参照图3,在通信过程中,基于QUIC传输层应用协议,使用quic流进行UDP数据传输,主要的步骤描述如下:
S51:判断当前的quic流池里是否有未被使用的quic流;
S511:当存在未被使用的quic流时,则使用该quic流进行UDP数据传输,
S512:当没有未被使用的quic流时,则进一步判断当前的quic流池的容量是否达到上限值。
S5121:若quic流池的容量达到上限值时,则获取当前的quic流池里的被占用次数最少的quic流进行UDP数据传输;
S5122:若quic流池的容量未达到上限值时,则在quic流池中新创建一个quic流用于UDP数据传输。
具体地,基于QUIC传输层应用协议的数据流称为quic流,quic流池是quic流的集合,在应用端可以设置quic流池的容量大小。quic流的底层使用UDP传输层进行数据传输。
当需要使用quic流时,首先会尝试从quic流池里取出一个未被使用的quic流。若有,则取出用于数据传输;若无,则判断当前的quic流池是否达到了预设的容量。若未达预设的容量,则从quic流池里新创建一个quic流用于数据传输;若达到预设的容量,则查找当前quic流池里被使用次数最少的quic流用于数据传输,此时,一个quic流在某些时刻是可以被同时共用的。
在每次取出quic流时,都会更新该quic流当前正在被占用的总次数,并在每次用完quic流时,即连接请求FireAndForget、RequestResponse、RequestStream等操作完成时,将quic流放回quic流池里,同时,使该quic流减少一次被占用的次数。
进一步地,本实施例中,应用端指框架或代码类库的使用者,其可以是客户端,也可以是服务器端。
故一种基于QUIC协议的通信方法通过自定义QUIC传输层应用协议,并基于该QUIC传输层应用协议,与服务器端建立连接,监听客户端的连接请求,并在监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,以得到请求数据包,以代理客户端的连接请求,并基于解析得到的请求数据包,获取反馈信息返回给客户端,实现代理客户端的业务请求的目的;同时,基于自定义QUIC传输层应用协议,拦截客户端的连接请求并进行解析,打破了传统的QUIC传输层应用协议基于传输数据的目的,自定义实现了针对游戏项目的基于QUIC传输层应用协议的解析数据功能,提供了更便捷、高效、易用的功能,提高了游戏项目的开发效率,以及保证了游戏运行时的数据传输效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
参照图4,本申请实施例还提供一种基于QUIC协议的通信系统,该一种基于QUIC协议的通信系统与上述实施例中一种基于QUIC协议的通信方法一一对应。一种基于QUIC协议的通信系统包括:
配置模块,用于自定义QUIC传输层应用协议;
监听模块,用于基于QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
解析模块,用于在监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,得到请求数据包;
反馈模块,用于基于请求数据包,获取反馈信息并返回给客户端。
进一步地,配置模块包括标识位单元和流标识单元,其中,
标识位单元,用于在QUIC传输层应用协议中预设的数据帧中设置有用于标识客户端连接请求类型的标识位,并通过解析客户端的连接请求,获得标识位,再基于标识位,获得对应的接口描述信息,并根据接口描述信息,识别客户端的连接请求的类型;
流标识单元,用于在QUIC传输层应用协议中预设的数据帧中设置有用于通讯数据包存根使用的流标识,并通过解析客户端的连接请求,获得流标识,再基于流标识,确定数据帧具体是属于哪个通道流,并在该通道流中进行数据传输,以及进行大批量数据的分块传输。
进一步地,反馈模块包括修改单元和模拟单元,其中,
修改单元,用于对指定的请求数据包的内容进行修改,基于修改的请求数据包和获取的服务器端的所有业务接口信息,将修改的请求数据包转发至服务器端,并监听服务器端的反馈信息,并在获得反馈信息时,使反馈信息转发至客户端;
模拟单元,用于对指定的请求数据包输出模拟的反馈信息,并将模拟的反馈信息转发至客户端。
进一步地,一种基于QUIC协议的通信系统还包括通信模块,其用于在通信过程中,基于QUIC传输层应用协议,使用quic流进行UDP数据传输。
进一步地,通信模块包括第一判断单元、第二判断单元和第三判断单元,其中,
第一判断单元,用于判断当前的quic流池里是否有未被使用的quic流,若存在未被使用的quic流时,则使用该quic流进行UDP数据传输;
第二判断单元,用于在当前的quic流池里没有未被使用的quic流时,判断当前的quic流池的容量是否达到上限值,若quic流池的容量未达到上限值时,则在quic流池中新创建一个quic流用于UDP数据传输;
第三判断单元,用于在quic流池的容量达到上限值时,获取当前的quic流池里的被占用次数最少的quic流进行UDP数据传输。
关于一种基于QUIC协议的通信系统的具体限定可以参见上文中对于一种基于QUIC协议的通信方法的限定,在此不再赘述。
参照图5,本申请实施例还提供一种基于QUIC协议的通信系统,该一种基于QUIC协议的通信系统包括:服务器端和客户端,以及位于服务器端和客户端之间的代理中间件,其中,
服务器端,设有携带有所有业务接口信息的业务信息接口;
代理中间件,用于代理所有的客户端的请求,记录所有客户端与服务器端之间的所有交互数据,并在其数据窗口展示记录的交互数据。
进一步地,代理中间件利用编解码器将二进制数据解码成具体的对象;基于该对象,利用json序列化方式,将对象转成json字符串;以改善交互数据的可读性。
上述一种基于QUIC协议的通信系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种设备,该设备包括计算机设备,该计算机设备可以是服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于QUIC协议的通信方法。
在一个实施例中,提供了一种存储介质,该存储介质包括计算机可读存储介质,该计算机可读存储介质包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
S1:自定义QUIC传输层应用协议;
S2:基于QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
S3:当监听到客户端的连接请求后,拦截客户端的连接请求并进行解析,得到请求数据包;
S4:基于请求数据包,获取反馈信息并返回给客户端。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
Claims (13)
1.一种基于QUIC协议的通信方法,其特征在于,包括以下步骤:
自定义QUIC传输层应用协议;
基于所述QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
当监听到所述客户端的连接请求后,拦截所述客户端的连接请求并进行解析,得到请求数据包;
基于所述请求数据包,获取反馈信息并返回给所述客户端。
2.根据权利要求1所述的一种基于QUIC协议的通信方法,其特征在于,解析所述客户端的连接请求的步骤包括:
所述QUIC传输层应用协议中预设的数据帧中设置有用于标识客户端连接请求类型的标识位,解析所述连接请求,获得标识位;
基于所述标识位,获得对应的接口描述信息,并根据所述接口描述信息,识别所述客户端连接请求的类型。
3.根据权利要求2所述的一种基于QUIC协议的通信方法,其特征在于,所述数据帧还设置有用于通讯数据包存根使用的流标识;
基于所述流标识,确定所述数据帧具体是属于哪个通道流,并在该通道流中进行数据传输。
4.根据权利要求1所述的一种基于QUIC协议的通信方法,其特征在于,基于所述请求数据包,获取反馈信息并返回给所述客户端的步骤包括:
对指定的请求数据包的内容进行修改;
获取所述服务器端的所有业务接口信息;
根据修改的所述请求数据包和获取的所述所有业务接口信息,将修改的所述请求数据包转发至所述服务器端,并监听所述服务器端的反馈信息;
当获得所述服务器端的反馈信息时,将所述反馈信息转发至所述客户端。
5.根据权利要求1所述的一种基于QUIC协议的通信方法,其特征在于,基于所述请求数据包,获取反馈信息并返回给所述客户端的步骤还包括:
根据指定的请求数据包输出模拟的反馈信息;
将模拟的所述反馈信息转发至所述客户端。
6.根据权利要求1-5任意一项所述的一种基于QUIC协议的通信方法,其特征在于,通信过程中,基于所述QUIC传输层应用协议,使用quic流进行UDP数据传输。
7.根据权利要求6所述的一种基于QUIC协议的通信方法,其特征在于,所述通信过程中,基于所述QUIC传输层应用协议,使用quic流进行UDP数据传输的步骤包括:
判断当前的quic流池里是否有未被使用的quic流;
当存在未被使用的quic流时,则使用该quic流进行UDP数据传输。
8.根据权利要求7所述的一种基于QUIC协议的通信方法,其特征在于,还包括以下步骤:
当没有未被使用的quic流时,则判断当前的所述quic流池的容量是否达到上限值;
若所述quic流池的容量未达到上限值时,则在所述quic流池中新创建一个quic流用于UDP数据传输。
9.根据权利要求8所述的一种基于QUIC协议的通信方法,其特征在于,还包括以下步骤:
若所述quic流池的容量达到上限值时,则获取当前的所述quic流池里的被占用次数最少的quic流进行UDP数据传输。
10.一种基于QUIC协议的通信系统,其特征在于,包括:
配置模块,用于自定义QUIC传输层应用协议;
监听模块,用于基于所述QUIC传输层应用协议,与服务器端建立连接,并监听客户端的连接请求;
解析模块,用于在监听到所述客户端的连接请求后,拦截所述客户端的连接请求并进行解析,得到请求数据包;
反馈模块,用于基于所述请求数据包,获取反馈信息并返回给所述客户端。
11.一种基于QUIC协议的通信系统,包括服务器端和客户端,其特征在于,所述服务器端和所述客户端之间设置有代理中间件;
服务器端设有携带所有业务接口信息的业务信息接口;
代理中间件,用于代理所有的客户端的请求,记录所有客户端与服务器端之间的所有交互数据,并在其数据窗口展示记录的交互数据。
12.一种设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现权利要求1-9任意一项所述方法的步骤。
13.一种存储介质,其特征在于,存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-9任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111391213.8A CN114143386A (zh) | 2021-11-23 | 2021-11-23 | 一种基于quic协议的通信方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111391213.8A CN114143386A (zh) | 2021-11-23 | 2021-11-23 | 一种基于quic协议的通信方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114143386A true CN114143386A (zh) | 2022-03-04 |
Family
ID=80390750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111391213.8A Pending CN114143386A (zh) | 2021-11-23 | 2021-11-23 | 一种基于quic协议的通信方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114143386A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297194A (zh) * | 2022-10-09 | 2022-11-04 | 深圳市信润富联数字科技有限公司 | 风电监控设备的数据处理方法、装置、设备及存储介质 |
CN116962509A (zh) * | 2023-09-20 | 2023-10-27 | 联通在线信息科技有限公司 | 基于quic协议的网络代理方法以及网络代理系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105579976A (zh) * | 2014-09-03 | 2016-05-11 | 华为技术有限公司 | 网页自动化测试方法及装置 |
CN105763507A (zh) * | 2014-12-16 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及系统 |
CN110999252A (zh) * | 2017-06-27 | 2020-04-10 | 奥兰治 | 经由多个路径的quic通信的方法 |
WO2021163684A1 (en) * | 2020-02-14 | 2021-08-19 | Idac Holdings, Inc. | Methods and apparatuses for enabling multi-host multipath secure transport with quic |
CN113382062A (zh) * | 2021-06-08 | 2021-09-10 | 北京天空卫士网络安全技术有限公司 | 一种数据传输方法、装置和系统 |
-
2021
- 2021-11-23 CN CN202111391213.8A patent/CN114143386A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105579976A (zh) * | 2014-09-03 | 2016-05-11 | 华为技术有限公司 | 网页自动化测试方法及装置 |
CN105763507A (zh) * | 2014-12-16 | 2016-07-13 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及系统 |
CN110999252A (zh) * | 2017-06-27 | 2020-04-10 | 奥兰治 | 经由多个路径的quic通信的方法 |
WO2021163684A1 (en) * | 2020-02-14 | 2021-08-19 | Idac Holdings, Inc. | Methods and apparatuses for enabling multi-host multipath secure transport with quic |
CN113382062A (zh) * | 2021-06-08 | 2021-09-10 | 北京天空卫士网络安全技术有限公司 | 一种数据传输方法、装置和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297194A (zh) * | 2022-10-09 | 2022-11-04 | 深圳市信润富联数字科技有限公司 | 风电监控设备的数据处理方法、装置、设备及存储介质 |
CN116962509A (zh) * | 2023-09-20 | 2023-10-27 | 联通在线信息科技有限公司 | 基于quic协议的网络代理方法以及网络代理系统 |
CN116962509B (zh) * | 2023-09-20 | 2024-02-27 | 联通在线信息科技有限公司 | 基于quic协议的网络代理方法以及网络代理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8547974B1 (en) | Generating communication protocol test cases based on network traffic | |
US9645910B1 (en) | Cross platform mobile HTML debugging | |
CN114143386A (zh) | 一种基于quic协议的通信方法、系统、设备及存储介质 | |
US8667119B2 (en) | System and method for re-generating packet load for load test | |
US8463860B1 (en) | Scenario based scale testing | |
JP2004527028A (ja) | インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル | |
WO2021083083A1 (zh) | 一种升级方法、系统、服务器及终端设备 | |
CN112835782B (zh) | 接口的接入测试方法和系统 | |
CN110661853A (zh) | 一种数据代理方法、装置、计算机设备及可读存储介质 | |
CN111355632A (zh) | 基于sipp的性能测试方法与装置和计算机设备及存储介质 | |
CN115001846A (zh) | 一种跨网数据传输的方法、隔离设备、装置及介质 | |
CN113821254A (zh) | 接口数据处理方法、装置、存储介质及设备 | |
US11169861B2 (en) | Application server programming language cloud functions | |
CN102932474B (zh) | 报文解析方法、设备及系统 | |
CN112073488A (zh) | 处理请求的方法及装置 | |
CN112231209A (zh) | 参数获取方法、装置、计算机设备和存储介质 | |
CN108279855B (zh) | 一种读写存储设备的方法 | |
CN115016995A (zh) | 接口测试方法、计算机设备及计算机存储介质 | |
CN114048087A (zh) | 设备的数据中转性能的测试方法及装置 | |
US10592388B1 (en) | Methods for facilitating more efficient network message exchange and analysis and devices thereof | |
CN113204449A (zh) | 会话备份方法、计算机可读存储介质及终端设备 | |
CN112001156A (zh) | 一种表单处理方法、装置及计算机可读存储介质 | |
WO2023078444A1 (zh) | 一种公有云系统及其相关方法 | |
CN112131026A (zh) | 基于跨平台框架的信息处理方法、计算机设备和存储介质 | |
CN113285904A (zh) | 基于rdp的磁盘映射文件信息的解析方法 |
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 |