CN115334138A - QUIC data transmission method, device, client and server - Google Patents

QUIC data transmission method, device, client and server Download PDF

Info

Publication number
CN115334138A
CN115334138A CN202110456892.6A CN202110456892A CN115334138A CN 115334138 A CN115334138 A CN 115334138A CN 202110456892 A CN202110456892 A CN 202110456892A CN 115334138 A CN115334138 A CN 115334138A
Authority
CN
China
Prior art keywords
application layer
layer protocol
data
server
client
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.)
Granted
Application number
CN202110456892.6A
Other languages
Chinese (zh)
Other versions
CN115334138B (en
Inventor
梁乾灯
康娇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110456892.6A priority Critical patent/CN115334138B/en
Priority to PCT/CN2022/084139 priority patent/WO2022228011A1/en
Publication of CN115334138A publication Critical patent/CN115334138A/en
Application granted granted Critical
Publication of CN115334138B publication Critical patent/CN115334138B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

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

The application is applicable to the technical field of terminals, and provides a QUIC data transmission method, a device, a client and a server. The method comprises the step that when the client responds to the second data request and carries out data transmission with the server, the second application layer protocol used by the second data request is determined. And when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, establishing a second data stream in the first QUIC session, wherein the second data stream is used for carrying data requested to be transmitted in a second data request, the first QUIC session is the QUIC session established by the client and the server in response to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client and the server. Because a plurality of QUIC conversations are not required to be established, the data requested to be transmitted in the second data request transmitted by the first QUIC conversation is multiplexed, the network bandwidth can be saved, the QUIC conversation resources can be saved, meanwhile, the data transmission delay is reduced, and the link establishment efficiency is improved.

Description

QUIC data transmission method, device, client and server
Technical Field
The application relates to the field of terminals, in particular to a QUIC data transmission method, device, client and server.
Background
Fast User Datagram Protocol (UDP) network Connection (QUIC) is a UDP-based low-latency Internet transport layer Protocol. The QUIC can be applied to the scenes such as web pages or application programs and the like which need to carry out data transmission.
The QUIC protocol can multiplex the transport layer, i.e. after a session between a client and a server is established, for each element that needs to be transported, one reliable data stream (stream) or unreliable data stream (flow) can be used separately for data transport.
However, different application layer protocols may be used to transport different elements. When there are multiple application layer protocols, a separate session needs to be established for each application layer protocol to transmit the corresponding elements. And a plurality of sessions are established, which wastes network bandwidth and QUIC session resources and reduces the efficiency of establishing a link of the QUIC session.
Disclosure of Invention
The embodiment of the application provides a QUIC data transmission method, a device, a client and a server, which can solve the problems that when various application layer protocols exist, an independent session needs to be established for each application layer protocol, so that the network bandwidth is wasted, the QUIC session resource is wasted, and the QUIC session link establishment efficiency is reduced.
In a first aspect, an embodiment of the present application provides a QUIC data transmission method applied to a client, where the method includes:
and when the client responds to the second data request and performs data transmission with the server, determining a second application layer protocol used by the second data request. And when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, establishing a second data stream in the first QUIC session, wherein the second data stream is used for bearing data requested to be transmitted in a second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client and the server.
In the first aspect, the client may be a mobile phone (mobile phone), a tablet computer (Pad), a computer with a transceiver function, a Virtual Reality (VR) terminal device, an Augmented Reality (AR) terminal device, a wireless terminal in industrial control (industrial control), a wireless terminal in self driving (self driving), a wireless terminal in remote medical (remote medical), a wireless terminal in smart grid (smart grid), a wireless terminal in transportation safety (transportation safety), a wireless terminal in smart city (smart city), a wireless terminal in smart home (smart home), a wearable device, a vehicle-mounted device, an ultra-mobile personal computer (UMPC), a web-enabled Personal Digital Assistant (PDA), and other electronic devices.
According to the QUIC data transmission method, when a first QUIC session is established between a client and a server, an application layer protocol list corresponding to the first QUIC session is obtained through negotiation. When the client responds to the second data request and carries out data transmission with the server, if the second application layer protocol used by the second data request is in the application layer protocol list corresponding to the first QUIC session, the QUIC session does not need to be created, and the data requested to be transmitted in the second data request is carried by the second data stream using the second application layer protocol under the first QUIC session. Because a plurality of QUIC conversations are not required to be established, the first QUIC conversation is multiplexed, the network bandwidth can be saved, the QUIC conversation resources can be saved, meanwhile, the data transmission delay is reduced, and the link establishment efficiency is improved.
In some embodiments, establishing a second data flow with the server in the first QUIC session includes: the client responds to the second data request to generate a first type of data frame, the first type of data frame comprises a second application layer protocol, identification information of the second data stream and data information corresponding to the second data request, and the corresponding relation between the identification information of the second data stream and the second application layer protocol is recorded. The client sends the first type of data frame to the server and instructs the server to establish a second data stream according to a second application layer protocol in the first type of data frame.
In some embodiments, after the client sends the first type of data frame to the server, the method further includes: the client receives the first type data frame from the server. And when the client determines that the corresponding relation between the identification information of the second data stream in the first-class data frame and the second application layer protocol is consistent with the corresponding relation between the identification information of the second data stream recorded by the client and the second application layer protocol, the first-class data frame is sent to a processing module corresponding to the second application layer protocol for processing.
In the embodiment, by associating the identification information of the data stream with the application layer protocol, the application layer protocol corresponding to the second type of data frame can be accurately obtained when the first type of data frame is not used, so that the data stream can transmit the data streams of different application layer protocols under one QUIC session by using the second type of data frame subsequently.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
After the client sends the first type of data frame to the server, the method further comprises the following steps: the client receives the second type data frame from the server. And the client sends the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relation between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The client establishes a second data flow with the server in the first QUIC session, and the method comprises the following steps: and the client determines that the second application layer protocol is the first application layer protocol in the application layer protocol list corresponding to the first QUIC session. The client responds to the second data request to generate a second type data frame, and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the client sends a second type data frame to the server, instructs the server to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In the embodiment, the data stream established through the second type of data frame is appointed to use the first application layer protocol in the application layer protocol list, so that when the second application layer protocol is the first application layer protocol in the application layer protocol list, the client can establish the second data stream through the second type of data frame, and application scenarios of the QUIC data transmission method are increased.
In some embodiments, the QUIC data transmission method further comprises: after the first QUIC session is established, the client records the number of times of reference of the first QUIC session, wherein the number of times of reference is the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the QUIC data transmission method further comprises: and when the number of times of reference is reduced to zero and the number of times of reference is not changed after the preset time length, the client closes the first QUIC session.
In the embodiment, the number of the data streams in the first QUIC session is recorded, so that when no data stream exists in the first QUIC session and no new data stream exists within a preset time length, the first QUIC session can be closed, and network resources and QUIC session resources are saved.
In some embodiments, before the client responds to the second data request, the method further comprises: and responding to the first data request to establish a first QUIC session with the server, and generating an application layer protocol list corresponding to the first QUIC session. And establishing a first data stream in the first QUIC session, wherein the first data stream is used for carrying data requested to be transmitted in a first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, establishing a first QUIC session with a server in response to a first data request and generating an application layer protocol list corresponding to the first QUIC session includes: the client responds to the first data request and sends a session handshake request for establishing the first QUIC session to the server. The client receives a handshake message from the server, the handshake message is generated by the server according to the session handshake request, and the handshake message includes an application layer protocol supported by the server. And generating an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server. And the client establishes a first QUIC session according to the handshake message, and sends an application layer protocol list corresponding to the first QUIC session and a confirmation message established by the first QUIC session to the server through the first QUCI session.
In some embodiments, the QUIC data transmission method further comprises: the client receives a first notification frame or a second notification frame from the server, the first notification frame is used for indicating the client to add at least one application layer protocol to an application layer protocol list corresponding to a first QUIC session stored in the client, and the second notification frame is used for indicating the client to remove at least one application layer protocol from the application layer protocol list corresponding to the first QUIC session stored in the client. And the client updates the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the QUIC data transmission method further comprises: and the client responds to the updating instruction of the application layer protocol list and updates the application layer protocol list stored in the client. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the client, generating a first notification frame, wherein the first notification frame is used for indicating the server to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the server. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the client is removed, generating a second notification frame, wherein the second notification frame is used for indicating the server to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the server. And the client sends the first notification frame or the second notification frame to the server.
In some embodiments, the QUIC data transmission method further comprises: and when the second application layer protocol is not the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the client generates an updating instruction of the application layer protocol list, wherein the updating instruction is used for writing the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the client. The client responds to the updating instruction and generates a first notification frame. And after the client sends the first notification frame to the server through the first QUIC session, establishing a second data stream with the server in the first QUIC session.
In this embodiment, through the first notification frame and the second notification frame, the server and the client may also dynamically negotiate a loaded application layer protocol, and when the application layer protocol used for the data request is not in the application layer protocol list, a data stream may also be established, increasing the application scenarios of the QUIC data transmission method.
In a second aspect, an embodiment of the present application provides a QUIC data transmission method applied to a server, where the method includes:
and when the server responds to the second data request and performs data transmission with the client, determining a second application layer protocol used by the second data request. And when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, establishing a second data stream in the first QUIC session, wherein the second data stream is used for bearing data requested to be transmitted in the second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols supported by both the client and the server.
In a second aspect, a server may be a device that serves a client, and the server may provide resources to the client and save data from the client, and so on. For example, the server may be a server or a network device, the server may be a blade server, a rack server, a cloud server, and the like, and the network device includes a three-layer switch, a router, a broadband gateway, a firewall, a load balancer, and the like.
The QUIC data transmission method provided by the second aspect obtains the application layer protocol list of the first QUIC session through negotiation when the server and the client establish the first QUIC session. When the server side responds to the second data request, if the second application layer protocol used by the second data request is in the application layer protocol list, the QUIC session does not need to be created, and the second data stream using the second application layer protocol is carried under the first QUIC session. Because a plurality of QUIC conversations are not needed to be established, but the first QUIC conversation is multiplexed, the network bandwidth can be saved, the QUIC conversation resources can be saved, meanwhile, the data transmission delay is reduced, and the link establishment efficiency is improved.
In some embodiments, the server establishes a second data stream with the client in the first QUIC session, including: the server responds to the second data request to generate a first type of data frame, the first type of data frame comprises a second application layer protocol, identification information of the second data stream and data information corresponding to the second data request, and the corresponding relation between the identification information of the second data stream and the second application layer protocol is recorded. And the server side sends the first type of data frames to the client side and instructs the client side to establish a second data stream according to a second application layer protocol in the first type of data frames.
In some embodiments, after the server sends the first type of data frame to the client, the method further includes: the server receives the first type of data frames from the client. And when the server determines that the corresponding relationship between the identification information of the second data stream in the first type of data frame and the second application layer protocol is consistent with the corresponding relationship between the identification information of the second data stream recorded by the server and the second application layer protocol, sending the first type of data frame to a processing module corresponding to the second application layer protocol for processing.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
After the server sends the first type of data frame to the client, the method further comprises the following steps: the server receives the second type data frame from the client. And the server sends the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relation between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The server establishes a second data stream with the client in the first QUIC session, comprising: and the server determines that the second application layer protocol is the first application layer protocol in the application layer protocol list corresponding to the first QUIC session. And the server side responds to the second data request to generate a second data frame and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the server side sends the second type data frame to the client side, instructs the client side to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, the QUIC data transmission method further comprises: after the first QUIC session is established, the server records the number of times of reference of the first QUIC session, wherein the number of times of reference is the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the QUIC data transmission method further comprises: and when the number of times of reference is reduced to zero and the number of times of reference is not changed after the preset time length, the server closes the first QUIC session.
In some embodiments, before the server responds to the second data request, the method further includes: the server establishes a first QUIC session with the client. The server side responds to a first data request from a client side, and establishes a first data flow between the server side and the client side, wherein the first data flow is used for bearing data requested to be transmitted in the first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to a first QUIC session.
In some embodiments, the server establishes a first QUIC session with the client, including: receiving a session handshake request from a client, wherein the session handshake request is used for indicating that a first QUIC session is established between a server and the client. And generating a handshake message according to the session handshake request and sending the handshake message to the client, wherein the handshake message comprises an application layer protocol supported by the server. And receiving an application layer protocol list from the client and a confirmation message of the first QUIC session establishment. And the server side confirms to establish the first QUIC session according to the confirmation message.
In some embodiments, the QUIC data transmission method further comprises: the server receives a first notification frame or a second notification frame from the client, the first notification frame is used for indicating the server to add at least one application layer protocol to an application layer protocol list corresponding to a first QUIC session stored in the server, and the second notification frame is used for indicating the server to remove at least one application layer protocol stored in the application layer protocol list corresponding to the first QUIC session in the server. And the server side updates the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the QUIC data transmission method further comprises: and the server side responds to the updating instruction of the application layer protocol list and updates the application layer protocol list stored in the server side. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the server, generating a first notification frame, wherein the first notification frame is used for indicating the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the server is removed, generating a second notification frame, wherein the second notification frame is used for indicating the client to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the client. And the server side sends the first notification frame or the second notification frame to the client side.
In some embodiments, the QUIC data transmission method further comprises: and when the second application layer protocol is not the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the server generates an updating instruction of the application layer protocol list, and the updating instruction is used for writing the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the server. The server responds to the updating instruction and generates a first notification frame. And after the server side sends the first notification frame to the client side through the first QUIC session, a second data stream is established with the client side in the first QUIC session.
In a third aspect, an embodiment of the present application provides a QUIC data transmission apparatus applied to a client, including:
and the determining module is used for determining a second application layer protocol used by the second data request when responding to the data transmission between the second data request and the server.
The establishing module is used for establishing a second data stream in the first QUIC session when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the second data stream is used for bearing data requested to be transmitted in the second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client and the server.
In some embodiments, the establishing module is specifically configured to generate a first type of data frame in response to the second data request, where the first type of data frame includes the second application layer protocol, identification information of the second data stream, and data information corresponding to the second data request, and record a corresponding relationship between the identification information of the second data stream and the second application layer protocol. And sending the first type of data frame to the server, and indicating the server to establish a second data stream according to a second application layer protocol in the first type of data frame.
In some embodiments, the apparatus further includes a receiving module, configured to receive the first type of data frame from the server. The device also comprises a processing module, which is used for sending the first type of data frame to a processing module corresponding to the second application layer protocol for processing when the corresponding relation between the identification information of the second data stream in the first type of data frame and the second application layer protocol is determined to be consistent with the corresponding relation between the identification information of the second data stream recorded by the client and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
And the receiving module is also used for receiving the second type data frame from the server. And the processing module is further configured to send the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relationship between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
And the establishing module is specifically used for determining that the second application layer protocol is the first application layer protocol in the application layer protocol list corresponding to the first QUIC session. The client responds to the second data request to generate a second type data frame, and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the client sends the second type data frame to the server, instructs the server to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, the device further comprises a recording module used for recording the number of times of reference of the first QUIC session after the first QUIC session is established, wherein the number of times of reference is the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the recording module is further configured to close the first QUIC session when the number of references is reduced to zero and the number of references does not change after a preset time period.
In some embodiments, the establishing module is further configured to establish a first QUIC session with the server in response to the first data request, and generate an application layer protocol list corresponding to the first QUIC session. And establishing a first data stream in the first QUIC session, wherein the first data stream is used for carrying data requested to be transmitted in a first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, the establishing module is specifically configured to send, to the server, a session handshake request for establishing the first QUIC session in response to the first data request. The client receives a handshake message from the server, the handshake message is generated by the server according to the session handshake request, and the handshake message includes an application layer protocol supported by the server. And generating an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server. And the client establishes a first QUIC session according to the handshake message, and sends an application layer protocol list corresponding to the first QUIC session and a confirmation message established by the first QUIC session to the server through the first QUCI session.
In some embodiments, the receiving module is further configured to receive a first notification frame or a second notification frame from the server, where the first notification frame is used to instruct the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client, and the second notification frame is used to instruct the client to remove at least one application layer protocol from the application layer protocol list corresponding to the first QUIC session stored in the client. The apparatus further includes an update module configured to update the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the update module is further configured to update the application layer protocol list stored in the client in response to an update instruction of the application layer protocol list. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the client, generating a first notification frame, wherein the first notification frame is used for indicating the server to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the server. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the client is removed, generating a second notification frame, wherein the second notification frame is used for indicating the server to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the server. And sending the first notification frame or the second notification frame to the server.
In some embodiments, the update module is further configured to generate an update instruction of the application layer protocol list when the second application layer protocol is not an application layer protocol in the application layer protocol list corresponding to the first QUIC session, where the update instruction is used to write the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the client. And responding to the updating instruction and generating a first notification frame. And the establishing module is also used for establishing a second data stream with the server in the first QUIC session after the client sends the first notification frame to the server through the first QUIC session.
In a fourth aspect, an embodiment of the present application provides a QUIC data transmission apparatus applied to a server, including:
and the determining module is used for determining a second application layer protocol used by the second data request when responding to the data transmission between the second data request and the client.
The establishing module is used for establishing a second data stream in the first QUIC session when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the second data stream is used for bearing data requested to be transmitted in the second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client and the server.
In some embodiments, the establishing module is specifically configured to generate a first type of data frame in response to the second data request, where the first type of data frame includes the second application layer protocol, identification information of the second data stream, and data information corresponding to the second data request, and record a corresponding relationship between the identification information of the second data stream and the second application layer protocol. And the server side sends the first type of data frames to the client side and instructs the client side to establish a second data stream according to a second application layer protocol in the first type of data frames.
In some embodiments, the apparatus further includes a receiving module configured to receive the first type of data frame from the client. The device also comprises a processing module, which is used for sending the first type of data frame to a processing module corresponding to the second application layer protocol for processing when the corresponding relation between the identification information of the second data stream in the first type of data frame and the second application layer protocol is determined to be consistent with the corresponding relation between the identification information of the second data stream recorded by the server and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
And the receiving module is also used for receiving the second type data frame from the client. And the processing module is further configured to send the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relationship between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
And the establishing module is specifically used for determining that the second application layer protocol is the first application layer protocol in the application layer protocol list corresponding to the first QUIC session. And the server side responds to the second data request to generate a second data frame and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the server side sends the second type data frame to the client side, instructs the client side to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, the apparatus further includes a recording module for recording the number of references of the first QUIC session after the first QUIC session is established, where the number of references is the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the recording module is further configured to close the first QUIC session when the number of references is reduced to zero and the number of references does not change after a preset time period.
In some embodiments, the establishing module is further configured to establish, by the server and the client, the first QUIC session. The server side responds to a first data request from a client side, and establishes a first data flow between the server side and the client side, wherein the first data flow is used for bearing data requested to be transmitted in the first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to a first QUIC session.
In some embodiments, the establishing module is specifically configured to receive a session handshake request from a client, where the session handshake request is used to instruct a server and the client to establish a first QUIC session. And generating a handshake message according to the session handshake request and sending the handshake message to the client, wherein the handshake message comprises an application layer protocol supported by the server. And receiving an application layer protocol list from the client and a confirmation message of the first QUIC session establishment. And the server confirms to establish the first QUIC session according to the confirmation message.
In some embodiments, the receiving module is further configured to receive a first notification frame or a second notification frame from the client, where the first notification frame is used to instruct the server to add at least one application layer protocol to an application layer protocol list corresponding to a first QUIC session stored in the server, and the second notification frame is used to instruct the server to remove at least one application layer protocol stored in the application layer protocol list corresponding to the first QUIC session in the server. The apparatus further includes an update module configured to update the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the update module is further configured to update the application layer protocol list stored in the server in response to an update instruction of the application layer protocol list. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the server, generating a first notification frame, wherein the first notification frame is used for indicating the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the server is removed, generating a second notification frame, wherein the second notification frame is used for indicating the client to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the client. And the server side sends the first notification frame or the second notification frame to the client side.
In some embodiments, the update module is further configured to, when the second application layer protocol is not an application layer protocol in the application layer protocol list corresponding to the first QUIC session, generate, by the server, an update instruction of the application layer protocol list, where the update instruction is used to write the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the server. The server responds to the updating instruction and generates a first notification frame. And the establishing module is also used for establishing a second data stream with the client in the first QUIC session after the server sends the first notification frame to the client through the first QUIC session.
In a fifth aspect, the present application provides a QUIC client, which includes a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements the method provided in the first aspect when executing the computer program.
In a sixth aspect, the present application provides a QUIC server, which includes a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements the method provided in the second aspect when executing the computer program.
In a seventh aspect, the embodiment of the present application provides a data transmission system, which includes at least one QUIC client provided in the fifth aspect and at least one QUIC server provided in the sixth aspect, where the QUIC client and the QUIC server are connected through network communication, and the QUIC client and the QUIC server in the data transmission system can perform data transmission by using the QUIC data transmission method provided in the first aspect and the second aspect.
In an eighth aspect, the present application provides a computer-readable storage medium, where a computer program is stored, and when executed by a processor, the computer program implements the method provided in the first aspect.
In a ninth aspect, the present application provides a computer-readable storage medium, where a computer program is stored, where the computer program is implemented by a processor to implement the method provided in the second aspect.
In a tenth aspect, embodiments of the present application provide a computer program product, which, when run on a client, causes the client to execute the method provided in the first aspect.
In an eleventh aspect, the present application provides a computer program product, which when run on a server, causes the server to execute the method provided in the second aspect.
In a twelfth aspect, an embodiment of the present application provides a chip system, where the chip system includes a memory and a processor, and the processor executes a computer program stored in the memory to implement the method provided in the first aspect.
In a thirteenth aspect, an embodiment of the present application provides a chip system, where the chip system includes a memory and a processor, and the processor executes a computer program stored in the memory to implement the method provided in the second aspect.
In a fourteenth aspect, an embodiment of the present application provides a chip system, where the chip system includes a processor, the processor is coupled to the computer-readable storage medium provided in the eighth aspect, and the processor executes a computer program stored in the computer-readable storage medium to implement the method provided in the first aspect.
In a fifteenth aspect, an embodiment of the present application provides a chip system, where the chip system includes a processor, the processor is coupled to the computer-readable storage medium provided in the ninth aspect, and the processor executes a computer program stored in the computer-readable storage medium to implement the method provided in the first aspect.
It is to be understood that, for the beneficial effects of the second aspect to the fifteenth aspect, reference may be made to the relevant description in the first aspect, and details are not described herein again.
Drawings
FIG. 1 is an application scenario of QUIC data transmission;
fig. 2 is a schematic structural diagram of a client according to an embodiment of the present disclosure;
fig. 3 is a schematic diagram of a software structure of a client according to an embodiment of the present application;
FIG. 4 is a schematic flow chart of a QUIC data transmission method according to an embodiment of the present application;
FIG. 5 is a schematic flow chart of another QUIC data transmission method provided in the embodiments of the present application;
FIG. 6 is a schematic flow chart diagram of another QUIC data transmission method provided by the embodiments of the present application;
FIG. 7 is a schematic flow chart diagram of another QUIC data transmission method provided by the embodiments of the present application;
fig. 8 is a data flow diagram when the data transmission method provided by the present application is used according to an embodiment of the present application;
FIG. 9 is a block diagram of a QUIC data transmission device according to an embodiment of the present application;
FIG. 10 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 11 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 12 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 13 is a block diagram of a QUIC data transmission device according to an embodiment of the present application;
FIG. 14 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 15 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 16 is a block diagram of another QUIC data transmission device according to an embodiment of the present application;
FIG. 17 is a schematic structural diagram of a QUIC client according to an embodiment of the present application;
FIG. 18 is a schematic structural diagram of a QUIC server according to an embodiment of the present application.
Detailed Description
In the following description, for purposes of explanation and not limitation, specific details are set forth, such as particular system structures, techniques, etc. in order to provide a thorough understanding of the embodiments of the present application. It will be apparent, however, to one skilled in the art that the present application may be practiced in other embodiments that depart from these specific details. In other instances, detailed descriptions of well-known systems, devices, circuits, and methods are omitted so as not to obscure the description of the present application with unnecessary detail.
It should be understood that the term "and/or" as used in this specification and the appended claims refers to and includes any and all possible combinations of one or more of the associated listed items.
As used in this specification and the appended claims, the term "if" may be interpreted contextually as "when", "upon" or "in response to" determining "or" in response to detecting ". Similarly, the phrase "if determined" or "if detected" may be interpreted to mean "upon determination" or "in response to determination" or "upon detection" or "in response to detection", depending on the context.
Furthermore, in the description of the present application and the appended claims, the terms "first," "second," "third," and the like are used for distinguishing between descriptions and not necessarily for describing or implying relative importance.
Reference throughout this specification to "one embodiment" or "some embodiments," or the like, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in one or more embodiments of the present application. Thus, appearances of the phrases "in one embodiment," "in some embodiments," "in other embodiments," or the like, in various places throughout this specification are not necessarily all referring to the same embodiment, but rather "one or more but not all embodiments" unless specifically stated otherwise. The terms "comprising," "including," "having," and variations thereof mean "including, but not limited to," unless expressly specified otherwise.
Fig. 1 shows an application scenario of QUIC data transmission.
Referring to fig. 1, the scenario includes a client 11 and a server 12, where the client 11 and the server 12 perform data transmission through a network before.
The network may be a wired network or a wireless network, and the wireless network may include global system for mobile communications (GSM), general Packet Radio Service (GPRS), code Division Multiple Access (CDMA), wideband Code Division Multiple Access (WCDMA), time division code division multiple access (time-division code division multiple access (TD-SCDMA), long term evolution (long term evolution, LTE), new air interface (New Radio, NR), NR, WLAN, NFC, BT, FM, and/or IR technologies, to name a few. GNSS may include Global Positioning System (GPS), global navigation satellite system (GLONASS), beidou satellite navigation system (BDS), quasi-zenith satellite system (QZSS), and/or Satellite Based Augmentation System (SBAS). The wired Network may include a Local Area Network (LAN), a Wide Area Network (WAN), and the like.
For data exchange between the client 11 and the server 12, the QUIC protocol may be used. QUIC is a UDP-based transport layer Protocol, and can replace Transmission Control Protocol (TCP) to improve the problems of head-of-line congestion and the like. The QUIC protocol implements transport layer multiplexing of protocol messages carried thereon. For example, the client 11 runs a browser program, and a webpage browsed by the browser program includes a plurality of elements, such as text, images, videos, and the like. The client 11 can establish a QUIC session with the server 12, and each QUIC session can establish a plurality of data streams, each for transmitting data requested by one element. Under one QUIC session, multiple data streams can simultaneously transmit data requested by multiple elements.
In the prior art, each QUIC session can only support one application layer protocol, and for elements adopting different application layer protocols, a plurality of QUIC sessions need to be established for transmission.
For example, elements such as text and images can be transmitted using HyperText Transfer Protocol (HTTP) 3.0, while live video elements can be transmitted using Real-time Transport Protocol (RTP) or Real-time Transport Control Protocol (RTCP). In this case, in order to transmit elements using different application layer protocols simultaneously, a QUIC session needs to be established between the client 11 and the server 12 for each application layer protocol, so as to transmit the elements using the corresponding application layer protocol. For example, one QUIC session may be used between the client 11 and the server 12 to transfer elements using the HTTP3.0 protocol, and another QUIC session may be established to transfer elements using the RTP/RTCP protocol.
However, handshaking is required to be performed between the client 11 and the server 12 every time a QUIC session is established, and multiple times of handshaking are required to be performed to establish multiple QUIC sessions, which increases data transmission delay and reduces link establishment efficiency.
In this regard, the present application provides a method for transmitting QUIC data, which, when applied to a client, includes:
and when the client responds to the second data request and performs data transmission with the server, determining a second application layer protocol used by the second data request. And when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, establishing a second data stream in the first QUIC session, wherein the second data stream is used for bearing data requested to be transmitted in the second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols supported by both the client and the server.
When the method is applied to the server side, the method comprises the following steps:
and when the server responds to the second data request and performs data transmission with the client, determining a second application layer protocol used by the second data request. And when the second application layer protocol is the application layer protocol in the application layer protocol list corresponding to the first QUIC session, establishing a second data stream in the first QUIC session, wherein the second data stream is used for bearing data requested to be transmitted in a second data request, the first QUIC session is the QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client and the server.
According to the QUIC data transmission method, when a first QUIC session is established between a client and a server, an application layer protocol list corresponding to the first QUIC session is obtained through negotiation. When the client or the server responds to the second data request and performs data transmission with the server, if the second application layer protocol used by the second data request is in the application layer protocol list corresponding to the first QUIC session, the QUIC session does not need to be created, and a second data stream using the second application layer protocol is established under the first QUIC session to carry the data requested to be transmitted in the second data request. Because a plurality of QUIC conversations are not needed to be established, but the first QUIC conversation is multiplexed, the network bandwidth can be saved, the QUIC conversation resources can be saved, meanwhile, the data transmission delay is reduced, and the link establishment efficiency is improved.
The client of the data transmission method provided in this embodiment may be a mobile phone (mobile phone), a tablet computer (Pad), a computer with a transceiver function, a Virtual Reality (VR) terminal device, an Augmented Reality (AR) terminal device, a wireless terminal in industrial control (industrial control), a wireless terminal in self driving (self driving), a wireless terminal in remote medical (remote medical), a wireless terminal in smart grid (smart grid), a wireless terminal in transportation safety, a wireless terminal in city (smart city), a wireless terminal in smart home (smart home), a wearable device, a vehicle-mounted device, a super-mobile personal computer (ultra-mobile personal computer, pc), a netbook, a Personal Digital Assistant (PDA), and any specific application types are not limited.
The server may be a device serving the client, and the server may provide resources to the client and store data from the client. For example, the server may be a server or a network device, the server may be a blade server, a rack server, a cloud server, and the like, and the network device includes a three-layer switch, a router, a broadband gateway, a firewall, a load balancer, and the like.
Fig. 2 shows a schematic structural diagram of a client, which is an electronic device 200. The electronic device 200 may include a processor 210, an external memory interface 220, an internal memory 221, a Universal Serial Bus (USB) interface 230, a charging management module 240, a power management module 241, a battery 242, an antenna 1, an antenna 2, a mobile communication module 250, a wireless communication module 260, an audio module 270, a speaker 270A, a receiver 270B, a microphone 270C, an earphone interface 270D, a sensor module 280, keys 290, a motor 291, an indicator 292, a camera 293, a display screen 294, a Subscriber Identification Module (SIM) card interface 295, and the like. The sensor module 280 may include a pressure sensor 280A, a gyroscope sensor 280B, an air pressure sensor 280C, a magnetic sensor 280D, an acceleration sensor 280E, a distance sensor 280F, a proximity light sensor 280G, a fingerprint sensor 280H, a temperature sensor 280J, a touch sensor 280K, an ambient light sensor 280L, a bone conduction sensor 280M, and the like.
It is to be understood that the illustrated structure of the embodiment of the present application does not specifically limit the electronic device 200. In other embodiments of the present application, the electronic device 200 may include more or fewer components than shown, or combine certain components, or split certain components, or a different arrangement of components. The illustrated components may be implemented in hardware, software, or a combination of software and hardware.
For example, when the electronic device 200 is a mobile phone or a tablet computer, all of the components shown in the drawings may be included, or only some of the components shown in the drawings may be included.
Processor 210 may include one or more processing units, such as: the processor 210 may include an Application Processor (AP), a modem processor, a Graphics Processing Unit (GPU), an Image Signal Processor (ISP), a controller, a memory, a video codec, a Digital Signal Processor (DSP), a baseband processor, and/or a neural-Network Processing Unit (NPU), etc. Wherein, the different processing units may be independent devices or may be integrated in one or more processors.
The controller may be, among other things, a neural center and a command center of the electronic device 200. The controller can generate an operation control signal according to the instruction operation code and the timing signal to complete the control of instruction fetching and instruction execution.
A memory may also be provided in processor 210 for storing instructions and data. In some embodiments, the memory in processor 210 is a cache memory. The memory may hold instructions or data that have just been used or recycled by processor 210. If the processor 210 needs to reuse the instruction or data, it may be called directly from memory. Avoiding repeated accesses reduces the latency of the processor 210, thereby increasing the efficiency of the system.
In some embodiments, processor 210 may include one or more interfaces. The interface may include an integrated circuit (I2C) interface, an integrated circuit built-in audio (I2S) interface, a Pulse Code Modulation (PCM) interface, a universal asynchronous receiver/transmitter (UART) interface, a Mobile Industry Processor Interface (MIPI), a general-purpose input/output (GPIO) interface, a Subscriber Identity Module (SIM) interface, and/or a Universal Serial Bus (USB) interface, etc.
The I2C interface is a bidirectional synchronous serial bus including a serial data line (SDA) and a Serial Clock Line (SCL). In some embodiments, processor 210 may include multiple sets of I2C buses. The processor 210 may be coupled to the touch sensor 280K, the charger, the flash, the camera 293, and the like through different I2C bus interfaces. For example: the processor 210 may be coupled to the touch sensor 280K through an I2C interface, so that the processor 210 and the touch sensor 280K communicate through an I2C bus interface to implement the touch function of the electronic device 200.
The I2S interface may be used for audio communication. In some embodiments, processor 210 may include multiple sets of I2S buses. Processor 210 may be coupled to audio module 270 via an I2S bus to enable communication between processor 210 and audio module 270. In some embodiments, audio module 270 may communicate audio signals to wireless communication module 260 through an I2S interface.
The PCM interface may also be used for audio communication, sampling, quantizing and encoding analog signals. In some embodiments, audio module 270 and wireless communication module 260 may be coupled by a PCM bus interface.
In some embodiments, audio module 270 may also communicate audio signals to wireless communication module 260 through a PCM interface. Both the I2S interface and the PCM interface may be used for audio communication.
The UART interface is a universal serial data bus used for asynchronous communications. The bus may be a bidirectional communication bus. It converts the data to be transmitted between serial communication and parallel communication.
In some embodiments, a UART interface is generally used to connect the processor 210 with the wireless communication module 260. For example: the processor 210 communicates with the bluetooth module in the wireless communication module 260 through the UART interface to implement the bluetooth function. In some embodiments, the audio module 270 may transmit the audio signal to the wireless communication module 260 through a UART interface, so as to realize the function of playing music through a bluetooth headset.
The MIPI interface may be used to connect the processor 210 with peripheral devices such as the display screen 294, the camera 293, and the like. The MIPI interface includes a Camera Serial Interface (CSI), a Display Serial Interface (DSI), and the like. In some embodiments, processor 210 and camera 293 communicate via a CSI interface to implement the capture functionality of electronic device 200. The processor 210 and the display screen 294 communicate through the DSI interface to implement a display function of the electronic device 200.
The GPIO interface may be configured by software. The GPIO interface may be configured as a control signal and may also be configured as a data signal. In some embodiments, a GPIO interface may be used to connect processor 210 with camera 293, display 294, wireless communication module 260, audio module 270, sensor module 280, and the like. The GPIO interface may also be configured as an I2C interface, I2S interface, UART interface, MIPI interface, and the like.
The USB interface 230 is an interface conforming to the USB standard specification, and may specifically be a Mini USB interface, a Micro USB interface, a USB Type C interface, or the like. The USB interface 230 may be used to connect a charger to charge the electronic device 200, and may also be used to transmit data between the electronic device 200 and a peripheral device. And the method can also be used for connecting a headset and playing audio through the headset. The interface may also be used to connect other electronic devices, such as AR devices and the like.
It should be understood that the interfacing relationship between the modules illustrated in the embodiments of the present application is only an illustration, and does not limit the structure of the electronic device 200. In other embodiments of the present application, the electronic device 200 may also adopt different interface connection manners or a combination of multiple interface connection manners in the above embodiments.
The charge management module 240 is configured to receive a charging input from a charger. The charger may be a wireless charger or a wired charger. In some wired charging embodiments, the charging management module 240 may receive charging input from a wired charger via the USB interface 230. In some wireless charging embodiments, the charging management module 240 may receive a wireless charging input through a wireless charging coil of the electronic device 200. The charging management module 240 may also supply power to the electronic device through the power management module 241 while charging the battery 242.
The power management module 241 is used to connect the battery 242, the charging management module 240 and the processor 210. The power management module 241 receives input from the battery 242 and/or the charging management module 240, and provides power to the processor 210, the internal memory 221, the external memory, the display 294, the camera 293, and the wireless communication module 260. The power management module 241 may also be used to monitor parameters such as battery capacity, battery cycle number, battery state of health (leakage, impedance), etc.
In some other embodiments, the power management module 241 may also be disposed in the processor 210. In other embodiments, the power management module 241 and the charging management module 240 may be disposed in the same device.
The wireless communication function of the electronic device 200 may be implemented by the antenna 1, the antenna 2, the mobile communication module 250, the wireless communication module 260, the modem processor, the baseband processor, and the like.
The antennas 1 and 2 are used for transmitting and receiving electromagnetic wave signals. Each antenna in the electronic device 200 may be used to cover a single or multiple communication bands. Different antennas can also be multiplexed to improve the utilization of the antennas. For example: the antenna 1 may be multiplexed as a diversity antenna of a wireless local area network. In other embodiments, the antenna may be used in conjunction with a tuning switch.
The mobile communication module 250 may provide a solution including 2G/3G/4G/5G wireless communication applied on the electronic device 200. The mobile communication module 250 may include at least one filter, a switch, a power amplifier, a Low Noise Amplifier (LNA), and the like. The mobile communication module 250 may receive the electromagnetic wave from the antenna 1, filter, amplify, etc. the received electromagnetic wave, and transmit the electromagnetic wave to the modem processor for demodulation. The mobile communication module 250 may also amplify the signal modulated by the modem processor, and convert the signal into electromagnetic wave through the antenna 1 to radiate the electromagnetic wave.
In some embodiments, at least some of the functional modules of the mobile communication module 250 may be disposed in the processor 210. In some embodiments, at least some of the functional blocks of the mobile communication module 250 may be provided in the same device as at least some of the blocks of the processor 210.
The modem processor may include a modulator and a demodulator. The modulator is used for modulating a low-frequency baseband signal to be transmitted into a medium-high frequency signal. The demodulator is used for demodulating the received electromagnetic wave signal into a low-frequency baseband signal. The demodulator then passes the demodulated low frequency baseband signal to a baseband processor for processing. The low frequency baseband signal is processed by the baseband processor and then passed to the application processor. The application processor outputs sound signals through an audio device (not limited to the speaker 270A, the receiver 270B, etc.) or displays images or video through the display screen 294. In some embodiments, the modem processor may be a stand-alone device. In other embodiments, the modem processor may be separate from the processor 210, and may be disposed in the same device as the mobile communication module 250 or other functional modules.
The wireless communication module 260 may provide solutions for wireless communication applied to the electronic device 200, including Wireless Local Area Networks (WLANs) (e.g., wireless fidelity (Wi-Fi) networks), bluetooth (BT), global Navigation Satellite System (GNSS), frequency Modulation (FM), near Field Communication (NFC), infrared (IR), and the like. The wireless communication module 260 may be one or more devices integrating at least one communication processing module. The wireless communication module 260 receives electromagnetic waves via the antenna 2, performs frequency modulation and filtering processing on electromagnetic wave signals, and transmits the processed signals to the processor 210. The wireless communication module 260 may also receive a signal to be transmitted from the processor 210, frequency-modulate and amplify the signal, and convert the signal into electromagnetic waves via the antenna 2 to radiate the electromagnetic waves.
In some embodiments, antenna 1 of electronic device 200 is coupled to mobile communication module 250 and antenna 2 is coupled to wireless communication module 260, such that electronic device 200 may communicate with networks and other devices via wireless communication techniques. The wireless communication technology may include global system for mobile communications (GSM), general Packet Radio Service (GPRS), code Division Multiple Access (CDMA), wideband Code Division Multiple Access (WCDMA), time division code division multiple access (time-division multiple access, TD-SCDMA), long term evolution (long term evolution, LTE), BT, GNSS, WLAN, NFC, FM, and/or IR technologies, among others. GNSS may include Global Positioning System (GPS), global navigation satellite system (GLONASS), beidou satellite navigation system (BDS), quasi-zenith satellite system (QZSS), and/or Satellite Based Augmentation System (SBAS).
The electronic device 200 implements display functions via the GPU, the display screen 294, and the application processor. The GPU is a microprocessor for image processing, coupled to a display screen 294 and an application processor. The GPU is used to perform mathematical and geometric calculations for graphics rendering. Processor 210 may include one or more GPUs that execute program instructions to generate or alter display information.
The display screen 294 is used to display images, video, and the like. Such as instructional video and user action screen video in the embodiments of the present application, the display screen 294 includes a display panel. The display panel may adopt a Liquid Crystal Display (LCD), an organic light-emitting diode (OLED), an active-matrix organic light-emitting diode (active-matrix organic light-emitting diode, AMOLED), a flexible light-emitting diode (FLED), a miniature, a Micro-oeld, a quantum dot light-emitting diode (QLED), and the like. In some embodiments, the electronic device 200 may include 1 or N display screens 294, N being a positive integer greater than 1.
The electronic device 200 may implement a shooting function through the ISP, the camera 293, the video codec, the GPU, the display screen 294, and the application processor.
The ISP is used to process the data fed back by the camera 293. For example, when a user takes a picture, the shutter is opened, light is transmitted to the camera photosensitive element through the lens, an optical signal is converted into an electric signal, and the camera photosensitive element transmits the electric signal to the ISP for processing and converting the electric signal into an image visible to the naked eye. The ISP can also carry out algorithm optimization on the noise, brightness and skin color of the image. The ISP can also optimize parameters such as exposure, color temperature and the like of a shooting scene. In some embodiments, the ISP may be provided in camera 293.
The camera 293 is used to capture still images or video. The object generates an optical image through the lens and projects the optical image to the photosensitive element. The focal length of the lens can be used to indicate the viewing range of the camera, and the focal length of the lens Duan Yuexiao indicates that the viewing range of the lens is larger. The photosensitive element may be a Charge Coupled Device (CCD) or a complementary metal-oxide-semiconductor (CMOS) phototransistor. The light sensing element converts the optical signal into an electrical signal, which is then passed to the ISP where it is converted into a digital image signal. And the ISP outputs the digital image signal to the DSP for processing. The DSP converts the digital image signal into an image signal in a standard RGB, YUV and other formats.
In the present application, the electronic device 200 may include 2 or more than 2 cameras 293.
The digital signal processor is used for processing digital signals, and can process digital image signals and other digital signals. For example, when the electronic device 200 selects a frequency bin, the digital signal processor is used to perform fourier transform or the like on the frequency bin energy.
Video codecs are used to compress or decompress digital video. The electronic device 200 may support one or more video codecs. In this way, the electronic device 200 may play or record video in a variety of encoding formats, such as: moving Picture Experts Group (MPEG) 1, MPEG2, MPEG3, MPEG4, and the like.
The NPU is a neural-network (NN) computing processor that processes input information quickly by using a biological neural network structure, for example, by using a transfer mode between neurons of a human brain, and can also learn by itself continuously. Applications such as intelligent cognition of the electronic device 200 can be realized through the NPU, for example: image recognition, face recognition, speech recognition, text understanding, and the like.
In the embodiment of the present application, the NPU or other processor may be configured to perform operations such as analyzing and processing images in the video stored in the electronic device 200.
The external memory interface 220 may be used to connect an external memory card, such as a Micro SD card, to extend the memory capability of the electronic device 200. The external memory card communicates with the processor 210 through the external memory interface 220 to implement a data storage function. For example, files such as music, video, etc. are saved in the external memory card.
Internal memory 221 may be used to store computer-executable program code, which includes instructions. The processor 210 executes various functional applications of the electronic device 200 and data processing by executing instructions stored in the internal memory 221. The internal memory 221 may include a program storage area and a data storage area. The storage program area may store an operating system, and an application program (such as a sound playing function, an image playing function, etc.) required by at least one function. The data storage area may store data (e.g., audio data, phone book, etc.) created during use of the electronic device 200.
In addition, the internal memory 221 may include a high speed random access memory, and may also include a non-volatile memory, such as at least one magnetic disk storage device, a flash memory device, a Universal Flash Storage (UFS), and the like.
Electronic device 200 may implement audio functions via audio module 270, speaker 270A, receiver 270B, microphone 270C, headphone interface 270D, and an application processor, among other things.
Audio module 270 is used to convert digital audio signals to analog audio signal outputs and also to convert analog audio inputs to digital audio signals. Audio module 270 may also be used to encode and decode audio signals. In some embodiments, the audio module 270 may be disposed in the processor 210, or some functional modules of the audio module 270 may be disposed in the processor 210.
The speaker 270A, also called a "horn", is used to convert an audio electrical signal into an acoustic signal. The electronic device 200 may listen to music through the speaker 270A, or listen to a hands-free call, for example, the speaker may play the comparison analysis result provided by the embodiment of the present application.
The receiver 270B, also called "earpiece", is used to convert the electrical audio signal into an acoustic signal. When the electronic apparatus 200 receives a call or voice information, it is possible to receive voice by placing the receiver 270B close to the human ear.
The microphone 270C, also referred to as a "microphone," is used to convert acoustic signals into electrical signals. When making a call or transmitting voice information, the user can input a voice signal to the microphone 270C by speaking near the microphone 270C through the mouth. The electronic device 200 may be provided with at least one microphone 270C. In other embodiments, the electronic device 200 may be provided with two microphones 270C to achieve a noise reduction function in addition to collecting sound signals. In other embodiments, the electronic device 200 may further include three, four or more microphones 270C to collect sound signals, reduce noise, identify sound sources, and implement directional recording functions.
The headphone interface 270D is used to connect wired headphones. The headset interface 270D may be the USB interface 230, or may be an open mobile electronic device platform (OMTP) standard interface of 3.5mm, or a Cellular Telecommunications Industry Association (CTIA) standard interface.
The pressure sensor 280A is used to sense a pressure signal, which can be converted into an electrical signal. In some embodiments, pressure sensor 280A may be disposed on display screen 294. The pressure sensor 280A can be of a wide variety, such as a resistive pressure sensor, an inductive pressure sensor, a capacitive pressure sensor, and the like. The capacitive pressure sensor may be a sensor comprising at least two parallel plates having an electrically conductive material. When a force acts on the pressure sensor 280A, the capacitance between the electrodes changes. The electronic device 200 determines the intensity of the pressure from the change in capacitance. When a touch operation is applied to the display screen 294, the electronic apparatus 200 detects the intensity of the touch operation based on the pressure sensor 280A. The electronic apparatus 200 may also calculate the touched position from the detection signal of the pressure sensor 280A.
In some embodiments, the touch operations that are applied to the same touch position but different touch operation intensities may correspond to different operation instructions. For example: and when the touch operation with the touch operation intensity smaller than the first pressure threshold value acts on the short message application icon, executing an instruction for viewing the short message. And when the touch operation with the touch operation intensity larger than or equal to the first pressure threshold value acts on the short message application icon, executing an instruction of newly building the short message.
The gyro sensor 280B may be used to determine the motion pose of the electronic device 200. In some embodiments, the angular velocity of the electronic device 200 about three axes (i.e., x, y, and z axes) may be determined by the gyroscope sensor 280B. The gyro sensor 280B may be used for photographing anti-shake. For example, when the shutter is pressed, the gyro sensor 280B detects a shake angle of the electronic device 200, calculates a distance to be compensated for by the lens module according to the shake angle, and allows the lens to counteract the shake of the electronic device 200 through a reverse movement, thereby achieving anti-shake. The gyro sensor 280B may also be used for navigation, somatosensory gaming scenes.
The air pressure sensor 280C is used to measure air pressure. In some embodiments, electronic device 200 calculates altitude, aiding in positioning and navigation, from barometric pressure values measured by barometric pressure sensor 280C.
The magnetic sensor 280D includes a hall sensor. The electronic device 200 may detect the opening and closing of the flip holster using the magnetic sensor 280D. In some embodiments, when the electronic device 200 is a flip phone, the electronic device 200 may detect the opening and closing of the flip according to the magnetic sensor 280D. And then according to the opening and closing state of the leather sheath or the opening and closing state of the flip cover, the automatic unlocking of the flip cover is set.
The acceleration sensor 280E may detect the magnitude of acceleration of the electronic device 200 in various directions (typically three axes). The magnitude and direction of gravity may be detected when the electronic device 200 is stationary. The method can also be used for recognizing the posture of the electronic equipment, and is applied to horizontal and vertical screen switching, pedometers and other applications.
A distance sensor 280F for measuring distance. The electronic device 200 may measure the distance by infrared or laser. In some embodiments, taking a picture of a scene, the electronic device 200 may utilize the distance sensor 280F to range for fast focus.
The proximity light sensor 280G may include, for example, a Light Emitting Diode (LED) and a light detector, such as a photodiode. The light emitting diode may be an infrared light emitting diode. The electronic apparatus 200 emits infrared light to the outside through the light emitting diode. The electronic device 200 detects infrared reflected light from nearby objects using a photodiode. When sufficient reflected light is detected, it can be determined that there is an object near the electronic device 200. When insufficient reflected light is detected, the electronic device 200 may determine that there are no objects near the electronic device 200. The electronic device 200 can utilize the proximity sensor 280G to detect that the user holds the electronic device 200 close to the ear for talking, so as to automatically turn off the screen to save power. The proximity light sensor 280G may also be used in a holster mode, a pocket mode automatically unlocks and locks the screen.
The ambient light sensor 280L is used to sense the ambient light level. The electronic device 200 may adaptively adjust the brightness of the display screen 294 based on the perceived ambient light level. The ambient light sensor 280L may also be used to automatically adjust the white balance when taking a picture. The ambient light sensor 280L may also cooperate with the proximity light sensor 280G to detect whether the electronic device 200 is in a pocket to prevent inadvertent touches.
The fingerprint sensor 280H is used to collect a fingerprint. The electronic device 200 may utilize the collected fingerprint characteristics to unlock the fingerprint, access the application lock, photograph the fingerprint, answer an incoming call with the fingerprint, and so on.
The temperature sensor 280J is used to detect temperature. In some embodiments, the electronic device 200 implements a temperature processing strategy using the temperature detected by the temperature sensor 280J. For example, when the temperature reported by the temperature sensor 280J exceeds the threshold, the electronic device 200 performs a reduction in performance of a processor located near the temperature sensor 280J, so as to reduce power consumption and implement thermal protection. In other embodiments, the electronic device 200 heats the battery 242 when the temperature is below another threshold to avoid abnormal shutdown of the electronic device 200 due to low temperature. In other embodiments, when the temperature is below a further threshold, the electronic device 200 performs a boost on the output voltage of the battery 242 to avoid an abnormal shutdown due to low temperature.
The touch sensor 280K is also referred to as a "touch panel". The touch sensor 280K may be disposed on the display screen 294, and the touch sensor 280K and the display screen 294 form a touch screen, which is also called a "touch screen". The touch sensor 280K is used to detect a touch operation applied thereto or nearby. The touch sensor can communicate the detected touch operation to the application processor to determine the touch event type. Visual output related to touch operations may be provided through the display screen 294. In other embodiments, the touch sensor 280K can be disposed on a surface of the electronic device 200 at a different location than the display screen 294.
The bone conduction sensor 280M may acquire a vibration signal. In some embodiments, the bone conduction sensor 280M may acquire a vibration signal of the human vocal part vibrating the bone mass. The bone conduction sensor 280M may also contact the pulse of the human body to receive the blood pressure pulsation signal.
In some embodiments, bone conduction sensor 280M may also be disposed in a headset, integrated into a bone conduction headset. The audio module 270 may analyze a voice signal based on the vibration signal of the bone mass vibrated by the sound part acquired by the bone conduction sensor 280M, so as to implement a voice function. The application processor can analyze heart rate information based on the blood pressure beating signal acquired by the bone conduction sensor 280M, so as to realize the heart rate detection function.
The keys 290 include a power-on key, a volume key, and the like. The keys 290 may be mechanical keys. Or may be touch keys. The electronic apparatus 200 may receive a key input, and generate a key signal input related to user setting and function control of the electronic apparatus 200.
The motor 291 may generate a vibration cue. The motor 291 can be used for both incoming call vibration prompting and touch vibration feedback. For example, touch operations applied to different applications (e.g., photographing, audio playing, etc.) may correspond to different vibration feedback effects. The motor 291 may also respond to different vibration feedback effects for touch operations on different areas of the display 294. Different application scenes (such as time reminding, receiving information, alarm clock, game and the like) can also correspond to different vibration feedback effects. The touch vibration feedback effect may also support customization.
Indicator 292 may be an indicator light that may be used to indicate a state of charge, a change in charge, or may be used to indicate a message, missed call, notification, etc.
The SIM card interface 295 is used to connect a SIM card. The SIM card can be attached to and detached from the electronic apparatus 200 by being inserted into the SIM card interface 295 or being pulled out from the SIM card interface 295. The electronic device 200 may support 1 or N SIM card interfaces, N being a positive integer greater than 1. The SIM card interface 295 may support a Nano SIM card, a Micro SIM card, a SIM card, etc. Multiple cards can be inserted into the same SIM card interface 295 at the same time. The types of the plurality of cards may be the same or different. The SIM card interface 295 may also be compatible with different types of SIM cards. The SIM card interface 295 may also be compatible with external memory cards. The electronic device 200 interacts with the network through the SIM card to implement functions such as communication and data communication. In some embodiments, the electronic device 200 employs esims, namely: an embedded SIM card. The eSIM card can be embedded in the electronic device 200 and cannot be separated from the electronic device 200.
Fig. 3 is a schematic diagram of a software structure of a client according to an embodiment of the present application. The operating system in the client may be an Android (Android) system, a microsoft Windows system (Windows), an apple mobile operating system (iOS) or a hong meng system (Harmony OS), etc. Here, an operating system of a client is taken as an example of a hong kong system.
In some embodiments, the hongmeng system may be divided into four layers, including a kernel layer, a system services layer, a framework layer, and an application layer, with communication between layers through a software interface.
As shown in FIG. 3, the Kernel Layer includes a Kernel Abstraction Layer (KAL) and a driver subsystem. The KAL comprises a plurality of kernels, such as a Kernel Linux Kernel of a Linux system, a Kernel LiteOS of a lightweight Internet of things system and the like. The Driver subsystem may then include a Hardware Driver Foundation (HDF). The hardware driving framework can provide a unified peripheral access capability and a driving development and management framework. The kernel layer of the multi-kernel can select the corresponding kernel to process according to the requirements of the system.
The system service layer is the core capability set of the Hongmon system, and provides services for the application program through the framework layer. The layer may include:
system basic capability subsystem set: and basic capability is provided for operations of running, scheduling, migrating and the like of the distributed application on multiple devices of the Hongmon system. The system can comprise subsystems such as a distributed soft bus, distributed data management, distributed task scheduling, ark multi-language runtime, a public base library, multi-mode input, graphics, security, artificial Intelligence (AI), a user program framework and the like. The ark multi-language runtime provides a system class library based on the C or C + + or JavaScript (JS) multi-language runtime, and may also provide runtime for a Java program (i.e., a part developed by Java language in an application program or framework layer) that is statically made using the ark compiler.
Basic software service subsystem set: providing a common, general-purpose software service for hong meng systems. Subsystems such as event notification, telephony, multimedia, design For X (DFX), MSDP & DV, etc. may be included.
Enhanced software services subsystem set: a hongmeng system is provided with differentiated capability-enhanced software services for different devices. The system can comprise smart screen proprietary business, wearing proprietary business and Internet of Things (IoT) proprietary business subsystems.
Hardware services subsystem set: hardware services are provided for hong Meng systems. Subsystems that may include location services, biometric identification, wearing proprietary hardware services, ioT proprietary hardware services, and the like.
The framework layer provides multi-language User program frameworks (Java, C + +, JS and the like) and capability (Abiliity) frameworks (User Interface, UI) frameworks (including a Java UI framework suitable for Java language and a JS UI framework suitable for JS language) for Application development of Hongmon system, and multi-language framework Application Program Interfaces (API) which are open to the outside by various software and hardware services. The APIs supported by hong meng system devices may also vary depending on the degree of componentized clipping of the system.
The application layer comprises system applications and third-party non-system applications. The system applications may include applications installed by default on electronic devices such as desktops, control bars, settings, telephones, etc. The extended applications may be unnecessary applications that are developed and designed by the manufacturer of the electronic device, such as applications for electronic device housekeeping, change machine migration, notes, weather, and the like. The third party non-system applications may be developed by other vendors, but may run applications in a Hongmon system, such as gaming, navigation, social, or shopping applications.
Applications of the hongmeng system consist of one or more meta programs (FAs) or meta Services (PAs). The FA has a UI interface and provides the capability of interacting with the user. And the PA has no UI interface, so that the capability of background running tasks and uniform data access abstraction are provided. The PA primarily provides support for the FA, for example as a background service to provide computing power, or as a data repository to provide data access capability. The application developed based on FA or PA can realize specific service function, support cross-device scheduling and distribution, and provide consistent and efficient application experience for users.
Hardware mutual assistance and resource sharing can be realized among a plurality of electronic devices operating a Hongmon system through a distributed soft bus, distributed device virtualization, distributed data management and distributed task scheduling.
Fig. 4 shows a schematic flow chart of the QUIC data transmission method provided in the present application, which can be applied to the above-mentioned client and server, by way of example and not by way of limitation.
S301, acquiring an application layer protocol supported by the client.
In some embodiments, the client may obtain an application layer protocol supported by the client by querying the application layer protocol recorded in a protocol stack (protocol stack). The Application Layer Protocol in the Protocol stack may be recorded by static configuration or by means of Application Layer Protocol (ALP) Application start registration. Application layer protocols define how application processes running on different end systems communicate messages to each other. The Application Layer protocol is implemented based on an Application Layer (OSI), which is the seventh Layer in the Open Systems Interconnection (OSI) model and is composed of a plurality of Specific Application Service Elements (SASE) and one or more Common Application Service Elements (CASE). Each SASE may provide specific application services, such as File Transfer Access and Management (FTAM), message Handling System (MHS), virtual Terminal Protocol (VAP), and the like. The CASE may provide a set of common application services, such as an Association Control Service Element (ACSE), a Reliable Transport Service Element (RTSE), a Remote Operations Service Element (ROSE), and the like.
Common application layer protocols include HTTP, RTP/RTCP, domain Name System (DNS), file Transfer Protocol (FTP), simple Mail Transfer Protocol (SMTP), simple Network Management Protocol (SNMP), telnet, routing Information Protocol (RIP), and Network File System (NFS).
The static configuration refers to writing application layer protocols which can be supported by a client in a protocol stack of the QUIC through a configuration instruction when the QUIC is deployed in the client.
And the ALP application starting registration is to actively register the self-used protocol type to a local QUIC protocol stack module when one application in a client supports QUIC as a transport layer protocol, and the QUIC protocol stack module records the corresponding protocol type according to the protocol registration information of the application.
S302, obtaining an application layer protocol supported by the server.
In some embodiments, referring to the example in S301, the server may also obtain the application layer protocol supported by the server by querying the application layer protocol recorded in the protocol stack. The obtaining method is the same as that in S301, and is not described herein.
S303, the client side responds to the first data request, starts handshake to the server side and requests to establish a first QUIC session.
In some implementations, the first data request can be from an application in the client. As an example, when the client responds to a user operation and starts a shopping application, the first data request may be a data request that is sent by the client to a server corresponding to the shopping application and is used for acquiring data in a shopping application start interface. The application-side protocol used by the first data request may be determined based on the type of data acquired by the first data request. For example, HTTP3.0 may be used for text, picture data, and RTP/RTCP may be used for live video data.
In some embodiments, before the client responds to the first data request, a Socket (Socket) connection corresponding to each application layer protocol of the QUIC may be created, and when the client responds to the first data request, a handshake may be initiated to the server according to the Socket connection corresponding to the application layer protocol used by the first data request to request establishment of the first QUIC session.
When handshaking with the server over the Socket connection, a 0-Round-Trip Time (RTT) handshake or a 1-RTT handshake may be used. For example, when 1-RTT handshake is used, the handshake request sent by the client to the server may be an Initial (Initial) packet, where the Initial packet includes a long header (type value 0x 0), a packet length and a packet number field, and may carry a first cryptto frame sent by the client and the server for key exchange and carry an Acknowledgement Character (ACK) in both directions between the client and the server.
As an example, the packet number of the Initial data packet is 0, a cryptto frame of the ClientHello is carried in the packet, and the cryptto frame (type =0x 06) is used for transmitting the encryption handshake message. Can be represented by Initial [0] CRYPTO [ CH ].
S304, the server side responds to the handshake request and returns a handshake message, wherein the handshake message comprises an application layer protocol supported by the server side.
In some embodiments, referring to S303, after the server receives the Initial [0]: CRYPTO [ CH ], an Initial packet, a Handshake (Handshake) packet, and a 0.5-RTT packet of the server are generated according to the COPYTO frame, and these packets are combined into a Handshake packet and sent to the client.
The structure of the Initial data packet of the server is consistent with that of the server, and as an example, the packet number of the Initial data packet of the server is 0, which includes the COPYTO frame of ServerHello, and ACK of Initial [0] CRYPTO [ CH ]. Can be represented by Initial [0] CRYPTO [ SH ] ACK [0].
The Handshake data packet contains a long header (type value is 0x 2), data packet length and packet number fields, and is used for carrying encrypted Handshake messages and ACKs from the server and the client. The encryption handshake message includes an Application Layer Protocol Negotiation (ALPN) field, and the Application Layer Protocol supported by the service end may be recorded in the ALPN field. During recording, a character string corresponding to each application layer protocol may be recorded in an ALPN protocol Identity identification number (ID) registry specified by The Internet Engineering Task Force (IETF). For example, the ALPN protocol ID corresponding to "HTTP3.0 is h3", the ALPN protocol ID corresponding to DNS is "Doq", the ALPN protocol ID corresponding to RTP/RTCP is "qrt", and the like.
As an example, the Handshake packet has a packet number of 0, and carries a CRYPTO frame within the packet. Handshake [0] CRYPTO [ EE, CERT, CV, FIN ] can be used. Here, EE is an Extended Element (EE), and parameters of additional notification can be carried in the EE, for example, ALPN can be carried by the EE and notified in the EE.
CERT refers to a Certificate (CERT), CV refers to a check code, and FIN is an end flag. Among other things, CERT and CV can be used for verification at QUIC session setup.
The 0.5-RTT data packet refers to a 1-RTT data packet only sent from the server to the client, and is called a 0.5-RTT data bar because the data packet is sent from the 0.5 RTT period. The 0.5-RTT packet comprises a reliable data Stream (Stream) frame that may implicitly create the data Stream and carry the Stream data. The implicit creation of a data STREAM refers to, when a client or a server creates a STREAM frame, creating a data STREAM using a STREAM ID indicated in the STREAM frame if the STREAM ID does not exist, and transmitting the STREAM frame through the data STREAM. Can be represented using 1-RTT [0] STREAM [1, "…" ].
S305, the client generates an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server.
In some embodiments, after receiving a Handshake message sent by a server, a client acquires an application layer protocol supported by the server in a Handshake data packet. Then, the client determines the application layer protocols supported by the server and the client simultaneously, and records the application layer protocols to generate an application layer protocol list. For example, if the application layer protocols supported by the client include HTTP3.0, RTP/RTCP and DND, and the application layer protocols supported by the server include HTTP3.0, RTP/RTCP and FTP, the application layer protocol list includes HTTP3.0 and RTP/RTCP.
S306, a first QUIC session is established between the client and the server, and the client sends an application layer protocol list corresponding to the first QUIC session to the server.
In some embodiments, the client generates a corresponding data packet according to data in each data packet of the handshake packet.
For example, from Initial [0] CRYPTO [ SH ] ACK [0], initial [1] ACK [0] can be generated. I.e., an Initial packet with a packet number of 1, including an ACK in which the Initial packet is received.
According to Handshake [0] CRYPTO [ EE, CERT, CV, FIN ], the client can generate Handshake [0] CRYPTO [ FIN ], ACK [0].
The client can obtain the application layer protocol supported by the server according to the EE field in CRYPTO in Handshake [0]. And then, generating an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the local terminal and the application layer protocol supported by the server terminal, wherein the application layer protocol list corresponding to the first QUIC session comprises the application layer protocols simultaneously supported by the client terminal and the server terminal.
It should be noted that the generated application layer protocol list corresponding to the first QUIC session may be recorded in the protocol stacks of the client and the server. Recording the application layer list corresponding to the first QUIC session may be accomplished by establishing the first application layer list in the protocol stack and associating the first QUIC session with the first application layer list. For example, when the first QUIC session and the first application layer list are "h3" and "qrt", it may be recorded that the first QUIC session corresponds to the first application layer list, and "h3" and "qrt" are recorded in the first application layer list.
Alternatively, recording the application layer list corresponding to the first QUIC session may also be accomplished by associating the first QUIC session with an application layer protocol. For example, application layer protocols such as "h3", "qrt", "Doq" are recorded in the protocol stack, and when the first QUIC session and the first application layer list is "h3" and "qrt", the first QUIC session may be associated with "h3" and "qrt".
In one possible implementation, the list of application layer protocols corresponding to the first QUIC session may be based on a protocol including at least two application layer protocols simultaneously supported by the client and the server. For example, when the client does not use the DNS for a long time, the client and the server support "h3", "qrt", and "Doq" at the same time, and the generated application layer list corresponding to the first QUIC session may include only "h3" and "qrt".
In the implementation mode, the application layer protocols which are supported by the client and the server at the same time but are used less frequently are ignored, and only the common application layer protocols are recorded in the application layer protocol list corresponding to the first QUIC session. The storage load of the server side for recording the application layer protocol list can be reduced, and resources are saved.
As an example, the client may generate an ACK for Handshake [0], and write the application layer protocol list corresponding to the first QUIC session into an ALPN field in the Handshake encrypted Handshake message, to obtain Handshake [0]: CRYPTO [ FIN ], ACK [0].
Then, the client can also according to 1-RTT [0]: STREAM [1, "…" ], generating 1-RTT [0]: STREAM [0, ". Said." ], ACK [0], including STREAM frames and STREAM [0, "…" ].
And finally, the client sends the plurality of correspondingly generated data packets to the server as a message. After receiving the message, the server generates a handsake [1]: ACK [0] and 1-RTT [1]: HANDSHAKE _ DONE, STREAM [3, "], ACK [0], confirms completion of the Handshake, and returns ACK of completion of the Handshake to the client, and the first QUIC session is completed.
After the first QUIC session is established, a first data stream is included, and the first data stream is used for carrying data corresponding to the first data request. The data Stream includes a reliable data Stream (Stream) or an unreliable data Stream (Flow), which form the data Stream specifically adopts is determined according to a data type carried by the data Stream, for example, data of a live video needs to ensure reliability, and the data can be transmitted in the form of Stream. In some scenarios, the DNS data does not need to be reliable and can be transmitted in the form of Flow.
Taking Stream as an example, the first data Stream is a client-initiated unidirectional or bidirectional data Stream. Each data stream corresponds to a fixed stream ID, which is a 62-bit number, i.e. 0-2 decimal 62 -1. The lowest order bit (0 x 1) of the stream ID identifies the originator of the stream, the stream ID of the client-originating stream is even (bit set to 0), and the stream ID of the server-originating stream is odd (bit set to 1). The second lower order (0 x 2) of the stream ID is used to distinguish a bidirectional data stream (bit set to 0) from a unidirectional data stream (bit set to 1). Each stream has a stream ID space for recording the corresponding stream ID, each type of stream space records the stream ID from the minimum (i.e., the third lower order bits count from 0), and each type of continuous stream is created with a stream ID that is incremented by a number. For example, a bidirectional data stream initiated by the client starts to record a stream ID from 0x0 (the first three lower bits are all 0), a bidirectional data stream initiated by the server starts to record a stream ID from 0x1 (the first lower bit 1 is 1, the second and third lower bits are 0), a unidirectional data stream initiated by the client starts to record a stream ID from 0x2 (the first and third lower bits are 0, the second lower bit is 1), and a unidirectional data stream initiated by the server starts to record a stream ID from 0x3 (the first and second lower bits are 1, the third lower bit is 0).
In this embodiment, if the first data flow is a unidirectional data flow initiated by the client, its flow ID is 0x2, and if the first data flow is a bidirectional data flow initiated by the client, its flow ID is 0x0.
In some embodiments, when the client initiates a Stream with the server, the first frame sent to the server may be an ALP _ Stream frame, and the ALP _ Stream frame implements implicit creation of the Stream and carries data of the Stream. In this embodiment, the ALP _ STREAM frame is a first type data frame, and the STREAM frame is a second type data frame.
The ALP _ STREAM frame has an ALP field added thereto compared to the STREAM frame. The ALP field is used for carrying an ALP field, which is a structure body used for indicating an application layer protocol corresponding to an ALP _ STREAM frame.
As an example, the ALP field may be:
Figure BDA0003040227420000221
wherein alplength identifies the length of the Alp field. The Alp next Protocol (…) identifies a character string for the application layer Protocol, in which an ALPN Protocol ID corresponding to the application layer Protocol is recorded.
As an example, the format of the ALP _ STREAM frame may be:
Figure BDA0003040227420000222
the ALP _ STREAM frame type field may be allocated by Internet Assigned Numbers Authority (IANA). As an example, a form of 0b00 XXX may be employed, for example, a set of values from 0x20 to 0x27 shown in the above example.
When a STREAM is created using an ALP _ STREAM frame, the application layer protocol used by the STREAM is the protocol declared in the ALP field, and the protocol declared in the ALP field must be the protocol supported by the QUIC session ALPN negotiation (i.e. the application layer protocol in the list of application layer protocols corresponding to the first QUIC session), otherwise the creation of the STREAM fails, generating STREAM _ ALP _ ERROR. Discard the ALP _ STREAM frame or notify to close the STREAM, clear the associated information of the corresponding STREAM ID and application layer protocol.
After the Stream is created, the client and the server associate the Stream ID of the Stream with the application layer protocol corresponding to the Stream. Since the ALP _ STREAM frame and the STREAM frame share the STREAM ID space, the ALP _ STREAM frame and the STREAM frame of the same STREAM ID are frame data under the same STREAM. Therefore, the Stream subsequent message may not use the ALP _ Stream frame, but only use the Stream frame for carrying, and when the client or the service receives the Stream frame, the Stream frame may be sent to the protocol application or module of the corresponding application layer protocol for further analysis processing according to the StreamID in the Stream frame.
In this embodiment, by associating the Stream ID with the application layer protocol, it is achieved that the application layer protocol corresponding to the Stream frame can be accurately obtained even when the ALP _ Stream frame is not used, so that the Stream can also transmit data STREAMs of different application layer protocols in one QUIC session when the Stream frame is subsequently used.
As an example, assuming that StreamID created by the ALP _ STREAM frame is 0x2 and the character string recorded in the ALP field is "h3", it is explained that the application layer protocol carried by StreamID 0x2 is HTTP3.0. And when a STREAM frame with the STREAM ID of 0x2 is subsequently received, sending the STREAM frame to a protocol application or module corresponding to the HTTP3.0 for further analysis and processing.
If the Stream follow-up message is carried using an ALP _ STREAM frame, the protocol declared in its ALP field must be consistent with the application layer protocol identified at the time of Stream creation. If not, the client or the server may generate a "STREAM _ ALP _ ERROR" ERROR indicating an application layer protocol ERROR, and record the STREAM _ ALP _ ERROR in a log.
It should be noted that the STREAM _ ALP _ ERROR may be suppressed, for example, the STREAM _ ALP _ ERROR may be recorded only 5 times within a preset time period, and the manner of suppressing the STREAM _ ALP _ ERROR is not limited in this application.
In still other embodiments, STREAM may also be created using a STREAM frame.
When creating STREAM using the STREAM frame, the application carried by the default STREAM is QUIC session creation, the first application layer protocol in ALPN negotiation, i.e. the first application layer protocol in the application layer protocol list.
As an example, if the sequence of the application layer protocols in the application layer protocol list is "h3", "qrt". When a STREAM with a STREAM ID of 0x3 is created through the STREAM frame, an application layer protocol carried by the STREAM is "h3", and when a STREAM frame with a STREAM ID of 0x3 is subsequently received, the STREAM frame is sent to a protocol application or module corresponding to HTTP3.0 for further parsing.
The lower three bits of the ALP _ STREAM frame type determine the fields present in the frame.
OFF bit (0 x 04) in the ALP _ STREAM frame type to indicate whether the Offset field exists. The Offset field is used to indicate the Offset of the ALP _ STREAM frame. When the OFF bit is set to 1, an Offset field ([ Offset (i) ] in the ALP _ STREAM frame) appears. When the OFF bit is set to 0, the Offset field does not exist. When the Offset field is not present, the STREAM data starts with an Offset of 0 (i.e., the ALP _ STREAM frame contains the first byte of the STREAM, or the end of the STREAM that does not contain data).
LEN bit (0 x 02) in the ALP _ STREAM frame type indicates whether or not a Length field exists. The Length field is used to indicate the Length of STREAM Data (.) in the ALP _ STREAM frame. When the LEN bit is set to 1, a Length field (Length (i) in the ALP _ STREAM frame) appears. When the LEN bit is set to 0, the Length field does not exist. When the Length field does not exist, the Stream Data field is extended to the tail of the message.
The FIN bit (0 x 01) in the ALP _ STREAM frame type is used to indicate the end of the ALP _ STREAM frame identification code STREAM. The final size of Stream is the sum of the offset and the length of this frame.
In some other embodiments, when the client initiates a Flow with the server, the first frame sent to the server may be an ALP _ DATAGRAM frame, and the Flow is implicitly created through the ALP _ DATAGRAM frame and carries data of the Flow. In this embodiment, the ALP _ DATAGRAM frame is a first type data frame, and the DATAGRAM frame is a second type data frame.
The ALP _ DATAGRAM frame has an added ALP field compared to the DATAGRAM frame. The ALP field is the same as in the ALP _ STREAM frame.
As an example, the format of the ALP _ DATAGRAM frame may be:
Figure BDA0003040227420000231
the ALP _ DATAGRAM frame type field may be allocated by IANA. As an example, a form of 0b00X may be employed, for example, a set of values of 0X40 to 0X41 shown in the above example.
When the Flow is created using the ALP _ DATAGRAM frame, the application layer protocol used by the Flow is the protocol declared in the ALP field and the protocol declared in the ALP field must be the protocol supported by the QUIC session ALPN negotiation (i.e., the application layer protocol in the application layer protocol list), otherwise the creation of the Flow fails, generating DATAGRAM _ ALP _ ERROR. Discard the ALP _ DATAGRAM frame or signal to turn off the Flow.
In some possible implementations, according to the protocol standard of the QUIC, the DATAGRAM frame may not include a Flow ID, and correspondingly, the ALP _ DATAGRAM frame may not include a Flow ID, in which case, when subsequent data is transmitted via the Flow, the ALP _ DATAGRAM frame needs to be used to ensure that the application layer protocol used for the transmitted data can be accurately acquired. The messages under each Flow are carried by the same type of frame, that is, the messages of the same Flow are carried by the ALP _ DATAGRAM frame or carried by the DATAGRAM frame.
In other possible implementations, the DATAGRAM frame may contain a Flow ID. In this case, after the Flow is created, the client and the server may associate the Flow ID of the Flow with the application layer protocol corresponding to the Flow. Since the ALP _ DATAGRAM frame and DATAGRAM frame share the Flow ID space, it can be determined that the ALP _ DATAGRAM frame and DATAGRAM frame using the same Flow ID are both frame data under the same Flow. Therefore, the subsequent Flow message may not use the ALP _ DATAGRAM frame, but only use the DATAGRAM frame for carrying, and when the client or the server receives the DATAGRAM frame, the subsequent Flow message may send the DATAGRAM frame to the protocol application or module corresponding to the application layer protocol for further parsing according to the FlowID in the DATAGRAM frame.
In this implementation, by associating the Flow ID with the application layer protocol, it is achieved that the application layer protocol corresponding to the DATAGRAM frame can be accurately obtained even when the ALP _ DATAGRAM frame is not used, so that data streams of different application layer protocols can be transmitted under one QUIC session by using the DATAGRAM frame.
As an example, assuming that the FlowID created by the ALP _ DATAGRAM frame is 0x2 and the character string recorded in the ALP field is "h3", the application layer protocol of the Flow bearer having a FlowID of 0x2 is described as HTTP3.0. And when a DATAGRAM frame with the flow ID of 0x2 is subsequently received, sending the DATAGRAM frame to a protocol application or module corresponding to HTTP3.0 for further analysis processing.
If the Flow follow-up message is carried using an ALP _ DATAGRAM frame, the protocol declared in the ALP field must be consistent with the application layer protocol identified at the time of Flow creation. If not, the client or the server may generate a "DATAGRAM _ ALP _ ERROR" ERROR indicating an application layer protocol ERROR and record the DATAGRAM _ ALP _ ERROR in a log.
It should be noted that the DATAGRAM _ ALP _ ERROR may be suppressed, for example, the DATAGRAM _ ALP _ ERROR may be recorded only 5 times within a preset time period, and the manner of suppressing the DATAGRAM _ ALP _ ERROR is not limited in this application.
In still other embodiments, a Flow may also be created using a DATAGRAM frame.
When creating a Flow using DATAGRAM frames, the application carried by the default Flow is QUIC session creation, the first application layer protocol in ALPN negotiation, i.e. the first application layer protocol in the application layer protocol list.
As an example, if the sequence of the application layer protocols in the application layer protocol list is "h3", "qrt". When a DATAGRAM with a Flow ID of 0x3 is created through the DATAGRAM frame, an application layer protocol borne by the DATAGRAM is "h3", and when the DATAGRAM frame with a Flow ID of 0x3 is subsequently received, the DATAGRAM frame is sent to a protocol application or module corresponding to HTTP3.0 for further parsing.
The lowest bit of the ALP _ DATAGRAM frame type determines the fields present in the frame. The LEN bit (0 x 01) in the ALP _ DATAGRAM frame type is used to indicate whether a Length field exists. The Length field is used to indicate the Length of DATAGRAM Data (.) in the ALP _ DATAGRAM frame. When the LEN bit is set to 1, a Length field (Length (i) in the ALP _ DATAGRAM frame) appears. When the LEN bit is set to 0, the Length field does not exist. When the Length field does not exist, the Datagram Data field is extended to the tail of the message.
In some embodiments, after the QUIC session is established, the server and the client may also dynamically negotiate the application layer protocol of the bearer.
In one possible embodiment, a new extension frame may be created to implement the application layer protocol for the dynamic negotiation bearer. Such as creating a first notification frame for notifying the client or server to add at least one application layer protocol to a locally stored list of application layer protocols.
Or creating a second notification frame for notifying the client or the server to add at least one application layer protocol to the locally stored application layer protocol list.
In this embodiment, the first notification frame may be a NEW _ ALPN frame, for example, after at least one application layer protocol is added to an application layer protocol list in a local QUIC protocol stack of the client, the NEW _ ALPN frame may be sent to the server to notify that the application layer protocols supported by the server are increased.
The second notification frame may be a REMOVE _ ALPN frame, for example, notifying the server that the application layer protocols supported by the client are reduced by sending the REMOVE _ ALPN frame to the server after removing at least one application layer protocol in the list of application layer protocols in the QUIC protocol stack local to the client.
It should be noted that, the client and the server also record the application layer protocols that the local terminal can support.
In some embodiments, when at least one application layer protocol is added to the application layer protocol list, if the added at least one application layer protocol is an application layer protocol not supported by the home terminal, the application layer protocol may be further recorded as an application layer protocol that the home terminal can support. When at least one application layer protocol in the application layer protocol list is removed, the application layer protocol can be removed from the application layer protocols which can be supported by the local terminal.
As an example, the format of the NEW _ ALPN frame may be:
Figure BDA0003040227420000251
therein, the type field of the NEW _ ALPN frame may be allocated by IANA, and is denoted by "TBD 1" in the example.
The NEW _ ALPN frame may include two fields, i.e., a Length (i) field and an alplist (i) field, the Length (i) field indicating the Length of the NEW _ ALPN frame, and the alplist (i) field may record at least one application layer protocol added to the application layer protocol list. The application layer protocol recorded in alplist (i) may be implemented by recording ALPN protocol ID corresponding to the application layer protocol.
And the format of the REMOVE _ ALPN frame may be:
Figure BDA0003040227420000252
wherein the type field of the REMOVE _ ALPN frame may be allocated by IANA, in the example denoted by "TBD 2".
The REMOVE _ ALPN frame may include two fields, namely a [ Length (i) ] field for indicating the Length of the REMOVE _ ALPN frame and an [ alplist (i) ] field in which at least one application layer protocol removed from the application layer protocol list is recorded. The recording of the application layer protocol in alplist (i) may be implemented by recording an ALPN protocol ID corresponding to the application layer protocol.
It should be noted that, when both ends of the QUIC protocol REMOVE the application layer protocol through the REMOVE _ ALPN frame, if the receiver finds that there is a corresponding Stream or Flow, it should actively withdraw the corresponding Stream or Flow. And subsequently receiving a Stream frame or an ALP _ SREAM frame corresponding to the Stream ID, or receiving a DATAGRAM frame or an ALP _ DATAGRAM frame corresponding to the Flow ID, discarding the corresponding frame and generating a corresponding error code, wherein the error code can also inhibit the generated frequency. In this embodiment, the manner of suppressing the generation frequency may refer to a manner of suppressing STREAM _ ALP _ ERROR or suppressing DATAGRAM _ ALP _ ERROR.
It should be noted that the NEW _ ALPN or REMOVE _ ALPN frame is typically advertised to the client by the server of the QUIC, but the client of the QUIC is also allowed to notify the server, which is not limited in this application.
In other embodiments, other extended frame implementations may also be used, for example, the correspondence between the Stream ID or the Flow ID and the application layer protocol (application layer protocol not recorded in the application layer protocol list) is recorded by the extended frame. And after the receiver receives the extended frame, recording the corresponding relation. And when the Stream or DATAGRAM frame of the Stream ID or Flow ID is received again, sending the data frame to a corresponding protocol application or module for further analysis according to the recorded corresponding relation.
S307, the client responds to the second data request and acquires a second application layer protocol used by the second data request.
In some embodiments, the second data request may be generated by the client in response to a user operation, and the second data request is the same as an Internet Protocol (ip) address of a destination of the first data request. The second application layer protocol may be the same as or different from the first application layer protocol, and is not limited herein.
For example, referring to S303, when the client receives an operation instruction of the user and indicates to open the video live broadcast in the shopping application, the shopping application generates a second data request in response to the operation instruction of the user and requests the live broadcast video resource from the server. The live video resource may be transported using the RTP protocol, i.e. the second application layer protocol may be the RTP protocol.
S308, the client determines whether a second application layer protocol used by the second data request is in an application layer protocol list corresponding to the first QUIC session, if the second application layer protocol is in the application layer protocol list corresponding to the first QUIC session, S310 is executed, otherwise S309 is executed.
S309, the client establishes a second QUIC session with the server.
In some embodiments, referring to the example in S307, if the RTP protocol is not in the application layer protocol list corresponding to the first QUIC session, the second data request cannot multiplex the first QUIC session, and a re-handshake is required to establish the second QUIC session to carry the RTP protocol data corresponding to the second data request.
S310, the client establishes a second data flow in the first QUIC session.
In some embodiments, referring to the example in S307, if the RTP protocol is in the application layer protocol list corresponding to the first QUIC session, the second data request may multiplex the first QUIC session, and the client generates and sends an ALP _ STREAM frame to the server. The ALP _ STREAM frame indicates that a new STREAM (i.e. a second data STREAM) is generated between the client and the server, the STREAM ID of the STREAM is associated with the RTP protocol, and when the STREAM frame of the STREAM ID is received by the server or the client, the received STREAM frame is sent to a protocol application or module corresponding to the RTP for further parsing.
In still other embodiments, the number of data flows in each QUIC session in the protocol stack may be recorded, and changes in the number of data flows may be recorded as the data flows are generated or destroyed under the QUIC session. When the number of the data streams in the QUIC session is 0 and no new data stream is added in the QUIC session after a preset time length, the QUIC session can be disconnected and no link is kept.
By way of example, referring to the examples in S303 and S307, when the first data flow is established after the first QUIC session is established, the number of data flows in the first QUIC session is 1. When the second data flow is established under the first QUIC session, 1 is added to the number of data flows in the first QUIC session, i.e., the number of data flows in the first QUIC session is 2.
After the data transmission in the first data STREAM is completed (the FIN bit in the received STREAM frame is 1), the first data STREAM may be destroyed, and the number of data STREAMs in the first QUIC session becomes 1. When the data in the second data flow is also transmitted, the number of data flows in the first QUIC session becomes 0 after the second data flow is destroyed. If the number of data streams in the first QUIC session is 0, which is maintained for more than 60 seconds, the first QUIC session may be disconnected.
Fig. 5 shows a schematic flow chart of another QUIC data transmission method provided by the present application, and in the flow chart shown in fig. 5, when the second application layer protocol is not in the application layer protocol list, the second application layer protocol may be added to the application layer protocol list, and then the first QUIC session is multiplexed to transmit data corresponding to the second data request.
Referring to fig. 5, since S301 to S307 of the data transmission method in the present embodiment are the same as those in the above embodiments, they are not described herein again. The method in the present embodiment will be described starting from S308.
S308, the client determines whether a second application layer protocol used by the second data request is in an application layer protocol list corresponding to the first QUIC session, if the second application layer protocol is in the application layer protocol list corresponding to the first QUIC session, S310 is executed, otherwise S311 is executed.
S310, the client establishes a second data stream in the first QUIC session.
In this embodiment, S310 is the same as the above embodiments, and is not described herein.
S311, the client adds the second application layer protocol to the application layer protocol list corresponding to the first QUIC session.
In the embodiment, when the second application layer protocol is not in the application layer protocol list corresponding to the first QUIC session, the second QUIC session between the client and the server is not established, and the second application layer protocol is added to the application layer protocol list corresponding to the first QUIC session stored locally at the client. For example, if the current application layer protocol list local to the client includes "h3" and "qrt", and the second application layer protocol is DNS, "Doq" may be written into the application layer protocol list local to the client, and the updated application layer protocol list local to the client includes "h3", "qrt" and "Doq".
S312, after the client sends an application layer protocol list updating instruction corresponding to the first QUIC session to the server, S310 is executed.
S313, the server side adds the second application layer protocol to the application layer protocol list corresponding to the first QUIC session according to the application layer protocol list updating instruction corresponding to the first QUIC session.
In some embodiments, after the client updates the application layer protocol list corresponding to the local first QUIC session, the client may send a NEW _ APLN frame shown in S306 to the server, where an [ alplist (i) ] field in the frame includes the second application layer protocol. Referring to the example of S311, the [ alplist (i) ] field in the frame may include "Doq".
After receiving the NEW _ APLN frame, the server writes 'Doq' into the application layer protocol list corresponding to the first QUIC session stored locally at the server, and the application layer protocol list corresponding to the first QUIC session locally at the server after updating includes 'h 3', 'qrt' and 'Doq'.
It should be noted that, although shown in the drawings of the present application, S311, S312, and S313 are sequential steps. However, S311, S312, and S313 may be deployed separately for execution. For example, S311 may be executed after S307, and S312 needs to be executed after S311, but the remaining steps may be inserted with S311. Similarly, S313 needs to be performed after S312, but the rest of the steps may be inserted with S313.
As an example, the order of the steps of the QUIC data transmission method may be: s301, S302, S303, S304, S305, S306, S307, S311, S312, S308, S313, S310. Alternatively, the order of the steps of the QUIC data transmission method may also be: s301, S302, S303, S304, S305, S306, S307, S311, S308, S312, S313, S310, which is not limited herein.
In this case, the client and the server may both support the second application layer protocol by dynamically negotiating the application layer protocol for loading, and the client may then execute S310, to establish the second data stream in the first QUIC session, for transmitting the data corresponding to the second data request.
In this embodiment, when the second application layer protocol is not in the application layer protocol list corresponding to the first QUIC session, the client may also multiplex the first QUIC session to transmit data corresponding to the second data request, which increases the application scenarios of the data transmission method, further reduces the data transmission delay, and improves the link establishment efficiency.
Fig. 6 shows a schematic flow chart of another QUIC data transmission method provided by the present application, and in the flow chart shown in fig. 6, a second data request is initiated by a server.
Referring to fig. 6, the method includes:
s401, acquiring an application layer protocol supported by the client.
S402, acquiring an application layer protocol supported by the server.
S403, the client side responds to the first data request, starts handshake to the server side and requests to establish a first QUIC session.
S404, the server side responds to the session establishment request and returns a handshake request, wherein the handshake request comprises an application layer protocol supported by the server side.
S405, the client generates an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server.
S406, a first QUIC session is established between the client and the server, and the client sends an application layer protocol list corresponding to the first QUIC session to the server.
In this embodiment, the implementation manners of S401 to S406 are the same as those of S301 to S306, and are not described herein again.
S407, the server responds to the second data request, and acquires a second application layer protocol used by the second data request.
In some embodiments, the second data request may be initiated by the server to the client based on the requirements of the application. For example, when the server dynamically pushes a broadcast or unicast notification or message (e.g., a live video scene) to the client, the server initiates a second data request to the client.
For example, referring to S303, when the server needs to push a live video to the client based on the application requirement, the server may generate a second data request to request the client to transmit a live video resource. Since the live video resource may be transported using the RTP protocol, i.e. the second application layer protocol may be the RTP protocol.
S408, the server determines whether a second application layer protocol used by the second data request is in an application layer protocol list corresponding to the first QUIC session, if the second application layer protocol is in the application layer protocol list corresponding to the first QUIC session, S410 is executed, otherwise S409 is executed.
And S409, the server establishes a second QUIC session with the client.
In some embodiments, referring to the example in S407, if the RTP protocol is not in the application layer protocol list corresponding to the first QUIC session, the second data request cannot multiplex the first QUIC session, and a re-handshake with the client is required to establish the second QUIC session to carry the RTP protocol data corresponding to the second data request.
S410, the server establishes a second data flow in the first QUIC session.
In some embodiments, referring to the example in S407, if the RTP protocol is in the application layer protocol list corresponding to the first QUIC session, the second data request may multiplex the first QUIC session, and the service generates and sends an ALP _ STREAM frame to the client. The ALP _ STREAM frame indicates that a new STREAM (i.e. a second data STREAM) is generated between the server and the client, the STREAM ID of the STREAM is associated with the RTP protocol, and when the STREAM frame of the STREAM ID is received by the server or the client, the received STREAM frame is sent to a protocol application or module corresponding to the RTP for further parsing.
In still other embodiments, the number of data flows in each QUIC session in the protocol stack may be recorded, and changes in the number of data flows may be recorded as data flows are generated or destroyed under the QUIC session. When the number of the data streams in the QUIC session is 0 and no new data stream is added in the QUIC session after a preset time length, the QUIC session can be disconnected and no link is kept. For a specific implementation, reference may be made to the example in S310, which is not described herein again.
Fig. 7 shows a schematic flow chart of another data transmission method provided by the present application. In the flow shown in fig. 7, a step is shown in which when the server initiates the second data request and the second application layer protocol is not in the application layer protocol list, the second application layer protocol is added to the application layer protocol list, and then the first QUIC session is multiplexed to transmit data corresponding to the second data request.
Referring to fig. 7, since S401 to S407 of the data transmission method in the present embodiment are the same as those in the above embodiments, they are not described herein again. The method in the present embodiment will be described starting from S408.
S408, the server determines whether a second application layer protocol used by the second data request is in an application layer protocol list corresponding to the first QUIC session, if the second application layer protocol is in the application layer protocol list corresponding to the first QUIC session, S310 is executed, otherwise S311 is executed.
S410, the server side establishes a second data flow in the first QUIC session.
In this embodiment, S410 is the same as the above embodiments, and is not described herein.
S411, the server adds the second application layer protocol to the application layer protocol list corresponding to the first QUIC session.
In the embodiment, when the second application layer protocol is not in the application layer protocol list corresponding to the first QUIC session, the server does not establish the second QUIC session with the client, and the second application layer protocol is added to the application layer protocol list corresponding to the first QUIC session stored locally in the server. For example, if the current application layer protocol list local to the server includes "h3" and "qrt", and the second application layer protocol is DNS, "Doq" may be written into the application layer protocol list local to the server, and the updated application layer protocol list local to the server includes "h3", "qrt" and "Doq".
S412, after the client sends the application layer protocol list updating instruction to the server, S410 is executed.
And S413, the server adds the second application layer protocol to the application layer protocol list according to the application layer protocol list updating instruction.
In some embodiments, after the server updates the application layer protocol list corresponding to the local first QUIC session, the server may send a NEW _ APLN frame shown in S306 to the client, where an [ alplist (i) ] field in the frame includes the second application layer protocol. Referring to the example of S311, the [ alplist (i) ] field in the frame may include "Doq".
After receiving the NEW _ APLN frame, the client writes 'Doq' into an application layer protocol list corresponding to the first QUIC session stored locally at the client, and the updated application layer protocol list locally at the client includes 'h 3', 'qrt' and 'Doq'.
It should be noted that, although shown in the drawings of the present application, S411, S412, and S413 are consecutive steps. However, S411, S412, and S413 may be deployed for execution separately. For example, S411 may be performed after S407, and S412 needs to be performed after S411, but the remaining steps may be inserted with S411. Similarly, S413 needs to be performed after S412, but the remaining steps may be inserted with S413.
As an example, the order of the steps of the QUIC data transmission method may be: s401, S402, S403, S404, S405, S406, S407, S411, S412, S408, S413, S410. Alternatively, the order of the steps of the QUIC data transmission method may also be: s401, S402, S403, S404, S405, S406, S407, S411, S408, S412, S413, S410, without limitation.
In this case, the server and the client may both support the second application layer protocol by dynamically negotiating the loaded application layer protocol, and the server may then execute S410, i.e., establish the second data stream in the first QUIC session for transmitting the data corresponding to the second data request.
In this case, both the server and the client may support the second application layer protocol, and the server then performs S410, that is, the server may establish the second data stream in the first QUIC session for transmitting the data corresponding to the second data request.
In this embodiment, when the second application layer protocol is not in the application layer protocol list corresponding to the first QUIC session, the server may also multiplex the first QUIC session to transmit data corresponding to the second data request, which increases the application scenarios of the data transmission method, further reduces the data transmission delay, and improves the link establishment efficiency.
Fig. 8 shows a data flow diagram when the data transmission method provided in the present application is used, and here, an application of the data transmission method is described according to the scenario shown in fig. 8.
In the scenario shown in fig. 8, the HTTP3.0 session request and the RTP session request multiplex QUIC session are taken as an example for explanation. The client is connected with the Internet through a wireless network, the server is connected with the Internet through the Ethernet, and then communication connection between the client and the server is achieved.
When the QUIC server starts the service of an Application (APP) 1, the monitoring of the QUIC server is triggered and started, and an Application layer protocol supported by the server is acquired, in the scenario, the server supports HTTP3.0 and RTP.
When receiving user operation on the QUIC client, instructing the QUIC client to start APP1, and accessing World Wide Web (Web) service on the QUIC server by using HTTP3.0 to browse a webpage. A module corresponding to APP1 creates a Socket Application Program Interface (API) of HTTP3.0. The Socket API triggers a QUIC protocol module to initiate and create a QUIC session to a QUIC server through a local protocol stack of a client, handshake negotiation is started, in the handshake process, the two parties also mutually notify supported application layer protocols, an application layer protocol list is determined, and in the scene, the application layer protocol list indicates that the QUIC session supports HTTP3.0 and RTP. Upon successful handshake, a QUIC Session (Session) 51 is generated.
The QUIC client and the QUIC server continue to complete the handshaking of the HTTP3.0 protocol session HTTP3.0 data Stream 52 on the basis of the QUIC session 51 (i.e., create a Stream for carrying HTTP3.0 data).
The server may encapsulate a setringgs frame of the first HTTP3.0 of the HTTP3.0 session establishment (the setringgs frame is used to transmit HTTP3.0 configuration parameters that affect the communication mode between the client and the server) into a Stream Data field of an ALP _ Stream frame applying for a Stream ID of 4, where a protocol string in an ALP field in the ALP _ Stream frame is "h3". After receiving the ALP _ STREAM frame, the QUIC server creates a STREAM with a STREAM ID of 4, and caches the corresponding relation between the STREAM ID of the STREAM and HTTP3.0. The server sends the SETTINGS frame of the HTTP3.0 analyzed from the ALP _ STREAM frame to the HTTP3.0 protocol module of the server for processing.
And when the QUIC server side subsequently receives a Stream frame with the Stream ID of 4, the load data obtained after analysis is sent to an HTTP3.0 protocol module of the server side for processing according to the corresponding relation between the Stream ID and the HTTP3.0. The implementation of the QUIC client and the QUIC server completes the handshaking and subsequent resource access of the HTTP3.0 data stream 52 based on the QUIC session 51.
When the QUIC client receives a user instruction, the APP1 is instructed to start live video, a module corresponding to the APP1 creates a Socket interface of the RTP, the Socket API checks that the QUIC client has a QUIC session 51 supporting the RTP protocol, and the QUIC session 51 can bear an RTP data stream 53 of the RTP protocol session.
So the client no longer triggers a new QUIC session handshake, but directly multiplexes the QUIC session 51, performing a handshake of the RTP data Stream 53 based on the QUIC session 51 (i.e. creating a Stream for carrying RTP or RTCP data).
The server can encapsulate the first RTP or RTCP message into the Stream Data field of the ALP _ Stream frame with the application Stream ID of 8, the protocol string in the ALP field in the ALP _ Stream frame is 'qrt', and the QUIC server creates a Stream with the Stream ID of 8 after receiving the ALP _ Stream frame, and buffers the corresponding relationship between the Stream ID of the Stream and the RTP.
Then, the server sends the session handshake message of RTP or RTCP analyzed from the ALP _ STREAM frame to the RTP/RTCP protocol module of the server for processing.
And when the QUIC server side subsequently receives the Stream frame with the Stream ID of 8, the load data obtained after analysis is sent to an RTP/RTCP protocol module of the QUIC server side for processing according to the corresponding relation between the Stream ID and the RTP. The QUIC client and the QUIC server are implemented to complete RTP/RTCP handshaking and subsequent resource access based on the QUIC session 51.
It should be understood that, the sequence numbers of the steps in the foregoing embodiments do not imply an execution sequence, and the execution sequence of each process should be determined by its function and inherent logic, and should not constitute any limitation to the implementation process of the embodiments of the present application.
Fig. 9 shows a block diagram of the QUIC data transmission device provided in the embodiment of the present application, corresponding to the QUIC data transmission method applied to the client provided in the above embodiment, and for convenience of explanation, only the parts related to the embodiment of the present application are shown.
Referring to fig. 9, the apparatus is applied to a client, and includes:
the determining module 61 is configured to determine a second application layer protocol used by the second data request when data transmission is performed between the second data request and the server.
The establishing module 62 is configured to establish a second data stream in the first QUIC session when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session, where the second data stream is used to carry data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session includes application layer protocols supported by both the client and the server.
In some embodiments, the establishing module 62 is specifically configured to generate a first type data frame in response to the second data request, where the first type data frame includes the second application layer protocol, the identification information of the second data stream, and data information corresponding to the second data request, and record a corresponding relationship between the identification information of the second data stream and the second application layer protocol. And sending the first type of data frame to the server, and indicating the server to establish a second data stream according to a second application layer protocol in the first type of data frame.
FIG. 10 is a block diagram of another QUIC data transmission device according to the embodiment of the present application.
In some embodiments, referring to fig. 10, the apparatus further includes a receiving module 63 configured to receive the first type data frame from the server. The apparatus further includes a processing module 64, configured to send the first type of data frame to a processing module corresponding to the second application layer protocol for processing when it is determined that a correspondence between the identification information of the second data stream in the first type of data frame and the second application layer protocol is consistent with a correspondence between the identification information of the second data stream recorded by the client and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The receiving module 63 is further configured to receive the second type data frame from the server. The processing module 64 is further configured to send the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the correspondence between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The establishing module 62 is specifically configured to determine that the second application layer protocol is a first application layer protocol in an application layer protocol list corresponding to the first QUIC session. The client responds to the second data request to generate a second type data frame, and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the client sends a second type data frame to the server, instructs the server to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
FIG. 11 shows a block diagram of another QUIC data transmission device provided in the embodiment of the present application.
In some embodiments, referring to FIG. 11, the apparatus further includes a recording module 65 for recording the number of references of the first QUIC session after the first QUIC session is established, the number of references being the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the recording module 65 is further configured to close the first QUIC session when the number of references is reduced to zero and the number of references does not change after a preset time period.
In some embodiments, the establishing module 62 is further configured to establish a first QUIC session with the server in response to the first data request, and generate an application layer protocol list corresponding to the first QUIC session. And establishing a first data stream in the first QUIC session, wherein the first data stream is used for carrying data requested to be transmitted in a first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session.
In some embodiments, the establishing module 62 is specifically configured to send, to the server, a session handshake request for establishing the first QUIC session in response to the first data request. The client receives a handshake message from the server, the handshake message is generated by the server according to the session handshake request, and the handshake message includes an application layer protocol supported by the server. And generating an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server. And the client establishes a first QUIC session according to the handshake message, and sends an application layer protocol list corresponding to the first QUIC session and a confirmation message established by the first QUIC session to the server through the first QUCI session.
FIG. 12 is a block diagram of another QUIC data transmission device according to the embodiment of the present application.
In some embodiments, the receiving module 63 is further configured to receive a first notification frame or a second notification frame from the server, where the first notification frame is used to instruct the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client, and the second notification frame is used to instruct the client to remove at least one application layer protocol stored in the application layer protocol list corresponding to the first QUIC session in the client. Referring to fig. 12, the apparatus further includes an updating module 66 for updating the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the updating module 66 is further configured to update the application layer protocol list stored in the client in response to an update instruction of the application layer protocol list. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the client, generating a first notification frame, wherein the first notification frame is used for indicating the server to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the server. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the client is removed, generating a second notification frame, wherein the second notification frame is used for indicating the server to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the server. And sending the first notification frame or the second notification frame to the server.
In some embodiments, the update module 66 is further configured to generate an update instruction for the list of application layer protocols when the second application layer protocol is not an application layer protocol in the list of application layer protocols corresponding to the first QUIC session, the update instruction being configured to write the second application layer protocol to the list of application layer protocols corresponding to the first QUIC session stored in the client. And responding to the updating instruction and generating a first notification frame. The establishing module 62 is further configured to establish a second data stream with the server in the first QUIC session after the client sends the first notification frame to the server through the first QUIC session.
Fig. 13 shows a block diagram of the QUIC data transmission device provided in the embodiment of the present application, corresponding to the QUIC data transmission method applied to the server provided in the above embodiment, and for convenience of explanation, only the parts related to the embodiment of the present application are shown.
Referring to fig. 13, the apparatus is applied to a server, and includes:
the determining module 71 is configured to determine a second application layer protocol used by the second data request when data transmission is performed between the second data request and the client.
The establishing module 72 is configured to, when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session, establish a second data stream in the first QUIC session, where the second data stream is used to carry data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session includes application layer protocols supported by both the client and the server.
In some embodiments, the establishing module 72 is specifically configured to generate a first type of data frame in response to the second data request, where the first type of data frame includes the second application layer protocol, the identification information of the second data stream, and data information corresponding to the second data request, and record a corresponding relationship between the identification information of the second data stream and the second application layer protocol. And the server side sends the first type of data frames to the client side and instructs the client side to establish a second data stream according to a second application layer protocol in the first type of data frames.
FIG. 14 is a block diagram of another QUIC data transmission device according to the embodiment of the present application.
In some embodiments, referring to fig. 14, the apparatus further includes a receiving module 73 for receiving the first type data frame from the client. The apparatus further includes a processing module 74, configured to send the first type of data frame to a processing module corresponding to the second application layer protocol for processing when it is determined that the correspondence between the identification information of the second data stream in the first type of data frame and the second application layer protocol is consistent with the correspondence between the identification information of the second data stream recorded by the server and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The receiving module 73 is further configured to receive the second type data frame from the client. The processing module 74 is further configured to send the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relationship between the identification information of the second data stream and the second application layer protocol.
In some embodiments, the second type data frame includes identification information of the second data stream and data information corresponding to the second data request.
The establishing module 72 is specifically configured to determine that the second application layer protocol is a first application layer protocol in an application layer protocol list corresponding to the first QUIC session. The server side responds to the second data request to generate a second type data frame, and records the corresponding relation between the identification information of the second data stream and the second application layer protocol. And the server side sends a second type data frame to the client side, instructs the client side to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
FIG. 15 is a block diagram of another QUIC data transmission device according to the embodiment of the present application.
In some embodiments, the apparatus further includes a recording module 75 for recording the number of references of the first QUIC session after the first QUIC session is established, where the number of references is the number of data streams in the first QUIC session. When a data stream is established in the first QUIC session, the number of references is incremented by one. When one data flow in the first QUIC session is closed, the number of references is reduced by one.
In some embodiments, the recording module 75 is further configured to close the first QUIC session when the number of references is reduced to zero and the number of references does not change after a preset time period.
In some embodiments, the establishing module 72 is further configured to establish the first QUIC session between the server and the client. The server side responds to a first data request from a client side, and establishes a first data flow between the server side and the client side, wherein the first data flow is used for bearing data requested to be transmitted in the first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to a first QUIC session.
In some embodiments, the establishing module 72 is specifically configured to receive a session handshake request from the client, where the session handshake request is used to instruct the server and the client to establish the first QUIC session. And generating a handshake message according to the session handshake request and sending the handshake message to the client, wherein the handshake message comprises an application layer protocol supported by the server. And receiving an application layer protocol list from the client and a confirmation message of the first QUIC session establishment. And the server side confirms to establish the first QUIC session according to the confirmation message.
FIG. 16 is a block diagram illustrating another QUIC data transmission device according to an embodiment of the present application.
In some embodiments, the receiving module 73 is further configured to receive a first notification frame or a second notification frame from the client, where the first notification frame is used to instruct the server to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the server, and the second notification frame is used to instruct the server to remove at least one application layer protocol stored in the application layer protocol list corresponding to the first QUIC session in the server. Referring to fig. 16, the apparatus further includes an updating module 76 for updating the application layer protocol list according to the received first notification frame or the second notification frame.
In some embodiments, the updating module 76 is further configured to update the application layer protocol list stored in the server in response to an update instruction of the application layer protocol list. And when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the server, generating a first notification frame, wherein the first notification frame is used for indicating the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client. And when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the server is removed, generating a second notification frame, wherein the second notification frame is used for indicating the client to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the client. And the server side sends the first notification frame or the second notification frame to the client side.
In some embodiments, the updating module 76 is further configured to, when the second application layer protocol is not an application layer protocol in the application layer protocol list corresponding to the first QUIC session, generate an update instruction of the application layer protocol list by the server, where the update instruction is used to write the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the server. And the server responds to the updating instruction and generates a first notification frame. The establishing module 72 is further configured to establish a second data stream with the client in the first QUIC session after the server sends the first notification frame to the client through the first QUIC session.
It should be noted that, because the contents of information interaction, execution process, and the like between the modules are based on the same concept as that of the embodiment of the method of the present application, specific functions and technical effects thereof may be specifically referred to a part of the embodiment of the method, and details are not described here.
It will be apparent to those skilled in the art that, for convenience and brevity of description, only the above-mentioned division of the functional units and modules is illustrated, and in practical applications, the above-mentioned function distribution may be performed by different functional units and modules according to needs, that is, the internal structure of the apparatus is divided into different functional units or modules to perform all or part of the above-mentioned functions. Each functional unit and module in the embodiments may be integrated in one processing unit, or each unit may exist alone physically, or two or more units are integrated in one unit, and the integrated unit may be implemented in a form of hardware, or in a form of software functional unit. In addition, specific names of the functional units and modules are only for convenience of distinguishing from each other, and are not used for limiting the protection scope of the present application. The specific working processes of the units and modules in the system may refer to the corresponding processes in the foregoing method embodiments, and are not described herein again.
Fig. 17 is a schematic structural diagram of a QUIC client according to an embodiment of the present application. As shown in fig. 17, the QUIC client 800 of this embodiment includes: at least one processor 801 (only one shown in fig. 17), a memory 802, and a computer program 803 stored in the memory 802 and executable on the at least one processor 801, the processor 801 implementing the steps in the above-described embodiments of the QUIC data transmission method applied to the client when executing the computer program 803.
The QUIC client 800 may be a server, such as a desktop server, rack server, blade server, or other computing device. The electronic device may include, but is not limited to, a processor 801, a memory 802. Those skilled in the art will appreciate that fig. 17 is merely an example of a QUIC client 800 and does not constitute a limitation of the QUIC client 800 and may include more or less components than shown, or some components in combination, or different components, such as input output devices, network access devices, etc.
The Processor 801 may be a Central Processing Unit (CPU), and the Processor 801 may be other general purpose Processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), an off-the-shelf Programmable Gate Array (FPGA) or other Programmable logic device, discrete Gate or transistor logic, discrete hardware components, etc. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
The storage 802 may be an internal storage unit of the QUIC client 800 in some embodiments, such as a hard disk or memory of the QUIC client 800. The memory 802 may also be an external storage device of the QUIC client 800 in other embodiments, such as a plug-in hard disk provided on the QUIC client 800, a Smart Media Card (SMC), a Secure Digital (SD) Card, a Flash memory Card (Flash Card), etc. Further, memory 802 may also include both internal storage units and external storage devices of QUIC client 800. The memory 802 is used for storing an operating system, an application program, a BootLoader (BootLoader), data, and other programs, such as program codes of a computer program. The memory 802 may also be used to temporarily store data that has been output or is to be output.
FIG. 18 is a schematic diagram of a QUIC server according to an embodiment of the present application. As shown in fig. 18, the QUIC server 900 of this embodiment includes: at least one processor 901 (only one is shown in fig. 18), a memory 902 and a computer program 903 stored in the memory 902 and operable on the at least one processor 901, the processor 901 implementing the steps in the embodiments of the QUIC data transmission method applied to the server when the computer program 903 is executed by the processor 901.
The QUIC server 900 may be a server, such as a desktop server, a rack server, a blade server, etc. computing devices. The electronic device may include, but is not limited to, a processor 901, a memory 902. Those skilled in the art will appreciate that fig. 18 is merely an example of the QUIC server 900 and does not constitute a limitation of the QUIC server 900 and may include more or fewer components than shown or some components may be combined or different components may include, for example, input output devices, network access devices, etc.
The Processor 901 may be a Central Processing Unit (CPU), and the Processor 901 may also be other general purpose Processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), an off-the-shelf Programmable Gate Array (FPGA) or other Programmable logic device, a discrete Gate or transistor logic device, a discrete hardware component, and so on. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
The storage 902 may be an internal storage unit of the QUIC server 900 in some embodiments, such as a hard disk or a memory of the QUIC server 900. The memory 902 may also be an external storage device of the QUIC server 900 in other embodiments, such as a plug-in hard disk equipped on the QUIC server 900, a Smart Media Card (SMC), a Secure Digital (SD) Card, a Flash memory Card (Flash Card), etc. Further, the memory 902 may also include both internal storage units and external storage devices of the QUIC server 900. The memory 902 is used for storing an operating system, an application program, a BootLoader (BootLoader), data, and other programs, such as program codes of a computer program. The memory 902 may also be used to temporarily store data that has been output or is to be output.
The embodiment of the application also provides a data transmission system, which comprises at least one QUIC client provided by the fifth aspect and at least one QUIC server provided by the sixth aspect, wherein the QUIC client and the QUIC server are connected through network communication. The QUIC client and the QUIC server in the data transmission system can carry out data transmission by the QUIC data transmission method provided by the application.
The embodiment of the application also provides a computer readable storage medium, and the embodiment of the application provides a computer program product, which enables a client to execute the QUIC data transmission method applied to the client when the computer program product runs on the client.
The embodiment of the application also provides a computer readable storage medium, and the embodiment of the application provides a computer program product, so that when the computer program product runs on a server, the server executes the QUIC data transmission method applied to the server.
The embodiment of the application provides a computer program product, when the computer program product runs on a mobile terminal, the mobile terminal can realize the steps of the QUIC data transmission method applied to the client when executed.
The embodiment of the application provides a computer program product, when the computer program product runs on a mobile terminal, the mobile terminal can realize the steps in the QUIC data transmission method applied to the server when executed.
The embodiment of the application provides a chip system, which comprises a memory and a processor, wherein the processor executes a computer program stored in the memory so as to realize the steps of the QUIC data transmission method applied to the client.
The embodiment of the application provides a chip system, which comprises a memory and a processor, wherein the processor executes a computer program stored in the memory to realize the steps in the QUIC data transmission method applied to the server.
The embodiment of the application provides a chip system, which comprises a processor, wherein the processor is coupled with a computer readable storage medium, and the processor executes a computer program stored in the computer readable storage medium to realize the steps in the QUIC data transmission method applied to the client.
The embodiment of the application provides a chip system, which comprises a processor, wherein the processor is coupled with a computer readable storage medium, and the processor executes a computer program stored in the computer readable storage medium, so as to implement the steps in the QUIC data transmission method applied to the server.
The QUIC data transmission method provided by the application can be stored in a computer readable storage medium if the method is realized in the form of a software functional unit and sold or used as a stand-alone product. Based on such understanding, all or part of the processes in the methods of the embodiments described above may be implemented by a computer program instructing related hardware to execute the computer program, and the computer program may be stored in a computer readable storage medium, and when executed by a processor, may implement the steps of the embodiments of the methods described above. Wherein the computer program comprises computer program code, which may be in the form of source code, object code, an executable file or some intermediate form, etc. The computer readable medium may include at least: any entity or apparatus capable of carrying computer program code to an electronic device, a recording medium, computer Memory, read-Only Memory (ROM), random-Access Memory (RAM), an electrical carrier signal, a telecommunications signal, and a software distribution medium. Such as a usb-drive, a removable hard drive, a magnetic or optical disk, etc. In certain jurisdictions, computer-readable media may not be an electrical carrier signal or a telecommunications signal in accordance with legislative and patent practice.
In the above embodiments, the descriptions of the respective embodiments have respective emphasis, and reference may be made to the related descriptions of other embodiments for parts that are not described or illustrated in a certain embodiment.
Those of ordinary skill in the art will appreciate that the various illustrative elements and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware or combinations of computer software and electronic hardware. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the implementation. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present application.
In the embodiments provided in the present application, it should be understood that the disclosed method, apparatus, client and server may be implemented in other ways. For example, the above-described apparatus embodiments are merely illustrative, and for example, a module or a unit may be divided into only one logical function, and may be implemented in other ways, for example, a plurality of units or components may be combined or integrated into another system, or some features may be omitted, or not executed. In addition, the shown or discussed mutual coupling or direct coupling or communication connection may be an indirect coupling or communication connection through some interfaces, devices or units, and may be in an electrical, mechanical or other form.
Units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of the embodiment.
Finally, it should be noted that: the above description is only an embodiment of the present application, but the scope of the present application is not limited thereto, and any changes or substitutions within the technical scope of the present disclosure should be covered by the scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims.

Claims (31)

1. A QUIC data transmission method applied to a client is characterized by comprising the following steps:
when the client responds to a second data request and carries out data transmission with the server, determining a second application layer protocol used by the second data request;
when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to a first QUIC session, a second data stream is established in the first QUIC session, the second data stream is used for carrying data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises application layer protocols supported by the client and the server at the same time.
2. The method according to claim 1, wherein said establishing a second data stream in said first QUIC session comprises:
the client responds to the second data request to generate a first type of data frame, the first type of data frame comprises the second application layer protocol, the identification information of the second data stream and the data information corresponding to the second data request, and the corresponding relation between the identification information of the second data stream and the second application layer protocol is recorded;
and the client sends the first type of data frame to the server and instructs the server to establish a second data stream according to a second application layer protocol in the first type of data frame.
3. The method of claim 2, wherein after the client sends the first type of data frame to the server, the method further comprises:
the client receives the first type of data frames from the server;
and when the client determines that the corresponding relationship between the identification information of the second data stream in the first-type data frame and the second application layer protocol is consistent with the corresponding relationship between the identification information of the second data stream recorded by the client and the second application layer protocol, sending the first-type data frame to a processing module corresponding to the second application layer protocol for processing.
4. The method according to claim 2 or 3, wherein the second type data frame comprises identification information of the second data stream and data information corresponding to the second data request;
after the client sends the first type of data frame to the server, the method further includes:
the client receives the second type data frame from the server;
and the client sends the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relation between the identification information of the second data stream and the second application layer protocol.
5. The method of claim 1, wherein the second type data frame comprises identification information of the second data stream and data information corresponding to the second data request;
the client establishes a second data stream with the server in the first QUIC session, and the method comprises the following steps:
the client determines that the second application layer protocol is the first application layer protocol in the application layer protocol list corresponding to the first QUIC session;
the client responds to the second data request to generate a second data frame and records the corresponding relation between the identification information of the second data stream and the second application layer protocol;
and the client sends the second type of data frame to the server, instructs the server to respond to the second type of data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
6. The method according to any one of claims 1-5, further comprising:
after the first QUIC session is established, the client records the number of times of reference of the first QUIC session, wherein the number of times of reference is the number of data streams in the first QUIC session;
when a data stream is established in the first QUIC session, adding one to the reference times;
when a data flow in the first QUIC session is closed, the number of references is reduced by one.
7. The method of claim 6, further comprising:
and when the number of times of reference is reduced to zero and the number of times of reference is not changed after a preset time length, the client closes the first QUIC session.
8. The method of any of claims 1-7, wherein prior to the client responding to the second data request, the method further comprises:
responding to a first data request, establishing a first QUIC session with a server, and generating an application layer protocol list corresponding to the first QUIC session;
and establishing a first data stream in the first QUIC session, wherein the first data stream is used for carrying data requested to be transmitted in the first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session.
9. The method according to claim 8, wherein said establishing a first QUIC session with a server in response to a first data request and generating a list of application layer protocols corresponding to said first QUIC session comprises:
the client side responds to the first data request and sends a session handshake request for establishing a first QUIC session to the server side;
the client receives a handshake message from the server, wherein the handshake message is generated by the server according to the session handshake request and comprises an application layer protocol supported by the server;
generating an application layer protocol list corresponding to the first QUIC session according to the application layer protocol supported by the client and the application layer protocol supported by the server;
and the client establishes the first QUIC session according to the handshake message, and sends an application layer protocol list corresponding to the first QUIC session and a confirmation message established by the first QUIC session to the server through the first QUCI session.
10. The method according to any one of claims 1-9, further comprising:
the client receives a first notification frame or a second notification frame from the server, wherein the first notification frame is used for instructing the client to add at least one application layer protocol to an application layer protocol list corresponding to the first QUIC session stored in the client, and the second notification frame is used for instructing the client to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the client;
and the client updates the application layer protocol list according to the received first notification frame or the second notification frame.
11. The method according to any one of claims 1-9, further comprising:
the client responds to an updating instruction of the application layer protocol list and updates the application layer protocol list stored in the client;
when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the client, generating a first notification frame, wherein the first notification frame is used for indicating the server to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the server;
when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the client is removed, generating a second notification frame, wherein the second notification frame is used for indicating the server to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the server;
and the client sends the first notification frame or the second notification frame to the server.
12. The method of claim 11, further comprising:
when the second application layer protocol is not the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the client generates an update instruction of the application layer protocol list, and the update instruction is used for writing the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the client;
the client responds to the updating instruction and generates the first notification frame;
and after the client sends the first notification frame to the server through a first QUIC session, establishing a second data flow with the server in the first QUIC session.
13. A QUIC data transmission method is applied to a server side, and is characterized by comprising the following steps:
when the server side responds to a second data request and performs data transmission with the client side, determining a second application layer protocol used by the second data request;
when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to a first QUIC session, a second data stream is established in the first QUIC session, the second data stream is used for bearing data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to a first data request, and the application layer protocol list corresponding to the first QUIC session comprises application layer protocols supported by the client and the server at the same time.
14. The method according to claim 13, wherein said establishing a second data stream in said first QUIC session comprises:
the server responds to the second data request to generate a first type of data frame, the first type of data frame comprises the second application layer protocol, the identification information of the second data stream and the data information corresponding to the second data request, and the corresponding relation between the identification information of the second data stream and the second application layer protocol is recorded;
and the server side sends the first type of data frames to the client side and instructs the client side to establish a second data stream according to a second application layer protocol in the first type of data frames.
15. The method of claim 13, wherein after the server sends the first type of data frame to the client, the method further comprises:
the server receives the first type data frames from the client;
and when the server determines that the corresponding relationship between the identification information of the second data stream in the first type of data frame and the second application layer protocol is consistent with the corresponding relationship between the identification information of the second data stream recorded by the server and the second application layer protocol, sending the first type of data frame to a processing module corresponding to the second application layer protocol for processing.
16. The method according to claim 14 or 15, wherein the second type data frame comprises identification information of the second data stream and data information corresponding to the second data request;
after the server sends the first type of data frame to the client, the method further includes:
the server receives the second type data frame from the client;
and the server sends the second type data frame to a processing module corresponding to the second application layer protocol for processing according to the identification information of the second data stream in the second type data frame and the corresponding relation between the identification information of the second data stream and the second application layer protocol.
17. The method of claim 13, wherein the second type data frame comprises identification information of the second data stream and data information corresponding to the second data request;
the server establishes a second data stream with the client in the first QUIC session, comprising:
the server determines that the second application layer protocol is the first application layer protocol in an application layer protocol list corresponding to the first QUIC session;
the server side responds to the second data request to generate a second data frame and records the corresponding relation between the identification information of the second data stream and the second application layer protocol;
and the server side sends the second type data frame to the client side, instructs the client side to respond to the second type data frame, and establishes a second data stream according to a first application layer protocol in an application layer protocol list corresponding to the first QUIC session.
18. The method according to any one of claims 13-17, further comprising:
after the first QUIC session is established, the server records the number of times of quoting of the first QUIC session, wherein the number of times of quoting is the number of data streams in the first QUIC session;
when a data stream is established in the first QUIC session, adding one to the reference times;
when a data flow in the first QUIC session is closed, the number of references is decremented by one.
19. The method of claim 18, further comprising:
and when the number of times of reference is reduced to zero and the number of times of reference is not changed after a preset time length, the server side closes the first QUIC session.
20. The method according to any of claims 13-19, wherein before the server responds to the second data request, the method further comprises:
the server side and the client side establish a first QUIC session;
the server side responds to a first data request from a client side, and establishes a first data stream between the server side and the client side, wherein the first data stream is used for carrying data requested to be transmitted in the first data request, the first data request uses a first application layer protocol, and the first application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session.
21. The method according to claim 20, wherein said server establishes a first QUIC session with said client, comprising:
receiving a session handshake request from the client, wherein the session handshake request is used for indicating that a first QUIC session is established between the server and the client;
generating a handshake message according to the session handshake request and sending the handshake message to the client, wherein the handshake message comprises an application layer protocol supported by the server;
receiving the application layer protocol list from the client and a confirmation message established by the first QUIC session;
and the server side confirms to establish the first QUIC session according to the confirmation message.
22. The method according to any one of claims 13-21, further comprising:
the server receives a first notification frame or a second notification frame from the client, wherein the first notification frame is used for indicating the server to add at least one application layer protocol to an application layer protocol list corresponding to the first QUIC session stored in the server, and the second notification frame is used for indicating the server to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the server;
and the server side updates the application layer protocol list corresponding to the first QUIC session according to the received first notification frame or second notification frame.
23. The method according to any one of claims 13-21, further comprising:
the server side responds to an updating instruction of the application layer protocol list and updates the application layer protocol list stored in the server side;
when the updating instruction indicates that at least one application layer protocol is added to the application layer protocol list stored in the server, generating a first notification frame, wherein the first notification frame is used for indicating the client to add at least one application layer protocol to the application layer protocol list corresponding to the first QUIC session stored in the client;
when the updating instruction indicates that at least one application layer protocol in the application layer protocol list stored in the server is removed, generating a second notification frame, wherein the second notification frame is used for indicating the client to remove at least one application layer protocol in the application layer protocol list corresponding to the first QUIC session stored in the client;
and the server side sends the first notification frame or the second notification frame to the client side.
24. The method of claim 23, further comprising:
when the second application layer protocol is not the application layer protocol in the application layer protocol list corresponding to the first QUIC session, the server generates an updating instruction of the application layer protocol list, and the updating instruction is used for writing the second application layer protocol into the application layer protocol list corresponding to the first QUIC session stored in the server;
the server responds to the updating instruction and generates the first notification frame;
and after the server side sends the first notification frame to the client side through a first QUIC session, a second data stream is established with the client side in the first QUIC session.
25. A QUIC data transmission apparatus for a client, the apparatus comprising:
the determining module is used for determining a second application layer protocol used by a second data request when responding to the data transmission between the second data request and a server side;
the establishing module is used for establishing a second data stream in the first QUIC session when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session, the second data stream is used for carrying data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises application layer protocols simultaneously supported by the client and the server.
26. A QUIC data transmission device applied to a server side is characterized by comprising:
the determining module is used for determining a second application layer protocol used by a second data request when responding to data transmission between the second data request and a client;
the establishing module is used for establishing a second data stream in the first QUIC session when the second application layer protocol is an application layer protocol in an application layer protocol list corresponding to the first QUIC session, the second data stream is used for carrying data requested to be transmitted in the second data request, the first QUIC session is a QUIC session established with the server when the client responds to the first data request, and the application layer protocol list corresponding to the first QUIC session comprises application layer protocols simultaneously supported by the client and the server.
27. QUIC client comprising a memory, a processor and a computer program stored in said memory and executable on said processor, characterized in that said processor implements the method according to any of claims 1 to 12 when executing said computer program.
28. QUIC server comprising a memory, a processor and a computer program stored in said memory and executable on said processor, characterized in that said processor implements the method according to any of the claims 13 to 24 when executing said computer program.
29. A data transmission system, characterized in that it comprises at least one QUIC client according to claim 27 and at least one QUIC server according to claim 28, said QUIC client and said QUIC server being communicatively connected by a network.
30. A computer-readable storage medium, in which a computer program is stored which, when being executed by a processor, carries out the method according to any one of claims 1 to 12.
31. A computer-readable storage medium, in which a computer program is stored which, when being executed by a processor, carries out the method according to any one of claims 13 to 24.
CN202110456892.6A 2021-04-26 2021-04-26 QUIC data transmission method and device, client and server Active CN115334138B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110456892.6A CN115334138B (en) 2021-04-26 2021-04-26 QUIC data transmission method and device, client and server
PCT/CN2022/084139 WO2022228011A1 (en) 2021-04-26 2022-03-30 Method and apparatus for data transmission using quic, client, and server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110456892.6A CN115334138B (en) 2021-04-26 2021-04-26 QUIC data transmission method and device, client and server

Publications (2)

Publication Number Publication Date
CN115334138A true CN115334138A (en) 2022-11-11
CN115334138B CN115334138B (en) 2023-09-01

Family

ID=83847776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110456892.6A Active CN115334138B (en) 2021-04-26 2021-04-26 QUIC data transmission method and device, client and server

Country Status (2)

Country Link
CN (1) CN115334138B (en)
WO (1) WO2022228011A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115580667A (en) * 2022-12-12 2023-01-06 腾讯科技(深圳)有限公司 Data transmission method, device, equipment and storage medium
CN116185429A (en) * 2023-05-05 2023-05-30 成都市易冲半导体有限公司 Firmware upgrading method, device, receiving terminal equipment and storage medium
CN116248631A (en) * 2022-12-02 2023-06-09 中国互联网络信息中心 DoQ priority setting method and system
CN117149476A (en) * 2023-01-13 2023-12-01 荣耀终端有限公司 Fault reporting method and related device
WO2024119720A1 (en) * 2022-12-05 2024-06-13 网宿科技股份有限公司 Data processing method and device, and readable storage medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110149388A (en) * 2019-05-16 2019-08-20 北京字节跳动网络技术有限公司 Connection method, device and the equipment of HTTPDNS server
CN111064792A (en) * 2019-12-19 2020-04-24 北京航天云路有限公司 Method for accelerating data acquisition of sensor equipment based on QUIC protocol
CN111937364A (en) * 2018-04-13 2020-11-13 三星电子株式会社 Method and system for processing data path creation in wireless network system
US20210345162A1 (en) * 2018-08-27 2021-11-04 Telefonaktiebolaget Lm Ericsson (Publ) A Method of Detecting Quick User Datagram Protocol Internet Connections, QUIC, Traffic in a Telecommunication Network Between a User Equipment, UE, and a Content Provider, CP,

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102065017B (en) * 2010-12-31 2013-08-28 华为数字技术(成都)有限公司 Message processing method and device
CN107666486A (en) * 2017-09-27 2018-02-06 清华大学 A kind of network data flow restoration methods and system based on message protocol feature
PL3700268T3 (en) * 2017-10-20 2022-02-07 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Data transmission method and terminal device for the selection of a rule in a ue route selection policy (ursp)
EP4000231A1 (en) * 2019-07-18 2022-05-25 Telefonaktiebolaget LM Ericsson (publ) Method and system for in-band signaling in a quic session

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111937364A (en) * 2018-04-13 2020-11-13 三星电子株式会社 Method and system for processing data path creation in wireless network system
US20210345162A1 (en) * 2018-08-27 2021-11-04 Telefonaktiebolaget Lm Ericsson (Publ) A Method of Detecting Quick User Datagram Protocol Internet Connections, QUIC, Traffic in a Telecommunication Network Between a User Equipment, UE, and a Content Provider, CP,
CN110149388A (en) * 2019-05-16 2019-08-20 北京字节跳动网络技术有限公司 Connection method, device and the equipment of HTTPDNS server
CN111064792A (en) * 2019-12-19 2020-04-24 北京航天云路有限公司 Method for accelerating data acquisition of sensor equipment based on QUIC protocol

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HUAWEI: "C4-190203 \"Update IETF QUIC Draft References\"", 3GPP TSG_CT\\WG4_PROTOCOLLARS_EX-CN4, no. 4 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116248631A (en) * 2022-12-02 2023-06-09 中国互联网络信息中心 DoQ priority setting method and system
CN116248631B (en) * 2022-12-02 2024-05-14 中国互联网络信息中心 DoQ priority setting method and system
WO2024119720A1 (en) * 2022-12-05 2024-06-13 网宿科技股份有限公司 Data processing method and device, and readable storage medium
CN115580667A (en) * 2022-12-12 2023-01-06 腾讯科技(深圳)有限公司 Data transmission method, device, equipment and storage medium
CN115580667B (en) * 2022-12-12 2023-03-24 腾讯科技(深圳)有限公司 Data transmission method, device, equipment and storage medium
WO2024125106A1 (en) * 2022-12-12 2024-06-20 腾讯科技(深圳)有限公司 Data transmission method and apparatus, device, and storage medium
CN117149476A (en) * 2023-01-13 2023-12-01 荣耀终端有限公司 Fault reporting method and related device
CN116185429A (en) * 2023-05-05 2023-05-30 成都市易冲半导体有限公司 Firmware upgrading method, device, receiving terminal equipment and storage medium

Also Published As

Publication number Publication date
CN115334138B (en) 2023-09-01
WO2022228011A1 (en) 2022-11-03

Similar Documents

Publication Publication Date Title
CN115334138B (en) QUIC data transmission method and device, client and server
WO2021052178A1 (en) Wi-fi connection method and device
WO2020244623A1 (en) Air-mouse mode implementation method and related device
CN113169915B (en) Wireless audio system, audio communication method and equipment
EP4156625A1 (en) Data synchronization method, electronic device, and computer readable storage medium
US11848016B2 (en) Voice control command generation method and terminal
US11412437B2 (en) Data transmission method and electronic device
CN113498108B (en) Chip, device and method for adjusting data transmission strategy based on service type
CN114979021B (en) Data processing method and electronic equipment
US11997736B2 (en) Connection establishment method and terminal device
WO2022222691A1 (en) Call processing method and related device
CN114006712A (en) Method, electronic equipment and system for acquiring verification code
CN113810451B (en) Method and device for establishing point-to-point link, first terminal equipment and storage medium
CN114666787A (en) Equipment network distribution method, mobile terminal and storage medium
WO2022068486A1 (en) Data sending method, electronic device, chip system, and storage medium
CN114979261B (en) Service interaction method, terminal, server and system
US20230198934A1 (en) Reverse address resolution method and electronic device
CN113141637A (en) Multipath transmission control method and control device
WO2024037040A9 (en) Data processing method and electronic device
EP4362507A1 (en) Communication system and communication method
WO2023001044A1 (en) Data processing method and electronic device
CN114980152A (en) Method for improving voice call quality
CN115550919A (en) Equipment pairing authentication method and device, sender equipment and receiver equipment
CN115145517A (en) Screen projection method, electronic equipment and system

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