CN115733898A - 一种传输数据的方法以及相关设备 - Google Patents
一种传输数据的方法以及相关设备 Download PDFInfo
- Publication number
- CN115733898A CN115733898A CN202111017185.3A CN202111017185A CN115733898A CN 115733898 A CN115733898 A CN 115733898A CN 202111017185 A CN202111017185 A CN 202111017185A CN 115733898 A CN115733898 A CN 115733898A
- Authority
- CN
- China
- Prior art keywords
- application
- application message
- data frame
- message
- quic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 230000005540 biological transmission Effects 0.000 title claims description 113
- 238000004891 communication Methods 0.000 claims description 49
- 238000004806 packaging method and process Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 29
- 230000010365 information processing Effects 0.000 abstract description 11
- 238000012545 processing Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 238000005538 encapsulation Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W80/00—Wireless network protocols or protocol adaptations to wireless operation
- H04W80/06—Transport layer protocols, e.g. TCP [Transport Control Protocol] over wireless
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了一种传输数据的方法,该方法中,发送端可以获取运行在发送端上的目标应用产生的第一应用消息;发送端根据第一应用消息进行封装,获得第一数据帧,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息;发送端基于与接收端已建立的QUIC连接,向接收端传输第一数据帧。接收端可以在接收到第一数据帧之后,根据第一数据帧中的第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,从而方便地获得第一数据帧中完整的第一应用消息,而不需要接收端在接收到的数据帧中查找应用消息的边界才能获得相应的应用消息,这样可以减小信息处理开销,优化接收端的信息处理过程。
Description
技术领域
本申请涉及数据传输技术领域,具体涉及传输数据的方法及相关设备。
背景技术
QUIC是一种互联网传输层协议。QUIC传输协议的相关介绍可参见RFC9000文件,本申请中不再赘述。
在目前基于QUIC传输协议的数据传输中,发送端与接收端之间的数据基于字节流的形式进行传输,也就是说,发送端的应用提交给发送端的QUIC实体的应用消息通常会被合并,再基于QUIC连接的网络情况等因素将合并后的数据分割为数据帧,然后将数据帧传输至接收端。由于接收端在接收数据帧时,并不清楚数据帧中的数据属于哪一个应用消息甚至哪几个应用消息,因此,在接收到数据帧之后,接收端需要合并接收到的数据帧并遍历合并后的数据帧中的数据,以识别出应用消息的边界,才能获得发送端的应用所提交的各个应用消息,其中,在接收到的数据中识别出应用消息的边界的操作也可以称为执行边界检查。由于接收端每次接收到数据帧之后都需要执行边界检查,导致信息处理过程较为复杂,处理开销较大。
发明内容
本申请提供一种传输数据的方法,用于解决目前基于QUIC传输协议的数据传输中,接收端的应用每次在接收到数据时都需要执行边界检查,导致处理过程较为复杂的问题。本申请还提供了相应的装置、设备、通信***、计算机可读存储介质和计算机程序产品等。
本申请第一方面提供一种传输数据的方法,包括:获取目标应用产生的第一应用消息,目标应用运行在发送端上;根据第一应用消息进行封装,获得第一数据帧,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息;基于与接收端已建立的QUIC连接,向接收端传输第一数据帧,以使得接收端根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,目标应用运行在接收端上。
上述第一方面所提供的方案可以应用于通信***中的发送端。该通信***包括发送端和接收端。发送端是指发送数据的通信设备,该发送端可以为服务器、终端设备、虚拟机(virtual machine,VM)或容器(container)。接收端是指接收数据的通信设备,该接收端可以为服务器、终端设备、虚拟机或容器。发送端和接收端之间可以建立QUIC连接,并基于已建立的QUIC连接传输封装有应用消息的数据帧。发送端和接收端均可以包括应用层(application layer)和传输层(transport layer),其中,应用层中可以运行目标应用,该目标应用可以基于诸如超文本传输协议(Hyper Text Transfer Protocol,HTTP)的应用层协议进行数据传输。发送端的传输层中可以运行QUIC实体。其中,实体(entity)表示任何可发送或接收信息的硬件或软件进程,可以是一个特定的软件模块。QUIC实体可以为执行QUIC传输协议的实体。
第一应用消息需要以完整的应用消息进行封装。其中,以完整的应用消息进行封装指相应的第一应用消息在封装时不被分割,而是完整地封装一个数据帧中。该方案中,通过第一数据帧实现对第一应用消息的完整封装。在实际应用中,发送端可以通过第一帧类型标识来明确相应数据帧是否为第一数据帧,而接收端可以通过识别接收到的数据帧中是否包含第一帧类型标识来确定该数据帧是否为第一数据帧。第一数据帧中包括的完整的应用消息的个数在此不做限制,一个第一数据帧中可以仅包括一个第一应用消息,也可以包括多个第一应用消息。本申请中,多个包括两个或两个以上,也可以描述为至少两个。
上述第一方面所提供的方案中,发送端和接收端建立QUIC连接的过程可以基于RFC9000文件中的相关内容,此外,还可以增加新的传输参数(transport parameter),并通过该新的传输参数协商发送端和接收端是否具有处理第一数据帧的能力。例如,若在QUIC传输协议中增加一个新的传输参数作为第一参数,发送端和接收端在建立QUIC连接的过程中,若发送端接收到接收端所发送的第一参数信息(如第一参数的取值),则确定接收端具有处理第一数据帧的能力,因此在建立QUIC连接之后,可以将第一应用消息进行封装以得到第一数据帧,并可以向接收端传输第一数据帧。
上述第一方面所提供的方案中,发送端在获取发送端上的目标应用产生的第一应用消息之后,根据第一应用消息进行封装,获得第一数据帧,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息;也即是说,可以将第一应用消息完整地封装到第一数据帧中,使得第一应用消息在封装到第一数据帧中之后依然可以保留第一应用消息的完整性,从而在基于QUIC连接向接收端发送第一数据帧时,通过第一数据帧传输第一应用消息的完整信息。接收端在接收到第一数据帧之后,可以根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,从而方便地获得第一数据帧中完整的第一应用消息,而不需要接收端对数据帧进行合并,再在合并后的信息中进行遍历以查找其中的应用消息的边界才能获得相应的应用消息,这样可以减小信息处理开销,优化接收端的信息处理过程。
在第一方面的一种可能的实现方式中,上述步骤,获取目标应用产生的第一应用消息,包括:基于目标阈值,根据目标应用产生的应用数据获得第一应用消息,第一应用消息的大小不超过目标阈值。
该种可能的实现方式中,可以预先设置目标阈值,并通过目标阈值限制第一应用消息的大小,以尽可能保证第一应用消息在传输过程中的完整性,并且符合接收端的目标应用对应用消息的处理要求。目标阈值可以是通过发送端的QUIC实体确定,再传递至发送端的目标应用的。
在第一方面的一种可能的实现方式中,该方法还包括:接收接收端发送的第一参数信息,第一参数信息包括接收端的目标应用期望接收的应用消息的最大数据量;根据第一参数信息确定目标阈值。
QUIC传输协议中可以预先配置第一参数以作为QUIC传输协议中的一个传输参数(transport parameter),第一参数信息可以包括第一参数的名称和取值。接收端可以给该第一参数赋值,获得该第一参数的取值,再将该第一参数的取值发送给发送端。接收端向发送端发送第一参数信息的时机可以在接收端和发送端之间建立QUIC连接的过程中,也可以在接收端和发送端已建立QUIC连接之后。第一参数的取值可以是固定值,也可以根据目标应用的数据处理资源的变化情况而动态变化。在一种具体示例中,可以在接收端和发送端之间建立QUIC连接的过程中,接收端向发送端发送第一参数信息,从而实现关于第一数据帧的处理能力协商,以及明确第一参数信息,以使得发送端生成的第一应用消息符合接收端的目标应用对应用消息的处理要求。
在第一方面的一种可能的实现方式中,该方法还包括:根据第二参数信息确定目标阈值,第二参数信息包括流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种。
该种可能的实现方式中,基于流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种,确定目标阈值,使得发送端可以通过目标阈值限制第一应用消息的大小,可以使得第一应用消息的大小满足QUIC连接的数据传输能力的要求,减少在通过QUIC连接进行传输时被分割的可能性。
在第一方面的一种可能的实现方式中,该方法还包括:获取更新后的目标阈值;基于更新后的目标阈值,根据目标应用产生的应用数据获得第二应用消息,第二应用消息的大小不超过更新后的目标阈值,并且第二应用消息的大小与第一应用消息的大小不同。
该种可能的实现方式中,由于更新后的目标阈值与更新前的目标阈值不同,因此,第二应用消息的大小也与第一应用消息的大小不同。基于更新后的目标阈值所获得的第二应用消息也需要以完整的应用消息进行封装,因此根据第二应用消息进行封装,也可以获得包括第一帧类型标识的数据帧。该种可能的实现方式中,可以动态地更新目标阈值,使得需要进行完整封装的应用消息的大小也能够动态调整,以提升数据传输过程中应用消息保持完整的可能性。
在第一方面的一种可能的实现方式中,上述步骤,根据第一应用消息进行封装,获得第一数据帧,包括:若第一应用消息的大小不大于发送窗口,则根据第一应用消息进行封装,获得第一数据帧,发送窗口用于指示发送端基于QUIC能够发送的数据量。
在该种可能的实现方式中,发送窗口的大小可以基于流控制参数、路径最大传输单元以及拥塞窗口中的至少一种确定。若发送窗口的大小小于第一应用消息,第一应用消息即使以完整的应用消息进行封装,在基于QUIC连接的传输过程中,也会因为受到发送窗口的限制而被分割,再分别传输。因此,在该种可能的实现方式中,若第一应用消息的大小不大于发送窗口,则根据第一应用消息进行封装,获得第一数据帧,此时,在基于QUIC连接的传输过程中,第一数据帧不会被因为受到发送窗口的限制而被分割,从而能够在传输过程中保证第一数据帧中的应用消息的完整性。
在第一方面的一种可能的实现方式中,第一应用消息包括第一消息标识,第一消息标识用于指示将第一应用消息以完整的应用消息进行封装。
该种可能的实现方式中,第一消息标识可以设置于第一应用消息的头部结构中,以便于发送端的QUIC实体识别第一消息标识。区别于第一应用信息的其他应用信息可以与第一消息标识不同的消息标识,也可以不包含消息标识。该种可能的实现方式提供了识别第一应用消息的一种可行的方法。
在第一方面的一种可能的实现方式中,第一应用消息是通过第一程序接口从目标应用传递到传输层的QUIC实体的,通过第一程序接口传递的应用消息以完整的应用消息进行封装。
发送端的网络分层中的每个层相互之间通常会用接口进行交互并提供服务。其中,目标应用位于网络分层中的应用层,执行QUIC传输协议相关的操作的QUIC实***于网络分层中的传输层。在应用层的目标应用和传输层的QUIC实体之间可以配置有第一程序接口,发送端的QUIC实体可以将通过第一程序接口接收到的应用消息作为第一应用消息。其中,在对第一程序接口的一次调用中接收到的应用消息可以作为一个第一应用消息,该第一应用消息的大小为该次调用中,QUIC实体通过第一程序接口所接收到的应用消息的大小。该种可能的实现方式提供了识别第一应用消息的一种可行的方法。
在第一方面的一种可能的实现方式中,该方法还包括:获取目标应用产生的第三应用消息;根据第三应用消息进行封装,获得第二数据帧,第二数据帧不包括第一帧类型标识;基于已建立的QUIC连接,向接收端传输第二数据帧,以使得接收端从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。
该种可能的实现方式中,第三应用消息可以在基于QUIC连接的传输过程中进行分割。第二数据帧不包括第一帧类型标识可以是第二数据帧不包含帧类型标识,也可以是第二数据帧包含第二帧类型标识,该第二帧类型标识与第一帧类型标识不同。该种可能的实现方式中,基于发送端和接收端之间已建立的QUIC连接,不仅可以发送第一数据帧,还可以发送第二数据帧,因此,发送端的目标应用可以根据具体场景需求,生成第一应用消息和第三应用消息,并分别根据第一应用消息和第三应用消息获得第一数据帧和第二数据帧,提升了目标应用针对应用消息的处理的灵活性,能够满足目标应用的不同应用场景的需求。
在第一方面的一种可能的实现方式中,第一数据帧包括第一编号,第二数据帧包括第二编号,第一编号和第二编号对应于第一数据帧包含的第一应用消息和第二数据帧包含的第三应用消息在目标应用中的产生顺序。
该种可能的实现方式中,为了保证应用消息在封装为数据帧并被接收端接收之后,还能够被接收端正确还原而不出现字节乱序等情况,需要保证第一应用消息和第二应用消息的字节的先后顺序关系的正确性,而基于第一应用消息和第二应用消息在目标应用中的产生顺序,获得第一应用消息对应的第一数据帧的第一编号以及第二应用消息对应的第二数据帧的第二编号,可以便于接收端准确地确定第一应用消息和第二应用消息的字节的先后顺序关系,并获得相应的顺次的应用数据。
在第一方面的一种可能的实现方式中,第一数据帧和第二数据帧包括在同一个QUIC报文中。
发送端和接收端之间的QUIC连接通过QUIC报文(packet)的形式来传输数据帧等数据。关于QUIC传输协议中的报文(packet)的介绍可以参考RFC9000文件。该种可能的实现方式中,提供了一种发送第一数据帧和第二数据帧的可行的方式,即在一些场景下,可以将第一数据帧和第二数据帧包括在同一个QUIC报文中以进行发送。发送端每次基于QUIC连接发送QUIC报文时,QUIC报文的大小可以基于发送窗口的大小确定。例如,在一种具体示例中,发送窗口的大小为200字节(byte),第一数据帧A的大小为150字节,第二数据帧B的大小为50字节,那么,在这一场景中,第一数据帧A和第二数据帧B可以包括在同一个QUIC报文中进行发送。
本申请第二方面提供一种传输数据的方法,包括:基于与发送端已建立的QUIC连接,接收发送端发送的第一数据帧,第一数据帧是发送端根据目标应用产生的第一应用消息封装而成的,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息,目标应用运行在发送端和接收端上;根据第一帧类型标识从第一数据帧中获得第一应用消息。
该第二方面所提供的方案应用于与上述第一方面的发送端对应的接收端,该接收端可以是物理机(如终端设备或者服务器),也可以是虚拟机或容器。该第二方面中所涉及到的与第一方面相同的特征可以参阅第一方面的介绍进行理解。
该第二方面所提供的方案中,接收端在接收到第一数据帧之后,可以根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,从而方便地获得第一数据帧中完整的第一应用消息,而不需要接收端对数据帧进行合并,再在合并后的信息中进行遍历以查找其中的应用消息的边界才能获得相应的应用消息,这样可以减小信息处理开销,优化接收端的信息处理过程。
在第二方面的一种可能的实现方式中,该方法还包括:向发送端发送第一参数信息,第一参数信息包括接收端的目标应用期望接收的应用消息的最大数据量,第一参数信息用于发送端确定目标阈值,第一应用消息的大小不超过目标阈值。
在该种可能的实现方式中,QUIC传输协议中可以预先配置第一参数以作为QUIC传输协议中的一个传输参数(transport parameter),第一参数信息可以包括第一参数的名称和取值。接收端可以给该第一参数赋值,获得该第一参数的取值,再将该第一参数的取值发送给发送端。接收端向发送端发送第一参数信息的时机可以在接收端和发送端之间建立QUIC连接的过程中,也可以在接收端和发送端已建立QUIC连接之后。第一参数的取值可以是固定值,也可以根据目标应用的数据处理资源的变化情况而动态变化。在一种具体示例中,可以在接收端和发送端之间建立QUIC连接的过程中,接收端向发送端发送第一参数信息,从而实现关于第一数据帧的处理能力协商,以及明确第一参数信息,以使得发送端生成的第一应用消息符合接收端的目标应用对应用消息的处理要求。
在第二方面的一种可能的实现方式中,在根据第一帧类型标识从第一数据帧中获得第一应用消息之后,还包括:通过第一程序接口,向接收端的目标应用传递获得的第一应用消息。
该种可能的实现方式中,接收端的应用层的目标应用和接收端的传输层的QUIC实体之间可以配置有第一程序接口,接收端的目标应用可以将通过第一程序接口获得的数据确定为接收到的第一应用消息。接收端中的该第一程序接口可以仅用于传递第一应用消息,以使得接收端的目标应用可以将通过第一程序接口接收的信息确定为完整的应用消息,而不需要再在该信息中查找应用消息的边界,这样可以提升接收端对应用消息的处理效率。
在第二方面的一种可能的实现方式中,该方法还包括:基于已建立的QUIC连接,接收发送端发送的第二数据帧,第二数据帧为根据发送端的目标应用产生的第三应用消息进行封装而成的,第二数据帧不包括第一帧类型标识;从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。
第三应用消息可以在基于QUIC连接的传输过程中进行分割。第二数据帧不包括第一帧类型标识可以是第二数据帧不包含帧类型标识,也可以是第二数据帧包含第二帧类型标识,该第二帧类型标识与第一帧类型标识不同。该种可能的实现方式中,基于发送端和接收端之间已建立的QUIC连接,不仅可以发送第一数据帧,还可以发送第二数据帧,因此,发送端的目标应用可以根据具体场景需求,生成第一应用消息和第三应用消息,并分别根据第一应用消息和第三应用消息获得第一数据帧和第二数据帧,提升了目标应用针对应用消息的处理的灵活性,能够满足目标应用的不同应用场景的需求。
在第二方面的一种可能的实现方式中,第一数据帧和第二数据帧均包括帧类型标识字段,第一数据帧的帧类型标识字段包括第一帧类型标识,第二数据帧的帧类型标识字段包括第二帧类型标识,第二帧类型与第一帧类型标识不同。
QUIC传输协议中,帧的结构中可以包括多个字段,例如,可以存在分别表示长度、内容、相应帧的帧类型、所在的流(stream)的ID的字段。其中,可以存在一个帧类型标识字段,该帧类型标识字段的取值用于确定相应帧的帧类型,而该帧类型标识字段的取值可以作为相应的帧类型标识。本申请实施例中,第一数据帧和第二数据帧的结构可以相同,既所包含的各个字段的结构(如字段含义、在数据帧中的位置以及字段长度等)可以相同,但用于确定帧类型的帧类型标识字段的取值不同。在该种可能的实现方式中,可以通过帧类型标识字段的取值来标识数据帧的帧类型。
本申请第三方面提供一种传输数据的发送端装置,该发送端装置具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:应用模块和QUIC模块。
本申请第四方面提供一种传输数据的接收端装置,该接收端装置具有实现上述第二方面或第二方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:应用模块和QUIC模块。
本申请第五方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第六方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当计算机执行指令被处理器执行时,处理器执行如上述第二方面或第二方面任意一种可能的实现方式的方法。
本申请第七方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。
本申请第八方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第二方面或第二方面任意一种可能的实现方式的方法。
其中,第三方面、第五方面以及第七方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,第四方面、第六方面以及第八方面或者其中任一种可能实现方式所带来的技术效果可参见第二方面或第二方面不同可能实现方式所带来的技术效果,此处不再赘述。
附图说明
图1A是本申请实施例提供的发送端与接收端进行交互的一实施例示意图;
图1B是本申请实施例提供的发送端与接收端进行交互的另一实施例示意图;
图2是本申请实施例提供的通信***的一实施例示意图;
图3是本申请实施例提供的传输数据的方法的一实施例示意图;
图4是本申请实施例提供的传输数据的方法的另一实施例示意图;
图5是本申请实施例提供的传输数据的方法的再一实施例示意图;
图6是本申请实施例提供的传输数据的发送端装置的一实施例示意图;
图7是本申请实施例提供的传输数据的接收端装置的一实施例示意图;
图8是本申请实施例提供的发送端的一结构示意图;
图9是本申请实施例提供的接收端的一结构示意图;
图10是本申请实施例提供的通信***的一结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种传输数据的方法,用于解决目前基于QUIC传输协议的数据传输中,接收端的应用每次在接收到数据时都需要执行边界检查,导致处理过程较为复杂的问题。本申请实施例还提供了相应的装置、计算机设备、计算机可读存储介质和计算机程序产品等。以下分别进行详细说明。
QUIC传输协议是一种的互联网传输层协议。QUIC传输协议的相关介绍可参见RFC9000文件。
本申请实施例提供的传输数据的方法可以应用于基于QUIC传输协议的各种通信***,例如:计算机网络、全球移动通讯(global system of mobilecommunication,GSM)***、码分多址(code division multiple access,CDMA)***、宽带码分多址(widebandcode division multiple access,WCDMA)***、通用分组无线业务(general packetradio service,GPRS)、长期演进(long term evolution,LTE)***、LTE频分双工(frequency division duplex,FDD)***、LTE时分双工(time division duplex,TDD)、通用移动通信***(universal mobile telecommunication system,UMTS)、全球互联微波接入(worldwide interoperability for microwave access,WiMAX)通信***、以及5G通信***等。
该通信***包括发送端和接收端。发送端和接收端之间可以建立QUIC连接。
其中,发送端是指发送数据的通信设备,接收端是指接收数据的通信设备。发送端可以为终端设备,也可以是服务器、虚拟机(virtual machine,VM)或容器(container);接收端可以是终端设备,也可以是服务器、虚拟机(virtual machine,VM)或容器(container)。
示例性地,终端设备可以是手机(mobile phone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端、增强现实(augmented reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、以物联网(internet of things,IoT)中的无线终端等。
需要说明的是,发送端和接收端是相对而言的。例如,当第一通信设备向第二通信设备发送数据时,第一通信设备是发送端,第二通信设备是接收端;当第二通信设备向第一通信设备发送数据时,第二通信设备是发送端,第一通信设备是接收端;当第一通信设备既向第二通信设备发送数据,又接收第二通信设备发送的数据时,第一通信设备和第二通信设备均既是发送端也是接收端。本申请实施例中,发送端发送的数据可以包括目标应用产生的应用数据。
在一种示例中,发送端和接收端可以通过中间设备连接。例如,如图1A所示的场景中,发送端可以为终端设备,接收端可以为云设备,终端设备与云设备之间可以通过一个或多个中间设备来进行转发数据,以实现发送端与接收端之间的数据传输。该中间设备可以转发发送端和接收端之间传输的QUIC报文,示例性地,该中间设备可以为集线器、交换机、路由器等。当然,在另一场景中,也可以是发送端为云设备,而接收端为终端设备。
在另一种示例中,如图1B所示,发送端和接收端可以直接连接。本示例中,发送端可以为客户端、服务端,也可以是进行数据转发的中间设备,接收端可以是客户端、服务端,也可以是客户端以及服务端之间的中间设备。
发送端和接收端的网络框架一般遵循特定的分层模型,例如开放式***互联通信参考模型(open system interconnection reference model,OSI)。如图2所示,以发送端为例,本申请实施例中,发送端可以包括应用层(application layer)和传输层(transportlayer),其中,应用层中可以运行目标应用,该目标应用可以基于诸如超文本传输协议(Hyper Text Transfer Protocol,HTTP)的应用层协议进行数据传输。发送端的传输层中可以运行QUIC实体,该QUIC实体是基于QUIC传输协议的。此外,发送端还可以包括例如基于互联网协议(Internet Protocol,IP)的网络层(network layer)、数据链路层(data linklayer)、物理层(physical layer)等。发送端的分层模型的具体结构在此不做限定。接收端的分层结构中也可以包括应用层和传输层,其中,接收端的应用层中可以运行有目标应用,接收端的传输层可以包括QUIC实体,该QUIC实体是基于QUIC传输协议的。此外,接收端的其他层可以与发送端相同,也可以存在差异。
本申请实施例提供的传输数据的方法的一实施例可以应用于上述通信***,下面结合附图对本申请实施例提供的传输数据的方法进行介绍,如图3所示,本申请实施例提供的传输数据的方法的一实施例包括:
101、发送端获取目标应用产生的第一应用消息。
目标应用为运行于应用层的应用,该目标应用的具体类型、所采用的应用协议等在此不做限制。目标应用可以运行在发送端和接收端上,其中,发送端的目标应用的应用信息可以通过发送端和接收端之间已建立的QUIC连接发送给接收端的目标应用。
第一应用消息中所包含的数据类型在此不做限制。
本申请实施例中,可以是目标应用根据应用数据产生第一应用消息,然后发送端的QUIC实体从目标应用获取第一应用消息。其中,实体(entity)表示任何可发送或接收信息的硬件或软件进程,可以是一个特定的软件模块。QUIC实体可以为执行QUIC传输协议的实体。
本申请实施例中,第一应用消息需要以完整的应用消息进行封装。其中,以完整的应用消息进行封装指相应的第一应用消息在封装时不被分割,而是完整地封装一个数据帧中。目标应用可以通过特定的标识,对需要以完整的应用消息进行封装的应用消息进行标注,以使得QUIC实体在接收到该应用消息时,可以通过该特定的标识确定接收到第一应用消息。此外,目标应用还可以通过特定的接口,将需要以完整的应用消息进行封装的应用消息传递至QUIC实体,以使得QUIC实体在通过该特定的接口接收到应用消息时,可以通过该特定的接口,确定接收到第一应用消息。此外,也可以通过其他方式来使得QUIC实体确定接收到第一应用消息,例如,目标应用可以预先向QUIC实体传递通知信息,该通知信息用于通知QUIC实体目标应用所发送的应用消息均为第一应用消息。
目标应用可以基于场景、应用消息的大小、应用消息的类型等因素,确定哪些消息需要以完整的应用消息进行封装。例如,目标应用可以将控制消息作为第一应用消息,而将图像、视频、文档等大文件分割得到的应用消息作为不需要以完整的应用消息进行封装的应用消息。或者,目标应用可以将大小小于指定阈值的应用数据作为第一应用消息,而将大小大于指定阈值的应用数据作为不需要以完整的应用消息进行封装的应用消息。目标应用产生第一应用消息的方式在此不做限制。
需要说明的是,本申请实施例中,从目标应用获取第一应用消息可以是一个概括的描述,在具体的处理过程中,第一应用消息可能还会经过其他处理。例如,在实际的处理过程中,目标应用产生的第一应用消息可以存储于发送缓冲区(send buffer)中,QUIC实体可以从该发送缓冲区中读取第一应用消息。此外,在本示例中,第一应用消息在存储于发送缓冲区(send buffer)中时,不同的第一应用消息可以分别根据不同的存储节点进行存储。例如,若发送缓冲区中的存储结构为链式存储结构,那么,每一第一应用消息可以在发送缓冲区中以一个独立的链表节点进行存储,不同的第一应用消息对应的链表节点不同。
102、发送端根据第一应用消息进行封装,获得第一数据帧。
第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息。
本申请实施例中,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息,因此,第一数据帧中包括的第一应用信息是完整的,而不会被分割至不同的数据帧中。第一数据帧中包括的完整的应用消息的个数在此不做限制,一个第一数据帧中可以仅包括一个第一应用消息,也可以包括多个第一应用消息。通过第一数据帧,可以实现对第一应用消息的完整封装。
若一个第一应用消息对应地封装为一个第一数据帧,使得一个第一数据帧对应一个第一应用消息,那么接收端在检测到第一帧类型标识的时候,将一个第一数据帧解封装后所获得的应用消息即为一个完整的第一应用消息,而无需从解封装后的数据中识别所包含的应用消息的边界的信息才能获得第一应用消息。
若一个第一数据帧中包括多个第一应用消息,那么第一数据帧中不仅可以包括第一帧类型标识,还可以在第一数据帧的头部结构的指定字段中记载各个第一应用消息在第一数据帧中的偏移量(offset)和/或各个第一应用消息的长度信息。接收端在接收到第一数据帧之后,若识别到第一帧类型标识,可以从头部结构的指定字段中读取各个第一应用消息在第一数据帧中的偏移量和/或长度信息,从而根据该偏移量和/或长度信息完整地提取第一数据帧中的每一个第一应用消息。
第一数据帧的数据结构可以参考RFC9000文件中的帧(frame)的结构。RFC9000文件中的帧类型可以包括数据帧(例如,STREAM帧)和控制帧(例如,ACK帧、PADDING帧、RST_STREAM帧、PING帧)。在一种示例中,第一数据帧的数据结构可以与RFC9000文件中的STREAM帧相同,既第一数据帧在各个字段的字段含义、在数据帧中的位置以及字段长度等可以与STREAM帧相同,而第一数据帧在各个字段的取值可以与STREAM帧相同,也可以不同,例如,用于确定帧类型的帧类型标识字段的取值可以不同。当然,在其他示例中,第一数据帧的数据结构也可以是与STREAM帧不同的其他结构。
103、发送端基于与接收端已建立的QUIC连接,向接收端传输第一数据帧。
发送端与接收端建立QUIC连接的过程可以参考RFC9000文件。本申请实施例中,发送端和接收端在建立QUIC连接时,可以基于RFC9000文件中的相关内容,此外,还可以增加新的传输参数(transport parameter),并通过该新的传输参数协商发送端和接收端是否具有处理第一数据帧的能力。例如,若在QUIC传输协议中增加一个新的传输参数作为第一参数,发送端和接收端在建立QUIC连接的过程中,若发送端接收到接收端所发送的第一参数信息(如第一参数的取值),则确定接收端具有处理第一数据帧的能力,因此在建立QUIC连接之后,可以将第一应用消息进行封装以得到第一数据帧,并可以向接收端传输第一数据帧。
发送端可以向接收端直接传输第一数据帧,也可以通过诸如路由器等中间设备将第一数据帧传输至接收端。
104、接收端基于与发送端已建立的QUIC连接,接收发送端发送的第一数据帧。
本申请实施例中,可以通过接收端的QUIC实体,接收发送端发送的第一数据帧。
105、接收端根据第一帧类型标识从第一数据帧中获得第一应用消息。
接收端可以根据第一帧类型标识确定接收到的数据帧为第一数据帧,从而确定接收到的数据帧中包含的应用消息为完整的应用消息。
本申请实施例中,可以通过接收端的QUIC实体,从第一数据帧中获得第一应用消息。
具体地,本申请实施例中,接收端在接收到第一数据帧之后,可以根据第一数据帧对应的数据结构,对第一数据帧进行解封装,获得第一数据帧中所封装的应用消息。在对第一数据帧进行解封装时,接收端可以读取到第一数据帧中的第一帧类型标识,因此,可以基于第一帧类型标识确定第一数据帧中所包括的应用消息为完整的应用消息,从而可以方便地从第一数据帧中获取到相应的第一应用消息。例如,若一个第一数据帧对应一个第一应用消息,那么对第一数据帧解封装后得到的应用消息即可以确定为一个第一应用消息。若第一数据帧中包括多个完整的第一应用消息,那么,可以基于第一数据帧的头部结构中各个第一应用消息的偏移量,也可以方便地从第一数据帧中获得相应的各个第一应用消息。
在一些示例中,接收端在获得第一应用消息之后,可以将获得的第一应用消息存储于接收缓冲区,若第一应用消息与最近传递至接收端的目标应用的应用消息形成连续的应用消息,则接收端的QUIC实体从该接收缓冲区中读取该第一应用消息,并传递至接收端的目标应用。其中,第一应用消息与最近传递至接收端的目标应用的应用消息形成连续的应用消息是指发送端在该最近传递至接收端的目标应用的应用消息产生之后的下一顺序,产生该第一应用消息。
本示例中,接收端获得的第一应用消息在存储于接收缓冲区(receiving buffer)中时,不同的第一应用消息可以分别根据不同的存储节点进行存储。例如,若接收缓冲区中的存储结构为链式存储结构,那么,接收到的每一第一应用消息可以在接收缓冲区中以一个独立的链表节点进行存储,不同的第一应用消息对应的链表节点不同。
在另一些示例中,若接收端的QUIC实体接收到接收端的目标应用的特定的指示指令,可以在每次获得第一应用消息之后,将获得的第一应用消息直接上送至接收端的目标应用,而不需要在接收缓冲区进行存储。其中,该指示指令可以指示接收端的QUIC实体在获得第一应用消息之后直接将第一数据帧传输至接收端的目标应用。这样,可以在诸如视频直播等对数据包序性的要求较低的场景下,提升处理效率。
接收端的QUIC实体在向接收端的目标应用传递获得的第一应用消息时,为了保持第一应用消息的完整性,接收端的QUIC实体可以分别通过不同的事件(event)传递各个第一应用消息;或者,也可以通过同一个事件传递不同的第一应用消息,并且在同一个事件中,通过不同的标识对不同的第一应用消息进行区分。或者,接收端的目标应用也可以调用回调函数分别获取不同的第一应用消息。
可见,本申请实施例中,发送端在获取发送端上的目标应用产生的第一应用消息之后,可以将第一应用消息完整地封装到第一数据帧中,使得第一应用消息在封装到第一数据帧中之后依然可以保留第一应用消息的完整性,从而在基于QUIC连接向接收端发送第一数据帧时,通过第一数据帧传输第一应用消息的完整信息。接收端在接收到第一数据帧之后,可以根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,从而方便地获得第一数据帧中完整的第一应用消息,而不需要接收端对数据帧进行合并,再在合并后的信息中进行遍历以查找其中的应用消息的边界才能获得相应的应用消息,这样可以减小信息处理开销,优化接收端的信息处理过程。
可选地,上述步骤101可以包括:
基于目标阈值,根据目标应用产生的应用数据获得第一应用消息,第一应用消息的大小不超过目标阈值。
应用数据的具体类型和产生方式在此不做限定,例如,该应用数据可以包括控制信息、文本信息、图像信息以及音频信息中的至少一种,该应用数据可以是发送端的目标应用在运行过程中生成的数据,或者,可以是目标应用从发送端本地获取的数据,或者,也可以是发送端的目标应用从其他设备获取到的数据。
本申请实施例中,为了尽可能保证第一应用消息在后续的传输过程中的完整性,并且符合接收端的目标应用对应用消息的处理要求,可以预先设置目标阈值,以限制第一应用消息的大小。
目标阈值可以是通过发送端的QUIC实体确定,再传递至发送端的目标应用的。
目标阈值的确定方式可以包括但不限于以下两种方式中的至少一种:
1、在一实施例中,根据第一参数信息确定目标阈值。
第一参数信息包括接收端的目标应用期望接收的应用消息的最大数据量。
第一参数信息可以为接收端的目标应用中预先配置的信息,也可以是基于接收端的目标应用针对应用消息所分配的处理资源的大小等信息确定的。
可选地,如图4所示,本申请实施例提供的传输数据的方法中,在执行步骤101之前,确定目标阈值的一实施例,包括:
201、接收端向发送端发送第一参数信息。
202、发送端接收接收端发送的第一参数信息。
203、发送端根据第一参数信息确定目标阈值。
在一些示例中,QUIC传输协议中可以预先配置第一参数以作为QUIC传输协议中的一个传输参数(transport parameter),第一参数信息可以包括第一参数的名称和取值。接收端可以给该第一参数赋值,获得该第一参数的取值,再将该第一参数的取值发送给发送端。接收端向发送端发送第一参数信息的时机可以在接收端和发送端之间建立QUIC连接的过程中,也可以在接收端和发送端已建立QUIC连接之后。第一参数的取值可以是固定值,也可以根据目标应用的数据处理资源的变化情况而动态变化。接收端可以在每次检测到第一参数的取值发生变化时,向发送端发送更新后的第一参数的取值。
在一种具体示例中,可以在接收端和发送端之间建立QUIC连接的过程中,接收端向发送端发送第一参数信息,从而实现关于第一数据帧的处理能力协商,以及明确第一参数信息,以使得发送端生成的第一应用消息符合接收端的目标应用对应用消息的处理要求。
接收端和发送端之间建立QUIC连接的过程可以参考RFC9000文件。本示例中,该第一参数可以是在QUIC传输协议中新定义的一种传输参数(transport parameter)。在QUIC传输协议中,可以预先配置第一参数的定义和处理规则,例如,配置接收端和发送端在建立QUIC连接的过程中声明该第一参数的时机和方式。在一种示例中,接收端可以在加密握手的阶段向发送端发送携带有该第一参数的声明,该声明可以包括接收端中该第一参数的取值,若发送端接收到该第一参数的声明,则可以确定:1、接收端具有识别和处理包含第一帧类型标识的数据帧的能力;2、确定接收端的第一参数的取值,并根据该第一参数的取值确定目标阈值,以使得发送端的目标应用可以根据该第一参数的取值,限制应用信息的大小,从而能够封装为符合接收端的目标应用的要求的第一数据帧。
2、在一实施例中,根据第二参数信息确定目标阈值。
第二参数信息包括流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种。
流控制参数为流控制(flow control)过程所涉及的参数。流控制参数可以包括接收端的QUIC实体对应的接收缓冲区中空闲空间的大小,也即是接收缓冲区能够接收的数据量。该流控制参数的取值等信息可以由接收端发送给发送端。接收端可以基于接收缓冲区的大小的变化情况动态地向发送端发送流控制参数的取值,可见,发送端中的流控制参数的信息可以动态更新。
在网络连接中,在某段时间内,若对网络中的资源(如链路容量、路由器等交换节点中的缓存和处理机等)的需求大于可用的资源,就会造成拥塞。因此,在QUIC传输协议中,会采用拥塞控制算法来避免网络拥塞的产生。拥塞控制算法可以控制拥塞窗口的大小,以通过拥塞窗口的大小控制数据发送量,从而实现拥塞控制。本申请实施例中,不对QUIC传输协议所采用的拥塞控制算法进行限制。示例性地,拥塞控制算法可以为RFC5681或者RFC6582中描述的NewReno拥塞控制算法,或者也可以为RFC8312中描述的Cubic拥塞控制算法,当然,拥塞控制算法也可以根据场景需求选择其他算法。拥塞控制算法可以由发送端执行,通过拥塞控制算法所确定的拥塞窗口的大小可以认为是发送端的本地参数的信息。
路径最大传输单元(path maximum transmission unit,PMTU)可以指网际互连协议(Internet Protocol)包的最大大小。本申请实施例中,为了避免QUIC报文在网络层以及数据链路层等传输过程中被分片,需要通过路径最大传输单元来限制目标应用所产生的第一应用消息的大小,以保证在传输过程中完整封装至第一数据帧中的第一应用消息不被分片。路径最大传输单元可以基于应用消息在从发送端向接收端进行传输时的传输路径上的至少一个传输节点中,每个传输节点的最大传输单元(maximum transmission unit,MTU)确定。该至少一个传输节点可以包括发送端的应用层、数据传输层,以及发送端和接收端之间基于QUIC连接的传输路径上的路由器等中间设备中的至少一个。路径最大传输单元的大小可以基于传输路径的特性来确定,因此,通常来说,路径最大传输单元的大小可以基于传输路径的变化而动态变化。
由于流控制参数、发送端的路径最大传输单元的参数和拥塞窗口能够反映在QUIC连接中的数据传输能力,因此,基于流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种,确定目标阈值,使得发送端可以通过目标阈值限制第一应用消息的大小,可以使得第一应用消息的大小符合QUIC连接的数据传输能力的要求,减少在通过QUIC连接进行传输时被分割的可能性。
需要说明的是,目标阈值可以仅基于第一参数信息确定,或者仅基于流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种确定,也可以基于第一参数信息以及流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种确定。此外,确定目标阈值的因素也不限于此,例如,在一些示例中目标阈值还可以基于QUIC报文的封装格式限制等因素来确定。
可选地,在一实施例中,该方法还包括:
获取更新后的目标阈值;
基于更新后的目标阈值,根据目标应用产生的应用数据获得第二应用消息,第二应用消息的大小不超过更新后的目标阈值,并且第二应用消息的大小与第一应用消息的大小不同。
本申请实施例中,目标阈值可以动态更新。发送端可以主动地周期性获取目标阈值相关的参数信息(如第一参数信息和/或第二参数信息),以确定是否根据目标阈值相关的参数信息更新目标阈值;也可以在被动地接收到诸如第一参数信息和/或第二参数信息的更新消息之后,根据更新后的第一参数信息和/或第二参数信息,更新目标阈值。发送端在获取到更新后的目标阈值之后,可以基于更新后的目标阈值,根据目标应用产生的应用数据获得第二应用消息,由于更新后的目标阈值与更新前的目标阈值不同,因此,第二应用消息的大小也与第一应用消息的大小不同。基于更新后的目标阈值获得的第二应用消息也需要以完整的应用消息进行封装,因此根据第二应用消息进行封装,也可以获得包括第一帧类型标识的数据帧。针对第二应用消息的处理可以参考本申请其他实施例中对第一应用消息的处理,在此不再赘述。本申请实施例中,可以动态地更新目标阈值,使得需要进行完整封装的应用消息的大小也能够动态调整,以提升数据传输过程中保持完整的可能性。
可选地,在一些实施例中,上述步骤102可以包括:
若第一应用消息的大小不大于发送窗口,则根据第一应用消息进行封装,获得第一数据帧,发送窗口用于指示发送端基于QUIC能够发送的数据量。
发送窗口的大小可以基于流控制参数、路径最大传输单元以及拥塞窗口中的至少一种确定。
在实际应用中,发送窗口的大小可能会随流控制参数、路径最大传输单元以及拥塞窗口等参数而实时动态变化,并且,流控制参数、路径最大传输单元以及拥塞窗口等参数的更新频率通常较高。在一些情形中,即使在产生第一应用消息时也基于发送窗口相关的参数限制了第一应用消息的大小,由于发送窗口相关的参数的更新频率较高,也可能会导致第一应用消息产生之前的发送窗口的大小与对第一应用消息进行封装时发送窗口的大小不同。若发送窗口的大小小于第一应用消息,第一应用消息即使以完整的应用消息进行封装,在基于QUIC连接的传输过程中,也会因为受到发送窗口的限制而被分割,再分别传输。因此,在该种可能的实现方式中,若第一应用消息的大小不大于发送窗口,则根据第一应用消息进行封装,获得第一数据帧,此时,在基于QUIC连接的传输过程中,第一数据帧不会被因为受到发送窗口的限制而被分割,从而能够在传输过程中保证第一数据帧中的应用消息的完整性。
在一些示例中,若第一应用消息的大小大于发送窗口,由于受到发送窗口的限制,无法在本次的数据传输中将第一应用信息完整地发送出去,因此无法通过第一数据帧封装第一应用消息,而是采用其他帧类型的数据帧对第一应用消息进行封装。在采用其他帧类型的数据帧对第一应用消息进行封装时,为了满足发送窗口的限制条件,需要将第一应用消息进行分割,并将第一应用消息的不同部分封装至不同的数据帧中以进行传输。
可选地,识别第一应用消息的方式可以包括但不限于以下两种:
1、在一实施例中,第一应用消息包括第一消息标识,第一消息标识用于指示将第一应用消息以完整的应用消息进行封装。
第一消息标识可以设置于第一应用消息的头部结构中,以便于发送端的QUIC实体识别第一消息标识。区别于第一应用信息的其他应用信息可以与第一消息标识不同的消息标识,也可以不包含消息标识。
2、在另一实施例中,第一应用消息是通过第一程序接口从目标应用传递到传输层的QUIC实体的,通过第一程序接口传递的应用消息以完整的应用消息进行封装。
发送端的网络分层中的每个层相互之间通常会用接口进行交互并提供服务。其中,目标应用位于网络分层中的应用层,执行QUIC传输协议相关的操作的QUIC实***于网络分层中的传输层。在应用层的目标应用和传输层的QUIC实体之间可以配置有第一程序接口,发送端的QUIC实体可以将通过第一程序接口接收到的应用消息作为第一应用消息。其中,在对第一程序接口的一次调用中接收到的应用消息可以作为一个第一应用消息,该第一应用消息的大小为该次调用中,QUIC实体通过第一程序接口所接收到的应用消息的大小。
需要说明的是,无论是第一消息标识,还是第一程序接口,都表示发送端的目标应用针对第一应用消息的封装方式的一种指示,该指示表示发送端的目标应用期望第一应用消息以完整的应用消息进行封装,但是通常情况下并不强制限制第一应用消息只能以完整的应用消息进行封装。例如,若在封装第一应用消息时,检测到发送窗口的大小更新为小于第一应用消息的大小的值,那么,可以采用与第一数据帧不同的其他数据帧的形式来封装第一应用消息,而不再要求第一应用消息必须以完整的应用消息进行封装。
可选地,在一些实施例中,发送端还可以发送除第一数据帧之外的其他数据帧。
如图5所示,一实施例中,传输数据的方法还包括:
301、发送端获取目标应用产生的第三应用消息。
第三应用消息可以在基于QUIC连接的传输过程中进行分割。
本申请实施例中,发送端的目标应用可以基于应用信息的类型和大小等信息,判断是根据应用数据产生第一应用消息还是根据应用数据产生第三应用消息,或者既产生第一应用消息也产生第三应用消息。
例如,在一种场景中,若当前待传输的应用数据为一个较大的文件、图像或者视频,在传输过程中,该应用数据必然需要拆分为多个应用消息进行传输,并且拆分后的各个应用消息都是一串字节,而没有其他数据结构,在接收端接收到该多个应用消息之后也需要将该多个应用消息进行合并才能得到对应的文件、图像或者视频,那么,在传输时也不必专门保留各个应用消息的完整性。此时,发送端的目标应用可以根据较大的文件、图像或者视频对应的应用数据,获得第三应用消息。
而若当前待传输的应用数据为发送端的目标应用的控制消息,则目标应用可以根据该控制消息,获得第一应用消息,以期望在QUIC传输过程中,保留控制消息的完整数据结构,保持控制消息的完整性,使得接收端的目标应用可以方便地获得完整的应用消息,减小处理开销。
302、发送端根据第三应用消息进行封装,获得第二数据帧。
第二数据帧不包括第一帧类型标识可以是第二数据帧不包含帧类型标识,也可以是第二数据帧包含第二帧类型标识,该第二帧类型标识与第一帧类型标识不同。
示例性地,第二数据帧的帧类型可以为QUIC传输协议中定义的帧类型,例如STREAM帧。或者,第二数据帧也可以为基于QUIC传输协议拓展的其他帧类型,本申请实施例在此不做限制。
发送端根据第三应用消息进行封装之前,各个第三应用消息可以在发送端的发送缓冲区进行合并存储,该合并存储可以是各个第三应用消息基于同一个存储节点进行存储。在将多个第三应用消息进行合并存储之后,根据发送窗口等限制条件将合并存储后的数据进行分割,获得第二数据帧。
303、发送端基于已建立的QUIC连接,向接收端传输第二数据帧。
304、接收端基于已建立的QUIC连接,接收发送端发送的第二数据帧。
305、接收端从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。
接收端的QUIC实体在获取到第二数据帧之后,可以把第二数据帧存储于接收缓冲区。在接收缓冲区中,可以基于各个第二数据帧分别对应的第三应用消息在发送端的产生顺序,确定合并时各个第二数据帧的排列顺序,以及确定接收缓冲区的各个第二数据帧上送至接收端的目标应用的顺序。通常来说,接收缓冲区的各个第二数据帧上送至接收端的目标应用的先后顺序与各个第二数据帧对应第三应用消息的产生顺序一致,也就是说,接收缓冲区的各个第二数据帧通常是严格按照对应第三应用消息的产生顺序上传的。
接收端的目标应用在接收到接收端的QUIC实体传递的第三数据帧之后,从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。其中,第二数据帧是将多个第三应用消息进行合并存储之后,根据发送窗口等限制条件将合并存储后的数据进行分割而获得。此时,各个第二数据帧中的第三应用消息的分割方式难以进行记录,因此,需要接收端在接收到第二数据帧之后,在第二数据帧中识别所包含的第三应用消息的边界才能进行获得相应的第三应用消息。
本申请实施例中,基于发送端和接收端之间已建立的QUIC连接,不仅可以发送第一数据帧,还可以发送第二数据帧,因此,发送端的目标应用可以根据具体场景需求,生成第一应用消息和第三应用消息,并分别根据第一应用消息和第三应用消息获得第一数据帧和第二数据帧,提升了目标应用针对应用消息的处理的灵活性,能够满足目标应用的不同应用场景的需求。
在一些实施例中,第一数据帧包括第一编号,第二数据帧包括第二编号,第一编号和第二编号对应于第一数据帧包含的第一应用消息和第二数据帧包含的第三应用消息在目标应用中的产生顺序。
本申请实施例中,目标应用可以产生第一应用消息和第三应用消息,为了便于接收端识别应用信息之间的先后顺序以方便接收端的目标应用处理应用消息,可以根据第一应用消息和第三应用消息的产生顺序,对第一应用消息对应的第一数据帧以及第三应用消息对应的第二数据帧进行编号,获得第一数据帧的第一编号和第二数据帧的第二编号。
为了保证应用消息在封装为数据帧并被接收端接收之后,还能够被接收端正确还原而不出现字节乱序等情况,需要保证第一应用消息和第二应用消息的字节的先后顺序关系的正确性,而基于第一应用消息和第二应用消息在目标应用中的产生顺序,获得第一应用消息对应的第一数据帧的第一编号以及第二应用消息对应的第二数据帧的第二编号,可以便于接收端准确地确定第一应用消息和第二应用消息的字节的先后顺序关系,并获得相应的顺次的应用数据。
在一些示例中,第一应用消息和第三应用消息可以是相关联的信息,例如,该第一应用消息和第二应用消息可以为一个文件中的不同部分。此时,第一应用消息和第二应用消息为相互关联的消息,因此,接收端在接收到第一应用消息和第二应用消息之后,需要确定第一应用消息和第二应用消息中的字节的先后顺序,以确定第一应用消息和第二应用消息之间的关联。为了便于接收端识别相互关联的第一应用消息和第三应用消息,可以将相互关联的第一应用消息对应的第一数据帧和第三应用消息对应的第二数据帧包含至同一个流(stream)中,并在同一个流中通过编号保证第一应用消息和第二应用消息的字节的先后顺序关系的正确性。每一个流可以通过流中的ID字段进行标识。关于流的相关介绍可以参见RFC9000文件。
可选地,第一数据帧和第二数据帧包括在同一个QUIC报文中。
发送端和接收端之间的QUIC连接通过QUIC报文(packet)的形式来传输数据帧等数据。关于QUIC传输协议中的报文(packet)的介绍可以参考RFC9000文件。在本申请实施例中,提供了一种发送第一数据帧和第二数据帧的可行的方式,即在一些场景下,可以将第一数据帧和第二数据帧包括在同一个QUIC报文中以进行发送。发送端每次基于QUIC连接发送QUIC报文时,QUIC报文的大小可以基于发送窗口的大小确定。例如,在一种具体示例中,发送窗口的大小为200字节(byte),QUIC报文不能超过200字节,而第一数据帧A1的大小为150字节,第二数据帧B1的大小为50字节,那么,在这一场景中,第一数据帧A1和第二数据帧B1可以包括在同一个QUIC报文中进行发送。
当然,在其他一些场景中,QUIC报文也可以只包括第一数据帧或者只包括第二数据帧。例如,若发送窗口的大小为200字节(byte),则QUIC报文不能超过200字节,而第一数据帧A2的大小为150字节,第二数据帧B2的大小为80字节。在这一场景中,第一数据帧A2和第二数据帧B2若包括于同一个QUIC报文中,会导致该QUIC报文的大小超过发送窗口,使得该QUIC报文在传输时会被分割,进而无法保证第一数据帧A2中的应用消息的完整性,因此,在此场景下,可以在QUIC报文C1中包括第一数据帧以进行发送,然后下一次基于QUIC连接发送QUIC报文C2时,在QUIC报文C2中包括第二数据帧B2以进行发送。
可选地,在接收端根据第一帧类型标识从第一数据帧中获得第一应用消息之后,还包括:
接收端通过第一程序接口,向接收端的目标应用传递获得的第一应用消息。
本申请实施例中,接收端的应用层的目标应用和接收端的传输层的QUIC实体之间可以配置有第一程序接口,接收端的目标应用可以将通过第一程序接口获得的数据确定为接收到的第一应用消息。接收端中的该第一程序接口可以仅用于传递第一应用消息,以使得接收端的目标应用可以将通过第一程序接口接收的信息确定为完整的应用消息,而不需要再在该信息中查找应用消息的边界,这样可以提升接收端对应用消息的处理效率。此外,接收端中的QUIC实体和接收端的目标应用之间还可以配置有区别于第一程序接口的其他程序接口,以用于传输不包括第一帧类型标识的数据帧。
可选地,在一些实施例中,第一数据帧和第二数据帧均包括帧类型标识字段,第一数据帧的帧类型标识字段包括第一帧类型标识,第二数据帧的帧类型标识字段包括第二帧类型标识,第二帧类型与第一帧类型标识不同。
QUIC传输协议中,帧的结构中可以包括多个字段,例如,可以存在分别表示长度、内容、相应帧的帧类型、所在的流(stream)的ID的字段。其中,可以存在一个帧类型标识字段,该帧类型标识字段的取值用于确定相应帧的帧类型,而该帧类型标识字段的取值可以作为相应的帧类型标识。本申请实施例中,第一数据帧和第二数据帧的结构可以相同,既所包含的各个字段的结构(如字段含义、在数据帧中的位置以及字段长度等)可以相同,但用于确定帧类型的帧类型标识字段的取值不同。这样,可以通过帧类型标识字段的取值来标识数据帧的帧类型。
例如,若第二数据帧为QUIC中的STREAM帧(STREAM Frame),则第二数据帧的一种示例性结构如下:
其中,Type为描述帧类型的帧类型标识字段,该第二数据帧的第二帧类型标识可以为0x08..0x0f。Stream ID为描述该帧所在的流(stream)的ID的字段,Stream Data为描述该帧所包含的应用消息的字段,Offset为描述Stream Data的编号的字段,既第二数据帧对应的第二编号的字段,Length为描述Stream Data的字节长度的字段。
在一种示例中,可以预先配置第一数据帧,使得第一数据帧的结构与第二数据帧的结构相同,但帧类型标识字段的取值不同。
若将第一帧类型标识对应的帧类型命名为ATOM帧(ATOM Frame)第一数据帧的一种示例性结构如下:
其中,Type为帧类型标识字段,在本示例中,该第一数据帧的第一帧类型标识为0x1f。可以理解的是,该第一数据帧对应的帧类型的名称也可以是其他命名方式,ATOM帧仅作为该名称的一种具体示例,第一数据帧的第一帧类型标识的取值也可以是其他值,在此不做限制。
以上,本申请实施例从多个方面介绍了传输数据的方法,下面结合附图,介绍本申请的传输数据的发送端装置以及传输数据的接收端装置。
如图6所示,本申请实施例提供一种传输数据的发送端装置40,该传输数据的发送端装置40可以是上述实施例中的发送端,也可以是包括上述实施例中的发送端中的部分硬件模块和/或软件模块。
该传输数据的发送端装置40的一实施例包括应用模块401和QUIC模块402;
应用模块401用于:
向QUIC模块402传递目标应用产生的第一应用消息,目标应用运行在发送端上;
QUIC模块402用于:
接收第一应用消息;
根据第一应用消息进行封装,获得第一数据帧,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息;
基于与接收端已建立的QUIC连接,向接收端传输第一数据帧,以使得接收端根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,目标应用运行在接收端上。
本申请实施例中,该应用模块401可以位于发送端的应用层,并且发送端的目标应用可以运行于应用模块。而该QUIC模块402可以位于发送端的传输层,并且该QUIC模块402可以包括QUIC实体。
本申请实施例提供的方案中,发送端的QUIC模块402在获取发送端上的目标应用产生的第一应用消息之后,根据第一应用消息进行封装,获得第一数据帧,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息;也即是说,可以将第一应用消息完整地封装到第一数据帧中,使得第一应用消息在封装到第一数据帧中之后依然可以保留第一应用消息的完整性,从而在基于QUIC连接向接收端发送第一数据帧时,通过第一数据帧传输第一应用消息的完整信息。这样,接收端在接收到第一数据帧之后,可以根据第一帧类型标识确定第一数据帧包含的应用消息为完整的应用消息,从而方便地获得第一数据帧中完整的第一应用消息,而不需要接收端对数据帧进行合并,再在合并后的信息中进行遍历以查找其中的应用消息的边界才能获得相应的应用消息,这样可以减小信息处理开销,优化接收端的信息处理过程。
可选地,第一应用消息包括第一消息标识,第一消息标识用于指示将第一应用消息以完整的应用消息进行封装。
可选地,第一应用消息是通过第一程序接口从目标应用传递到传输层的QUIC实体的,通过第一程序接口传递的应用消息以完整的应用消息进行封装。
可选地,应用模块401还用于:
基于目标阈值,根据目标应用产生的应用数据获得第一应用消息,第一应用消息的大小不超过目标阈值。
可选地,QUIC模块402还用于:
接收接收端发送的第一参数信息,第一参数信息包括接收端的目标应用期望接收的应用消息的最大数据量;
根据第一参数信息确定目标阈值;
向应用模块401传递目标阈值;
应用模块401还用于:
接收目标阈值。
可选地,QUIC模块402还用于:
根据第二参数信息确定目标阈值,第二参数信息包括流控制参数、发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种;
向应用模块401传递目标阈值;
应用模块还用于:
接收目标阈值。
可选地,QUIC模块402还用于:
获取更新后的目标阈值;
基于更新后的目标阈值,根据目标应用产生的应用数据获得第二应用消息,第二应用消息的大小不超过更新后的目标阈值,并且第二应用消息的大小与第一应用消息的大小不同。
可选地,QUIC模块402用于:
若第一应用消息的尺寸不大于发送窗口,则根据第一应用消息进行封装,获得第一数据帧,发送窗口用于指示发送端基于QUIC能够发送的数据量。
可选地,应用模块401还用于:
向QUIC模块402发送目标应用产生的第三应用消息;
QUIC模块402还用于:
接收第三应用消息;
根据第三应用消息进行封装,获得第二数据帧,第二数据帧不包括第一帧类型标识;
基于已建立的QUIC连接,向接收端传输第二数据帧,以使得接收端从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。
可选地,第一数据帧包括第一编号,第二数据帧包括第二编号,第一编号和第二编号对应于第一数据帧包含的第一应用消息和第二数据帧包含的第三应用消息在目标应用中的产生顺序。
可选地,第一数据帧和第二数据帧包括在同一个QUIC报文中。
如图7所示,本申请实施例提供一种传输数据的接收端装置50,该传输数据的发送端装置50可以是上述实施例中的接收端,也可以是包括上述实施例中的接收端中的部分硬件模块和/或软件模块。
该传输数据的接收端装置50的一实施例包括QUIC模块502;
QUIC模块502用于:
基于与发送端已建立的QUIC连接,接收发送端发送的第一数据帧,第一数据帧是发送端根据目标应用产生的第一应用消息封装而成的,第一数据帧包括第一帧类型标识,第一帧类型标识用于指示第一数据帧包含的应用消息为完整的应用消息,目标应用运行在发送端和接收端上;
根据第一帧类型标识从第一数据帧中获得第一应用消息。
本申请实施例中,而该QUIC模块502可以位于接收端的传输层,并且该QUIC模块502可以包括QUIC实体。
可选地,QUIC模块502还用于:
向发送端发送第一参数信息,第一参数信息包括接收端的目标应用期望接收的应用消息的最大数据量,第一参数信息用于发送端确定目标阈值,第一应用消息的大小不超过目标阈值。
可选地,QUIC模块502还用于:
通过第一程序接口,向接收端的目标应用传递获得的第一应用消息。
可选地,接收端装置还包括应用模块501;
QUIC模块502还用于:
基于已建立的QUIC连接,接收发送端发送的第二数据帧,第二数据帧为根据发送端的目标应用产生的第三应用消息进行封装而成的,第二数据帧不包括第一帧类型标识;
向应用模块501传输第二数据帧;
应用模块501用于:
从第二数据帧中识别第三应用消息的边界,以获得第三应用消息。
该应用模块501可以位于接收端的应用层,并且接收端的目标应用可以运行于应用模块。
可选地,第一数据帧和第二数据帧均包括帧类型标识字段,第一数据帧的帧类型标识字段包括第一帧类型标识,第二数据帧的帧类型标识字段包括第二帧类型标识,第二帧类型与第一帧类型标识不同。
图8所示,是本申请实施例提供的发送端60的一种可能的逻辑结构示意图。该发送端60包括:存储器601、处理器602、通信接口603以及总线604。其中,存储器601、处理器602、通信接口603通过总线604实现彼此之间的通信连接。
存储器601可以是只读存储器(Read Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器601可以存储程序,当存储器601中存储的程序被处理器602执行时,处理器602和通信接口603用于执行上述的传输数据的方法实施例的步骤101-103、步骤202-203以及步骤301-303等。
处理器602可以采用中央处理器(Central Processing Unit,CPU)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、图形处理器(graphics processing unit,GPU)、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,用于执行相关程序,以实现本申请实施例的传输数据的发送端装置中的应用模块以及QUIC模块所需执行的功能,或者执行本申请方法实施例的传输数据的方法中的步骤101-103、步骤202-203以及步骤301-303。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器601,处理器602读取存储器601中的信息,结合其硬件执行上述的传输数据的方法实施例的步骤101-103、步骤202-203以及步骤301-303等。
通信接口603使用例如但不限于收发器一类的收发装置,来实现发送端60与其他设备或通信网络之间的通信。例如,可以通过通信接口603向接收端发送第一数据帧。
总线604可实现在发送端60各个部件(例如,存储器601、处理器602以及通信接口603)之间传送信息的通路。总线604可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当发送端的处理器执行该计算机执行指令时,发送端执行上述图8中的处理器所执行的步骤。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;当发送端的处理器执行该计算机执行指令时,发送端执行上述图8中的处理器所执行的步骤。
在本申请的另一实施例中,还提供一种芯片***,该芯片***包括处理器,该处理器用于支持发送端实现上述的传输数据的方法实施例的步骤101-103、步骤202-203以及步骤301-303等。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存数据写入的装置必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
图9所示,是本申请实施例提供的接收端70的一种可能的逻辑结构示意图。接收端70包括:存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
存储器701可以是只读存储器(Read Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行上述的传输数据的方法实施例的步骤104-105、步骤201以及步骤304-305等。
处理器702可以采用中央处理器(Central Processing Unit,CPU)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、图形处理器(graphics processing unit,GPU)、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,用于执行相关程序,以实现本申请实施例的传输数据的接收端装置中的应用模块以及QUIC模块所需执行的功能,或者执行本申请方法实施例的传输数据的方法中的步骤104-105、步骤201以及步骤304-305。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件执行上述的传输数据的方法实施例的步骤104-105、步骤201以及步骤304-305等。
通信接口703使用例如但不限于收发器一类的收发装置,来实现接收端70与其他设备或通信网络之间的通信。例如,可以通过通信接口703从发送端接收第一数据帧。
总线704可实现在接收端70各个部件(例如,存储器701、处理器702以及通信接口703)之间传送信息的通路。总线704可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当接收端的处理器执行该计算机执行指令时,接收端执行上述图9中的处理器所执行的步骤。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;当接收端的处理器执行该计算机执行指令时,接收端执行上述图9中的处理器所执行的步骤。
在本申请的另一实施例中,还提供一种芯片***,该芯片***包括处理器,该处理器用于支持接收端实现上述的传输数据的方法实施例的步骤104-105、步骤201以及步骤304-305等。在一种可能的设计中,芯片***还可以包括存储器,存储器,用于保存数据写入的装置必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
如图10所示,在本申请的一实施例中,还提供一种通信***80,该通信***80包括发送端60和接收端70,发送端用于上述的传输数据的方法实施例的步骤101-103、步骤202-203以及步骤301-303等,接收端70用于实现上述的传输数据的方法实施例的步骤104-105、步骤201以及步骤304-305等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此。
Claims (30)
1.一种传输数据的方法,其特征在于,应用于发送端,所述方法包括:
获取目标应用产生的第一应用消息,所述目标应用运行在所述发送端上;
根据所述第一应用消息进行封装,获得第一数据帧,所述第一数据帧包括第一帧类型标识,所述第一帧类型标识用于指示所述第一数据帧包含的应用消息为完整的应用消息;
基于与接收端已建立的QUIC连接,向所述接收端传输所述第一数据帧,以使得所述接收端根据所述第一帧类型标识确定所述第一数据帧包含的应用消息为完整的应用消息,所述目标应用运行在所述接收端上。
2.根据权利要求1所述的方法,其特征在于,所述获取目标应用产生的第一应用消息,包括:
基于目标阈值,根据所述目标应用产生的应用数据获得所述第一应用消息,所述第一应用消息的大小不超过所述目标阈值。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收所述接收端发送的第一参数信息,所述第一参数信息包括所述接收端的所述目标应用期望接收的应用消息的最大数据量;
根据第一参数信息确定所述目标阈值。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据第二参数信息确定所述目标阈值,所述第二参数信息包括流控制参数、所述发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取更新后的目标阈值;
基于所述更新后的目标阈值,根据所述目标应用产生的应用数据获得第二应用消息,所述第二应用消息的大小不超过所述更新后的目标阈值,并且所述第二应用消息的大小与所述第一应用消息的大小不同。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述第一应用消息进行封装,获得第一数据帧,包括:
若所述第一应用消息的大小不大于发送窗口,则根据所述第一应用消息进行封装,获得第一数据帧,所述发送窗口用于指示所述发送端基于所述QUIC能够发送的数据量。
7.根据权利要求1-6任一项所述的方法,其特征在于,
所述第一应用消息包括第一消息标识,所述第一消息标识用于指示将所述第一应用消息以完整的应用消息进行封装。
8.根据权利要求1-6任一项所述的方法,其特征在于,
所述第一应用消息是通过第一程序接口从所述目标应用传递到传输层的QUIC实体的,通过所述第一程序接口传递的应用消息以完整的应用消息进行封装。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
获取所述目标应用产生的第三应用消息;
根据所述第三应用消息进行封装,获得第二数据帧,所述第二数据帧不包括所述第一帧类型标识;
基于所述已建立的QUIC连接,向所述接收端传输所述第二数据帧,以使得所述接收端从所述第二数据帧中识别所述第三应用消息的边界,以获得所述第三应用消息。
10.根据权利要求9所述的方法,其特征在于,所述第一数据帧包括第一编号,所述第二数据帧包括第二编号,所述第一编号和所述第二编号对应于所述第一数据帧包含的第一应用消息和所述第二数据帧包含的第三应用消息在所述目标应用中的产生顺序。
11.根据权利要求9所述的方法,其特征在于,所述第一数据帧和所述第二数据帧包括在同一个QUIC报文中。
12.一种传输数据的方法,其特征在于,应用于接收端,所述方法包括:
基于与发送端已建立的QUIC连接,接收所述发送端发送的第一数据帧,所述第一数据帧是所述发送端根据目标应用产生的第一应用消息封装而成的,所述第一数据帧包括第一帧类型标识,所述第一帧类型标识用于指示所述第一数据帧包含的应用消息为完整的应用消息,所述目标应用运行在所述发送端和所述接收端上;
根据所述第一帧类型标识从所述第一数据帧中获得所述第一应用消息。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
向所述发送端发送第一参数信息,所述第一参数信息包括所述接收端的所述目标应用期望接收的应用消息的最大数据量,所述第一参数信息用于所述发送端确定目标阈值,所述第一应用消息的大小不超过所述目标阈值。
14.根据权利要求12或13所述的方法,其特征在于,在根据所述第一帧类型标识从所述第一数据帧中获得所述第一应用消息之后,还包括:
通过第一程序接口,向所述接收端的目标应用传递获得的所述第一应用消息。
15.根据权利要求12-14任一项所述的方法,其特征在于,所述方法还包括:
基于所述已建立的QUIC连接,接收所述发送端发送的第二数据帧,所述第二数据帧为根据所述发送端的目标应用产生的第三应用消息进行封装而成的,所述第二数据帧不包括第一帧类型标识;
从所述第二数据帧中识别所述第三应用消息的边界,以获得所述第三应用消息。
16.根据权利要求15所述的方法,其特征在于,所述第一数据帧和第二数据帧均包括帧类型标识字段,所述第一数据帧的帧类型标识字段包括所述第一帧类型标识,所述第二数据帧的帧类型标识字段包括第二帧类型标识,所述第二帧类型与所述第一帧类型标识不同。
17.一种传输数据的发送端装置,其特征在于,所述发送端装置包括应用模块和QUIC模块;
所述应用模块用于:
向所述QUIC模块传递目标应用产生的第一应用消息,所述目标应用运行在发送端上;
所述QUIC模块用于:
接收所述第一应用消息;
根据所述第一应用消息进行封装,获得第一数据帧,所述第一数据帧包括第一帧类型标识,所述第一帧类型标识用于指示所述第一数据帧包含的应用消息为完整的应用消息;
基于与接收端已建立的QUIC连接,向所述接收端传输所述第一数据帧,以使得所述接收端根据所述第一帧类型标识确定所述第一数据帧包含的应用消息为完整的应用消息,所述目标应用运行在所述接收端上。
18.根据权利要求17所述的发送端装置,其特征在于,所述应用模块还用于:
基于目标阈值,根据所述目标应用产生的应用数据获得所述第一应用消息,所述第一应用消息的大小不超过所述目标阈值。
19.根据权利要求18所述的发送端装置,其特征在于,所述QUIC模块还用于:
接收所述接收端发送的第一参数信息,所述第一参数信息包括所述接收端的所述目标应用期望接收的应用消息的最大数据量;
根据第一参数信息确定所述目标阈值;
向所述应用模块传递所述目标阈值;
所述应用模块还用于:
接收所述目标阈值。
20.根据权利要求18所述的发送端装置,其特征在于,所述QUIC模块还用于:
根据第二参数信息确定所述目标阈值,所述第二参数信息包括流控制参数、所述发送端的路径最大传输单元的参数和拥塞窗口的参数的信息中的至少一种;
向所述应用模块传递所述目标阈值;
所述应用模块还用于:
接收所述目标阈值。
21.根据权利要求18所述的发送端装置,其特征在于,所述QUIC模块还用于:
获取更新后的目标阈值;
基于所述更新后的目标阈值,根据所述目标应用产生的应用数据获得第二应用消息,所述第二应用消息的大小不超过所述更新后的目标阈值,并且所述第二应用消息的大小与所述第一应用消息的大小不同。
22.根据权利要求17-21任一项所述的发送端装置,其特征在于,所述QUIC模块用于:
若所述第一应用消息的尺寸不大于发送窗口,则根据所述第一应用消息进行封装,获得第一数据帧,所述发送窗口用于指示所述发送端基于所述QUIC能够发送的数据量。
23.根据权利要求17-22任一项所述的发送端装置,其特征在于,
所述应用模块还用于:
向所述QUIC模块发送所述目标应用产生的第三应用消息;
所述QUIC模块还用于:
接收所述第三应用消息;
根据所述第三应用消息进行封装,获得第二数据帧,所述第二数据帧不包括所述第一帧类型标识;
基于所述已建立的QUIC连接,向所述接收端传输所述第二数据帧,以使得所述接收端从所述第二数据帧中识别所述第三应用消息的边界,以获得所述第三应用消息。
24.一种传输数据的接收端装置,其特征在于,所述接收端装置包括QUIC模块;
所述QUIC模块用于:
基于与发送端已建立的QUIC连接,接收所述发送端发送的第一数据帧,所述第一数据帧是所述发送端根据目标应用产生的第一应用消息封装而成的,所述第一数据帧包括第一帧类型标识,所述第一帧类型标识用于指示所述第一数据帧包含的应用消息为完整的应用消息,所述目标应用运行在所述发送端和接收端上;
根据所述第一帧类型标识从所述第一数据帧中获得所述第一应用消息。
25.根据权利要求24所述的接收端装置,其特征在于,所述QUIC模块还用于:
向所述发送端发送第一参数信息,所述第一参数信息包括所述接收端的所述目标应用期望接收的应用消息的最大数据量,所述第一参数信息用于所述发送端确定目标阈值,所述第一应用消息的大小不超过所述目标阈值。
26.根据权利要求24或25所述的接收端装置,其特征在于,所述QUIC模块还用于:
通过第一程序接口,向所述接收端的目标应用传递获得的所述第一应用消息。
27.根据权利要求24-26任一项所述的接收端装置,其特征在于,所述接收端装置还包括应用模块;
所述QUIC模块还用于:
基于所述已建立的QUIC连接,接收所述发送端发送的第二数据帧,所述第二数据帧为根据所述发送端的目标应用产生的第三应用消息进行封装而成的,所述第二数据帧不包括第一帧类型标识;
向所述应用模块传输所述第二数据帧;
所述应用模块用于:
从所述第二数据帧中识别所述第三应用消息的边界,以获得所述第三应用消息。
28.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至11中任一项所述的方法。
29.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求12至16中任一项所述的方法。
30.一种通信***,其特征在于,包括:发送端和接收端,所述发送端用于执行权利要求1至11中任一项所述的方法,所述接收端用于执行权利要求12至16中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111017185.3A CN115733898A (zh) | 2021-08-31 | 2021-08-31 | 一种传输数据的方法以及相关设备 |
US17/886,737 US20230078814A1 (en) | 2021-08-31 | 2022-08-12 | Data transmission method and related device |
EP22191836.0A EP4142266A1 (en) | 2021-08-31 | 2022-08-24 | Data transmission method and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111017185.3A CN115733898A (zh) | 2021-08-31 | 2021-08-31 | 一种传输数据的方法以及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115733898A true CN115733898A (zh) | 2023-03-03 |
Family
ID=83355203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111017185.3A Pending CN115733898A (zh) | 2021-08-31 | 2021-08-31 | 一种传输数据的方法以及相关设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230078814A1 (zh) |
EP (1) | EP4142266A1 (zh) |
CN (1) | CN115733898A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561045A (zh) * | 2023-05-12 | 2023-08-08 | 成都赛力斯科技有限公司 | 一种双处理器核间通信方法、装置、tbox及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3879769B1 (en) * | 2019-02-02 | 2023-08-30 | Huawei Technologies Co., Ltd. | Method and apparatus for transmitting data |
-
2021
- 2021-08-31 CN CN202111017185.3A patent/CN115733898A/zh active Pending
-
2022
- 2022-08-12 US US17/886,737 patent/US20230078814A1/en active Pending
- 2022-08-24 EP EP22191836.0A patent/EP4142266A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561045A (zh) * | 2023-05-12 | 2023-08-08 | 成都赛力斯科技有限公司 | 一种双处理器核间通信方法、装置、tbox及存储介质 |
CN116561045B (zh) * | 2023-05-12 | 2024-03-29 | 重庆赛力斯凤凰智创科技有限公司 | 一种双处理器核间通信方法、装置、tbox及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230078814A1 (en) | 2023-03-16 |
EP4142266A1 (en) | 2023-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113411313B (zh) | 数据传输方法、装置和*** | |
US10374947B2 (en) | Method and apparatus for encapsulating / decapsulating data packets at a radio access node | |
CN114189905B (zh) | 一种报文处理方法及相关设备 | |
US20160285820A1 (en) | Method for processing address resolution protocol message, switch, and controller | |
CN108848025B (zh) | 数据处理方法、智能网关、物联网*** | |
CN109936492B (zh) | 一种通过隧道传输报文的方法、装置和*** | |
WO2014117517A1 (zh) | 多制式网络融合的方法、设备及*** | |
CN112787902B (zh) | 报文封装方法及装置、报文解封装方法及装置 | |
CN107196834B (zh) | 报文处理方法及设备 | |
JP2022501921A (ja) | イーサネット(登録商標)データの通信方法及び装置 | |
CN112804146B (zh) | 报文传输方法、通信装置和*** | |
CN109600248B (zh) | 服务质量的确定方法、装置及存储介质 | |
CN115733898A (zh) | 一种传输数据的方法以及相关设备 | |
CN111788812A (zh) | 用于分组数据转换的技术 | |
US20180131609A1 (en) | Protocol frame transmission method, apparatus, and system, and node device | |
CN105763659A (zh) | 一种IPv6隧道报文封装方法及*** | |
CN113595694B (zh) | 数据的传输方法、计算设备及存储介质 | |
CN112039801B (zh) | 设置ip信息的方法、***和代理服务器 | |
CN114556894A (zh) | 用于分组转发控制协议消息捆绑的方法、装置和计算机程序产品 | |
WO2024074031A1 (zh) | 业务处理方法、通信设备、存储介质及程序产品 | |
CN114006846B (zh) | IPv6数据包的传输方法及装置 | |
JP2023551687A (ja) | メッセージ伝送方法、システム、ネットワーク装置、及び記憶媒体 | |
CN116916382A (zh) | 一种无连接的sctp协议栈实现方法及*** | |
CN114615352A (zh) | 业务数据报文的传输方法及网络设备 | |
CN118075196A (zh) | 一种报文传输方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |