CN117527937B - 基于排序窗口的数据报文的排序方法、装置及设备 - Google Patents
基于排序窗口的数据报文的排序方法、装置及设备 Download PDFInfo
- Publication number
- CN117527937B CN117527937B CN202410025610.0A CN202410025610A CN117527937B CN 117527937 B CN117527937 B CN 117527937B CN 202410025610 A CN202410025610 A CN 202410025610A CN 117527937 B CN117527937 B CN 117527937B
- Authority
- CN
- China
- Prior art keywords
- message
- sequence number
- data
- queue
- data message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012163 sequencing technique Methods 0.000 claims abstract description 161
- 230000008707 rearrangement Effects 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种基于排序窗口的数据报文的排序方法、装置及设备,方法包括接收数据报文,读取数据报文的第一报文序号和第一排序队列的报文序号段,根据报文序号段和第一报文序号查找数据报文在第一排序队列中的排序位置;当未查找到排序位置时,从第一排序队列中选取被移动数据报文,根据被移动数据报文移动第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;将被移动数据报文移动至第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。本申请中第一排序队列通过滑动窗口方式来对接收到的数据报文进行排序,并将排序后的数据报文移动至第二排队序列,以通过第一排序队列和第二排序队列的配合,实现了报文乱序重排。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种基于排序窗口的数据报文的排序方法、装置及设备。
背景技术
随着各种新型网络的发展和应用,对网络带宽提出了越来越高的需求,如视频监控、地球观测、量子物理等领域的海量数据传输。虽然现在的高速网络带宽飞速增长,但随着各种各样的应用软件的普及,使得用户在实际的大数据传输体验中对传输速率的要求也越来越高。
UDP协议因其协议处理开销小、传输速率高等特性在高速传输中备受青睐。但是,在采用UDP协议进行数据传输时,会因为数据传输路由以及传输路径的不同而导致数据报文的到达时间不同,进而会出现数据报文乱序的问题。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种基于排序窗口的数据报文的排序方法、装置及设备。
为了解决上述技术问题,本申请第一方面提供了一种基于排序窗口的数据报文的排序方法,其中,所述的基于排序窗口的数据报文的排序方法具体包括:
接收数据报文,并读取数据报文的第一报文序号;
读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;
当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。
所述的基于排序窗口的数据报文的排序方法,其中,所述第一排序队列和所述第二排序队列均用于存储数据报文的报文指针。
所述的基于排序窗口的数据报文的排序方法,其中,所述读取预设的第一排序队列对应的报文序号段具体包括:
读取所述第二排序队列中位于最后的数据报文的第二报文序号,以及所述第一排序队列的队列长度;
根据所述第二报文序号和所述队列长度确定所述第一排序队列对应的报文序号段。
所述的基于排序窗口的数据报文的排序方法,其中,所述接收数据报文,并读取数据报文的第一报文序号之后,所述方法还包括:
检测所述第一报文序号与所述第二排序队列中位于最后的数据报文的第二报文序号是否连续;
若所述第一报文序号和所述第二报文序号连续,则将所述数据报文放置于所述第二排序队列中位于最后的数据报文之后,并将所述第一排序队列对应的报文序号段向后滑动一位,以更新所述报文序号段;
若所述第一报文序号和所述第二报文序号不连续,则执行从所述第一排序队列中选取被移动数据报文的步骤。
所述的基于排序窗口的数据报文的排序方法,其中,所述从所述第一排序队列中选取被移动数据报文具体包括:
选取第一排序队列中位于最前的第一数据报文;
读取第一排队序列中以第一数据报文为起始报文的连续报文序列,并获取所述连续报文序列所包含的报文数量;
确定所述第一报文序号与所述第一排序队列中位于最后的数据报文的报文序号差;
若所述报文数量大于或者等于报文序号差,则将所述连续报文序列作为被移动数据报文;
若所述报文数量小于所述报文序号差,则读取所述连续报文序列中位于最后的第二数据报文,将所述第一排序队列的报文序号段的起始报文序号移动至第二数据报文的报文序号的后一报文序号,并重新读取第一排队序列中以第一数据报文为起始报文的连续报文序列。
所述的基于排序窗口的数据报文的排序方法,其中,所述选取第一排序队列中位于最前的第一数据报文之后,所述方法还包括:
检查所述第一数据报文之前是否存在空闲排序位置;
当存在空闲排序位置时,获取所述空闲排序位置的空闲时长;
当空闲时长达到预设时长,或者未存在空闲排序位置时,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
当空闲时长未达到预设时长时,将所述数据报文存储于缓存区域,并等待空闲时长达到预设时长后,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列的步骤。
所述的基于排序窗口的数据报文的排序方法,其中,所述将所述数据报文放置于所述第一排序队列内具体包括:
读取被移动数据报文中位于最后的数据报文的第四报文序号;
根据所述第四报文序列确定移动后的第一排序队列对应的报文序号段;
根据所述报文序号段和第一排序队列中的排序位置的对应关系,选取数据报文对应的排序位置,并将所述数据报文放入所述排序位置。
本申请第二方面提供了一种基于排序窗口的数据报文的排序装置,其中,所述的基于排序窗口的数据报文的排序装置具体包括:
接收模块,用于接收数据报文,并读取数据报文的第一报文序号;
读取模块,用于读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;
选取模块,用于当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
移动模块,用于将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。
本申请第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的基于排序窗口的数据报文的排序方法中的步骤。
本申请第四方面提供了一种终端设备,其包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如上任一所述的基于排序窗口的数据报文的排序方法中的步骤。
有益效果:与现有技术相比,本申请提供了一种基于排序窗口的数据报文的排序方法、装置及设备,方法包括接收数据报文,并读取数据报文的第一报文序号;读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。本申请中第一排序队列通过滑动窗口方式来对接收到的数据报文进行排序,并将排序后的数据报文移动至第二排队序列,以通过第一排序队列和第二排序队列的配合,实现了报文乱序重排。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的基于排序窗口的数据报文的排序方法的流程图。
图2为本申请实施例提供的基于排序窗口的数据报文的排序方法中步骤S10和步骤S20间的可选流程的流程图。
图3为本申请实施例提供的基于排序窗口的数据报文的排序方法中步骤S20的流程示例图。
图4为本申请实施例提供的基于排序窗口的数据报文的排序方法中步骤S30的流程示例图。
图5为本申请实施例提供的基于排序窗口的数据报文的排序装置的结构原理图。
图6为本申请实施例提供的终端设备的结构原理图。
具体实施方式
本申请实施例提供一种基于排序窗口的数据报文的排序方法、装置及设备,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
经过研究发现,随着各种新型网络的发展和应用,对网络带宽提出了越来越高的需求,如视频监控、地球观测、量子物理等领域的海量数据传输。虽然现在的高速网络带宽飞速增长,但随着各种各样的应用软件的普及,使得用户在实际的大数据传输体验中对传输速率的要求也越来越高。
UDP协议因其协议处理开销小、传输速率高等特性在高速传输中备受青睐。但是,在采用UDP协议进行数据传输时,会因为数据传输路由以及传输路径的不同而导致数据报文的到达时间不同,进而会出现数据报文乱序的问题。
为了解决上述问题,在本申请实施例中,接收数据报文,并读取数据报文的第一报文序号;读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。本申请中第一排序队列通过滑动窗口方式来对接收到的数据报文进行排序,并将排序后的数据报文移动至第二排队序列,以通过第一排序队列和第二排序队列的配合,实现了报文乱序重排。
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
本实施例提供了一种基于排序窗口的数据报文的排序方法,所述排序方法基于预设的排序窗口进行排序,其中,排序窗口包括第一排序队列和第二排序队列,第一排序队列用于通过滑窗方式对接收到的数据报文进行排序,第二排序队列用于从第一排序队列中移除的数据报文。其中,第一排序队列对应一段报文序号段,并且第一排序队列对应的报文序号段随着第一排序队列的滑动而变化。
进一步,在本申请实施例中,第一排序队列和第二排序队列中存储的均为数据报文的报文指针。也就是说,在接收到数据报文后,无需将数据报文存储于第一排序队列,然后再从第一排序队列移动至第二排序队列,仅需要将数据报文的报文指针存储于第一排序队列,再从第一排序队列移动至第二排序队列,这样在对数据报文进行排序时,仅需要读取数据报文的报文头,无需读取数据报文的全部数据内容,不但减少了第一排序队列和第二排序队列所占用的存储空间,还提高数了据报文存入第一排序队列和从第一排队序列转入第二排序队列所花费的时间,进而提高了数据报文的排序效率。
如图1所示,本申请实施例提供的基于排序窗口的数据报文的排序方法具体包括步骤S10-S40。
S10、接收数据报文,并读取数据报文的第一报文序号。
具体地,数据报文为通过UDP协议传输的,第一报文序号可以是数据报文携带的报文IP标识,其中,第一报文序号可以通过解析数据报文的报文头得到的。也就是说,在接收到数据报文后,读取数据报文的报文头,并解析读取到的报文头以得到报文指针,然后读取报文指针中的IP标识以得到第一报文序号。
进一步,在获取到数据报文后,可以直接将数据报文存储于第一排序队列,也可以先检查数据报文是否可以直接存放第二排序队列。在本申请实施例中,所述接收数据报文,并读取数据报文的第一报文序号之后,如图2所示,所述方法还包括:
S101、检测所述第一报文序号与所述第二排序队列中位于最后的数据报文的第二报文序号是否连续;
S102、若所述第一报文序号和所述第二报文序号连续,则将所述数据报文放置于所述第二排序队列中位于最后的数据报文之后,并将所述第一排序队列对应的报文序号段向后滑动一位,以更新所述报文序号段;
S103、若所述第一报文序号和所述第二报文序号不连续,则执行从所述第一排序队列中选取被移动数据报文的步骤。
具体地,第二排队序列用于存储经过第一排序队列进行排序后的数据报文的报文指针,其中,第二排序队列中位于最后的数据报文指的是按照时间顺序最晚存入第二排序队列的数据报文,或者是,报文序列号最大的数据报文。第二报文序号为第二排序队列中位于最后的数据报文的报文序号,那么当第一报文序号与第二报文序号是否连续用于判断第一报文序号对应的数据报文和第二报文序号对应的数据报文是否为连续报文,其中,当第一报文序号和第二报文序号连续时,说明第一报文序号对应的数据报文和第二报文序号对应的数据报文是连续报文,那么可以直接将数据报文的报文指针存入第二排序队列,而无需存入第一排序队列,这样一方面可以避免数据报文占用第一排序队列中的排序位置,另一方可以减少数据报文存入第一排序队列然后再从第一排序队列转移至第二排序队列的过程,从而可以进一步提高数据报文的排序速度。反之,当第一报文序号和第二报文序号不连续时,说明第一报文序号对应的数据报文和第二报文序号对应的数据报文不是连续报文,也就是说,第一排序队列中存储有第一报文序号对应的数据报文和第二报文序号对应的数据报文间的数据报文,或者是,有第一报文序号对应的数据报文和第二报文序号对应的数据报文间的数据报文未收到,此时将数据报文存入第一排队序列,以保证第一报文序号对应的数据报文和第三报文序号对应的数据报文间的数据报文顺序正确,同时还可以避免因第一报文序号对应的数据报文和第三报文序号对应的数据报文晚到被误判为丢包的问题。
此外,值得说明的是,将数据报文直接存储入第二排序队列后,需要通过窗口移动方式同步移动第一排序队列对应的报文序号段,以使得第一排序队列对应的报文序号段的准确性,进而可以保证数据报文排序的准确性。
S20、读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置。
具体地,报文序号段位第一排序队列对应的,其中,报文序号段的序号段长度与第一排序队列的队列长度相同,以使得报文序号段中的各报文序号与第一排序队列中的各排序位置一一对应。也就是说,第一排序队列包括若干排序位置,每个排序位置均对应一个报文序号段中的报文序号,并且排序位置对应的报文序号随着其位置编码的增大而增大。
举例说明:假设第一排序队列包括10个排序位置,10个排序位置的位置编码依次记为1-10,那么第一排序队列对应的报文序号段包括10个连续报文序号,分别记为报文序号1-报文序号10,并且排序位置1对应报文序号1,排序位置2对应报文序号2,...,排序位置10对应报文序号10。
第一排序队列对应的报文序号段可以直接记录于第一排序队列中,也可以是根据第二排序队列中的数据报文确定的。在本申请实施例中,第一排序队列对应的报文序号是根据第二排序队列中的数据报文确定的,这使得第一排序队列不用记录报文序号段并不断更新其记录的报文序号段,一方面可以减少操作复杂度,另一方面也可以避免因第一排序队列中记录的报文序号段错误而导致排序错误的问题。
在一些实现方式中,如图3所示,所述读取预设的第一排序队列对应的报文序号段具体包括:
S21、读取所述第二排序队列中位于最后的数据报文的第二报文序号,以及所述第一排序队列的队列长度;
S22、根据所述第二报文序号和所述队列长度确定所述第一排序队列对应的报文序号段。
具体地,第二排序队列用于存储经过第一排序队列排序后的数据报文,并且对于第二排序队列中的任意两个数据报文,位于前的数据报文的报文序号小于位于后的数据报文的报文序号。其中,由于在数据报文传输中可能会存在丢包情况,从而第二排序队列中的相邻两个数据报文的报文序号可以相邻,也可以不相邻,其中,当相邻时,说明两个数据报文间不存在丢失数据报文,反之,当不相邻时,说明两个数据报文间存在丢失数据报文。
进一步,第二排序队列中位于最后的数据报文指的是按照时间顺序最晚存入第二排序队列的数据报文,或者是,报文序列号最大的数据报文。也就是说,第二报文序号为完成排序的最后一个数据报文,第一排序队列为正在排序的数据报文,因此,第一排序队列中最前排序位置对应的第二报文序号与第二报文序号相邻,即可以将第二报文序号加1作为报文序号段的起始报文序号,将第二报文序号加队列长度作为终止报文序号,以得到第一排序队列对应的报文序号段,这样可以提高获取到的第一排序队列对报文序号段的准确性。
进一步,在获取到报文序号段后,可以直接在报文序号段中查找第一报文序号,当查找到第一报文序号时,判定第一排序队列中存在数据报文对应的排序位置,反之,当未查找到第一报文序号时,判定第一排序队列中未存在数据报文对应的排序位置,这样可以快速准确的确定第一排序队列中是否存在第一报文序号对应的排序位置。
S30、当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
具体地,所述被移动数据报文可以包括一个数据报文,也可以包括多个数据报文,当被移动报文数据包括多个数据报文时,多个数据报文被判定为连续数据报文,也就是说,被移动数据报文为完成数据报文排序的数据报文。其中,从所述第一排序队列中选取被移动数据报文时,可以直接从第一排队序列中按照从前向后的顺序选取报文序号连续的数据报文,也可以是先检测第一排队序列是否存在完成排序的数据报文,然后在存在完成排序的数据报文时,从第一排序队列中选取被移动数据报文。
基于此,如图4所示,所述从所述第一排序队列中选取被移动数据报文具体包括:
S31、选取第一排序队列中位于最前的第一数据报文;
S32、读取第一排队序列中以第一数据报文为起始报文的连续报文序列,并获取所述连续报文序列所包含的报文数量;
S33、确定所述第一报文序号与所述第一排序队列中位于最后的数据报文的报文序号差;
S34、若所述报文数量大于或者等于报文序号差,则将所述连续报文序列作为被移动数据报文;
S35、若所述报文数量小于所述报文序号差,则读取所述连续报文序列中位于最后的第二数据报文,将所述第一排序队列的报文序号段的起始报文序号移动至第二数据报文的报文序号的后一报文序号,并重新读取第一排队序列中以第一数据报文为起始报文的连续报文序列。
具体地,在步骤S31中,第一数据报文为第一排序队列中存入的数据报文中位于最前的数据报文,而第一数据报文可以为存储于第一排序队列中的第一位排序位置,也可以不存储于第一排序队列中的第一位排序位置。
在步骤S32中,连续报文序列包括可以包括一个数据报文,也可以包括多个数据报文,其中,当连续数据报文包括一个数据报文时,该数据报文为第一数据报文,当连续数据报文包括多个数据报文时,多个数据报文可以为第一排序队列中报文序号与第一数据报文的报文序号处于连续状态的数据报文,也可以是第一排序队列中一段排序位置序列对应的数据报文构成的,其中,一段排序位置序列中的各排序位置或者是放置有数据报文,或者是排序位置对应的数据报文状态为丢包状态,其中,排序位置对应的数据报文状态可以根据排序位置的空闲时长来确定,空闲时长可以从排序位置之后的排序位置存入数据报文开始计数,然后第一排序队列每存入一个数据报文,该计数增加,然后将排序位置对应的计数作为排序位置的空闲时长。
举例说明:假设第一排序队列包括排序位置1-10,其中,排序位置1存放数据报文a,排序位置2存放数据报文b,排序位置4存放数据包c。那么放置位3处于空闲状态。那么连续报文序列包括数据报文a和数据报文b。此外,当排序位置3对应的数据报文状态为丢包状态时,连续报文序列还包括数据报文c。
进一步,由于第一排序队列可能会存在空闲排序位置,并且排序位置1可以为空闲排序位置。因此,在本申请实施例的一个实现方式中,所述选取第一排序队列中位于最前的第一数据报文之后,所述方法还包括:
检查所述第一数据报文之前是否存在空闲排序位置;
当存在空闲排序位置时,获取所述空闲排序位置的空闲时长;
当空闲时长达到预设时长,或者未存在空闲排序位置时,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
当空闲时长未达到预设时长时,将所述数据报文存储于缓存区域,并等待空闲时长达到预设时长后,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列的步骤。
具体地,空闲排序位置为未存储有数据报文的报文指针的排序位置,当第一数据报文之前存在空闲排序位置,说明第一数据报文前存在未接收到的数据报文,其中,检查到的空闲排序位置可以为一个,也可以为多个,当为多个时,说明第一数据报文之前存在多个数据报文未接收到。
在检查到空闲排序位置时,可以直接将数据报文放置于缓存区域不进行排队,而等待空闲排序位置对应的数据报文。然而,在实际应用中,数据报文在传输过程中可能会存在丢包的情况,从而在检查到空闲排序位置时,可以检测空闲排序位置的空闲时长,依次来判断空闲排序位置对应的数据报文是否存在丢包的可能性,从而可以避免因数据报文丢失而导致数据报文排序进行无线等待状态,同时未空闲排序位置预留预设时长,为晚到数据报文预留了等待时长,提高了数据报文排序的准确性。
进一步,预设时长为预先设置的,用户判定空闲排序位置对应的数据报文状态的依据,其中,当空闲时长未达到预设时长时,判定空闲排序位置对应的数据报文状态为丢包状态,反之,当空闲时长未达到预设时长时,判定空闲排序位置对应的数据报文状态为晚到状态。基于此,当空闲时长达到预设时长,或者未存在空闲排序位置时,说明第一数据报文完成排序,从而可以以第一数据报文为起始报文来选取连续报文序列。反之,当空闲时长未达到预设时长时,说明第一数据报文未完成排序,则需要等待检查到的空闲放置位置的控制时长达到预设时长后,再执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列的步骤。在等待过程中,可以先将数据报文存储于缓存内,并继续接收数据报文。此外,值得说明的是,在选取连续报文序列时,可以选取数据报文状态为将丢包状态的空闲排序位置之前的数据报文和之后的数据报文作为连续数据报文。
在步骤S33-S35中,报文序号差用于反映数据报文与第一排序队列中位于最后的数据报文间所包含的数据报文的间隔报文数量。报文数量为连续报文序列所包含的报文数量,根据报文序号差和报文数量可以确定是否可以在将连续报文序列移入第二排序队列后,第一排序队列滑动后的报文序列段是否包含有第一报文序号。当然,在实际应用中,当连续报文序列前存在闲置时长达到预设时长的空闲排序位置时,在读取到报文数量后,将时长达到预设时长的空闲排序位置的位置数量和报文数量和作为连续报文序列对应的报文数量。此外,当连续报文序列中存在数据报文状态为丢包状态的排序位置时,报文数量包括数据报文状态为丢包状态的排序位置的位置数据。也就是说,报文数据可以通过计算第二排序队列中最后数据报文的报文序号和所述连续报文序列中位于最后的第二数据报文的报文序号来计算。
进一步,当报文数量大于或者等于报文序号差时,将连续报文序列作为被移动数据报文,当报文数据小于报文序号差时,需要继续在第一排序队列中选取连续报文序列。也就是说,先将选取到的连续报文序列移动至第二排序队列,然后将第一排序队列对应的报文序号段中的起始报文序列移动至第二数据报文的后一报文序号。
S40、将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。
具体地,第二排序队列用于存储移出第一排序对应的数据报文,并且第二排序队列中不存在空闲放置位置,也就是说,第二排序队列中的数据报文是连续存储的。
在一个实现方式中,所述将所述数据报文放置于所述第一排序队列内具体包括:
读取被移动数据报文中位于最后的数据报文的第四报文序号;
根据所述第四报文序列确定移动后的第一排序队列对应的报文序号段;
根据所述报文序号段和第一排序队列中的排序位置的对应关系,选取数据报文对应的排序位置,并将所述数据报文放入所述排序位置。
具体地,在选取到第四报文序号后,将第一排序队列对应的报文序号段的起始报文序号设置为第四报文序号的后一报文序号,依此来调整第一排序队列对应的报文序号段,以更新该排序位置对应的报文序号,然后再选取第一报文序号对应的排序位置,并将数据报文放入选取到的排序位置。综上所述,本实施例提供了一种基于排序窗口的数据报文的排序方法,方法包括接收数据报文,并读取数据报文的第一报文序号;读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。本申请实施例通过设置第一排序队列和第二排序队列,并为第一排序队列配置报文序列段,当接收到数据报文时,会在第一排序队列中选取数据报文对应的排序位置,而对于未收到数据报文的排序位置将空置,这样可以为晚到的数据报文预留排序位置,从而实现了对数据报文的乱序重排。同时,在第一排序队列无法存入数据报文时,会通过将第一排序队列中的数据报文转移入第二排序队列的方式来为数据报文提供排序位置,其中,当将第一排序队列转入第二排序队列时,对于第一排序队列中的空闲位置会进行丢包判定,对于丢包状态的排序位置对应的报文序号判定为已完成排序,对于晚到状态的排序位置则继续等待数据报文,这样既可以提高乱序数据报文的排序能力,又可以避免因丢包而导致的数据报文排序进入死循环,保证了数据报文排序的正常执行。
基于上述基于排序窗口的数据报文的排序方法,本实施例提供了一种基于排序窗口的数据报文的排序装置,如图5所示,所述的基于排序窗口的数据报文的排序装置具体包括:
接收模块100,用于接收数据报文,并读取数据报文的第一报文序号;
读取模块200,用于读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;
选取模块300,用于当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
移动模块400,用于将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内。
基于上述基于排序窗口的数据报文的排序方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的基于排序窗口的数据报文的排序方法中的步骤。
基于上述基于排序窗口的数据报文的排序方法,本申请还提供了一种终端设备,如图6所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(Communications Interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。
此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (8)
1.一种基于排序窗口的数据报文的排序方法,其特征在于,所述的基于排序窗口的数据报文的排序方法具体包括:
接收数据报文,并读取数据报文的第一报文序号;
读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;
当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
将移出的被移动数据报文移动至预设的第二排序队列,并将所述数据报文放置于移动后的第一排序队列内;
其中,所述从所述第一排序队列中选取被移动数据报文具体包括:
选取第一排序队列中位于最前的第一数据报文;
读取第一排队序列中以第一数据报文为起始报文的连续报文序列,并获取所述连续报文序列所包含的报文数量;
确定所述第一报文序号与所述第一排序队列中位于最后的数据报文的报文序号差;
若所述报文数量大于或者等于报文序号差,则将所述连续报文序列作为被移动数据报文;
若所述报文数量小于所述报文序号差,则读取所述连续报文序列中位于最后的第二数据报文,将所述第一排序队列的报文序号段的起始报文序号移动至第二数据报文的报文序号的后一报文序号,并重新读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
其中,所述选取第一排序队列中位于最前的第一数据报文之后,所述方法还包括:
检查所述第一数据报文之前是否存在空闲排序位置;
当存在空闲排序位置时,获取所述空闲排序位置的空闲时长;
当空闲时长达到预设时长,或者未存在空闲排序位置时,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
当空闲时长未达到预设时长时,将所述数据报文存储于缓存区域,并等待空闲时长达到预设时长后,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列的步骤。
2.根据权利要求1所述的基于排序窗口的数据报文的排序方法,其特征在于,所述第一排序队列和所述第二排序队列均用于存储数据报文的报文指针。
3.根据权利要求1所述的基于排序窗口的数据报文的排序方法,其特征在于,所述读取预设的第一排序队列对应的报文序号段具体包括:
读取所述第二排序队列中位于最后的数据报文的第二报文序号,以及所述第一排序队列的队列长度;
根据所述第二报文序号和所述队列长度确定所述第一排序队列对应的报文序号段。
4.根据权利要求1所述的基于排序窗口的数据报文的排序方法,其特征在于,所述接收数据报文,并读取数据报文的第一报文序号之后,所述方法还包括:
检测所述第一报文序号与所述第二排序队列中位于最后的数据报文的第二报文序号是否连续;
若所述第一报文序号和所述第二报文序号连续,则将所述数据报文放置于所述第二排序队列中位于最后的数据报文之后,并将所述第一排序队列对应的报文序号段向后滑动一位,以更新所述报文序号段;
若所述第一报文序号和所述第二报文序号不连续,则执行从所述第一排序队列中选取被移动数据报文的步骤。
5.根据权利要求1所述的基于排序窗口的数据报文的排序方法,其特征在于,所述将所述数据报文放置于所述第一排序队列内具体包括:
读取被移动数据报文中位于最后的数据报文的第四报文序号;
根据所述第四报文序号确定移动后的第一排序队列对应的报文序号段;
根据所述报文序号段和第一排序队列中的排序位置的对应关系,选取数据报文对应的排序位置,并将所述数据报文放入所述排序位置。
6.一种基于排序窗口的数据报文的排序装置,其特征在于,所述的基于排序窗口的数据报文的排序装置具体包括:
接收模块,用于接收数据报文,并读取数据报文的第一报文序号;
读取模块,用于读取预设的第一排序队列对应的报文序号段,并根据所述报文序号段和所述第一报文序号查找所述数据报文在所述第一排序队列中的排序位置;
选取模块,用于当未查找到排序位置时,从所述第一排序队列中选取被移动数据报文,根据所述被移动数据报文移动所述第一排序队列对应的报文序号段,以更新第一排序队列的报文序号段;
移动模块,用于将移出的被移动数据报文移动;
其中,所述从所述第一排序队列中选取被移动数据报文具体包括:
选取第一排序队列中位于最前的第一数据报文;
读取第一排队序列中以第一数据报文为起始报文的连续报文序列,并获取所述连续报文序列所包含的报文数量;
确定所述第一报文序号与所述第一排序队列中位于最后的数据报文的报文序号差;
若所述报文数量大于或者等于报文序号差,则将所述连续报文序列作为被移动数据报文;
若所述报文数量小于所述报文序号差,则读取所述连续报文序列中位于最后的第二数据报文,将所述第一排序队列的报文序号段的起始报文序号移动至第二数据报文的报文序号的后一报文序号,并重新读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
其中,所述选取第一排序队列中位于最前的第一数据报文之后,还包括:
检查所述第一数据报文之前是否存在空闲排序位置;
当存在空闲排序位置时,获取所述空闲排序位置的空闲时长;
当空闲时长达到预设时长,或者未存在空闲排序位置时,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列;
当空闲时长未达到预设时长时,将所述数据报文存储于缓存区域,并等待空闲时长达到预设时长后,执行读取第一排队序列中以第一数据报文为起始报文的连续报文序列的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-5任意一项所述的基于排序窗口的数据报文的排序方法中的步骤。
8.一种终端设备,其特征在于,包括:处理器和存储器;
所述存储器上存储有可被所述处理器执行的计算机可读程序;
所述处理器执行所述计算机可读程序时实现如权利要求1-5任意一项所述的基于排序窗口的数据报文的排序方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410025610.0A CN117527937B (zh) | 2024-01-08 | 2024-01-08 | 基于排序窗口的数据报文的排序方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410025610.0A CN117527937B (zh) | 2024-01-08 | 2024-01-08 | 基于排序窗口的数据报文的排序方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117527937A CN117527937A (zh) | 2024-02-06 |
CN117527937B true CN117527937B (zh) | 2024-03-15 |
Family
ID=89753582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410025610.0A Active CN117527937B (zh) | 2024-01-08 | 2024-01-08 | 基于排序窗口的数据报文的排序方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117527937B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871739A (zh) * | 2016-06-17 | 2016-08-17 | 华为技术有限公司 | 一种处理报文的方法及计算设备 |
CN106230744A (zh) * | 2016-07-26 | 2016-12-14 | 京信通信系统(中国)有限公司 | 一种数据流乱序重组的方法及转发设备 |
CN110971537A (zh) * | 2019-12-19 | 2020-04-07 | 北京浪潮数据技术有限公司 | 一种数据传输方法、装置、设备及可读存储介质 |
CN117294771A (zh) * | 2022-06-17 | 2023-12-26 | 北京罗克维尔斯科技有限公司 | 一种冗余帧报文的处理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660286B2 (en) * | 2006-02-03 | 2010-02-09 | Broadcom Corporation | Jitter management for packet data network backhaul of call data |
-
2024
- 2024-01-08 CN CN202410025610.0A patent/CN117527937B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871739A (zh) * | 2016-06-17 | 2016-08-17 | 华为技术有限公司 | 一种处理报文的方法及计算设备 |
CN106230744A (zh) * | 2016-07-26 | 2016-12-14 | 京信通信系统(中国)有限公司 | 一种数据流乱序重组的方法及转发设备 |
CN110971537A (zh) * | 2019-12-19 | 2020-04-07 | 北京浪潮数据技术有限公司 | 一种数据传输方法、装置、设备及可读存储介质 |
CN117294771A (zh) * | 2022-06-17 | 2023-12-26 | 北京罗克维尔斯科技有限公司 | 一种冗余帧报文的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117527937A (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101432721B (zh) | 桥接网络中的潜在转发环路的检测 | |
KR100703406B1 (ko) | Dma 제어 장치 및 방법 | |
CN108111366B (zh) | 分析信号延迟时间的方法与装置 | |
SE421151B (sv) | Kommunikationsstyrenhet i ett databehandlingssystem | |
WO2018171641A1 (zh) | 网络管理信息的收发方法、装置、发送设备和接收设备 | |
EP0130206A1 (en) | METHOD AND DEVICE FOR COMPETITIVE BUS COMPETITION DECISION. | |
CN117527937B (zh) | 基于排序窗口的数据报文的排序方法、装置及设备 | |
CN111290305B (zh) | 多套惯导系统多路数字量采集与处理防冲突方法及系统 | |
CN107094085B (zh) | 一种信令传送方法及装置 | |
CN116955247B (zh) | 一种缓存描述符管理装置及其方法、介质、芯片 | |
US7286559B2 (en) | Technique for controlling selection of a peek adapter or a read adapter from multiple adapters connected to a high speed switch | |
CN108696427B (zh) | 一种数据传输方法及装置 | |
CN117527641B (zh) | 数据报文的丢包观测方法、装置、设备及存储介质 | |
CN113157465B (zh) | 基于指针链表的消息发送方法及装置 | |
CN102857443B (zh) | 一种数据写入的方法、装置及系统 | |
CN115292023A (zh) | 定时任务处理方法及装置 | |
US7414991B2 (en) | Computing system and method to select data packet | |
CN113676413A (zh) | 一种乱序报文的重排方法、装置及存储介质 | |
CN109308180B (zh) | 缓存拥塞的处理方法及处理装置 | |
CN111367494B (zh) | 一种串行数据帧接收方法及装置 | |
US9380006B2 (en) | Packet processing method, and packet transmission apparatus | |
CN114448744B (zh) | 复用标识号的can数据解析方法、装置、设备及介质 | |
CN114338499B (zh) | 数据传输方法、其装置以及电子设备 | |
US11196684B2 (en) | Flow control device and method | |
CN116074767A (zh) | 支持离散编辑的组播复制的方法及应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |