一种通信方法和设备与流程

文档序号:30311349发布日期:2022-06-05 13:12阅读:79来源:国知局
一种通信方法和设备与流程

1.本技术涉及通信技术领域,尤其涉及一种通信方法和设备。


背景技术:

2.通信协议中一般都存在一个传输层,提供端到端的通信能力。目前,传输层协议可以包含可靠性传输协议和可靠性没有保证的传输层协议。例如,传输控制协议(transmission control protocol,tcp)是可靠性传输协议,当丢失数据包、数据包乱序时,tcp协议可以通过证实、重传、缓存排序、滑窗控制等技术保障数据包可以完整、有序的送达至应用层。用户数据报协议(user datagram protocol,udp)是可靠性没有保证的传输层协议,当丢失数据包、数据包乱序时,udp协议不做任何保障处理,只是简单的将数据包发送至应用层。
3.其中,可靠性传输协议可以使得数据包能够完整、有序的送达至应用层。但可靠性的保障处理增大了传输时延。例如,在用户使用播放视频业务时,可靠性的保障处理可能会导致用户出现视频卡顿的现象。然而,不可靠传输层协议由于不做任何保障处理,因此可以减少传输时延。但是,可能会影响数据的完整性。例如,在用户使用播放视频业务时,不做任何保障处理可能会造成播放的视频出现马赛克或者听不到声音等现象。


技术实现要素:

4.本技术实施例提供一种通信方法和设备,用来同时支持可靠数据与不可靠数据传输。
5.第一方面,本技术实施例提供一种通信方法,该方法可以由本技术实施例提供的第一设备执行。其中,第一设备可以是终端设备或者服务器。该方法中,第一设备可以发送第一数据。这里的第一数据可以包括多个报文包,每个报文包可以包含第一序号和第二序号。其中,第一序号可以是可靠传输数据的编号,第二序号可以是非可靠传输数据的编号。
6.基于上述方案,发送端在发送报文包时,可以通过第一序号和第二序号为其进行编号,使得接收端可以根据报文包的第一序号和第二序号对报文包选择性的进行保序处理,可以降低数据传输时的传输时延,且不影响可靠传输数据的完整性。
7.在一种可能的实现方式中,每个报文包中可以包含指示信息,该指示信息可以用于指示报文包中的数据是可靠传输数据或者用于指示报文包中的数据是非可靠传输数据。
8.基于上述方案,发送端可以通过指示信息指示报文包是可靠传输数据还是非可靠传输数据,使得接收端可以根据指示信息对报文包选择性的进行保序处理。
9.在一种可能的实现方式中,如果第一数据包括的多个报文包是可靠传输数据,那么多个报文包的第一序号是按照发送顺序递增的,且多个报文包的第二序号是不变的,如果第一数据包括的多个报文包是非可靠传输数据,那么多个报文包的第一序号是不变的,且多个报文包的第二序号是按照发送顺序递增的。
10.基于上述方案,发送端在发送多个报文包时可以根据每个报文包的属性,对每一
个报文包的第一序号和第二序号进行处理,使得接收端在接收到报文包时通过第一序号和第二序号确定是不是有数据缺失,从而选择性的进行保序处理。
11.在一种可能的实现方式中,第一设备可以接收来自第二设备的多个确认消息。其中,每一个确认消息可以包含与每个第一序号对应的不同的第一确认序号。
12.基于上述方案,接收端在接收到报文包时,可以向发送端发送确认消息,发送端可以根据确认消息中包含的第一确认序号确定接收端成功接收到的报文包。
13.在一种可能的实现方式中,第一设备可以将报文包发送至缓冲区。第一设备可以按照缓冲区内报文包的第一序号的顺序对缓冲区内的报文包进行发送。如果报文包是可靠传输数据,在第一设备接收到该报文包的确认消息时,第一设备可以释放缓冲区中的该第一确认序号所对应的报文包。在第一设备未接收到该报文包的确认消息,且该报文包满足预设的重传条件时,第一设备可以重传缓冲区中的报文包。
14.基于上述方案,发送端可以根据接收端发送的确认消息中包含的第一确认序号判断接收端是否成功接收到可靠传输数据,并在未成功接收到可靠传输数据时,判断是否重传该可靠传输数据。
15.在一种可能的实现方式中,第一设备可以将报文包发送至缓冲区。如果该第一数据是非可靠传输数据,第一设备可以释放缓冲区中的该报文包。
16.基于上述方案,发送端在将非可靠传输数据发送给接收端之后,可以释放缓冲区中的该非可靠传输数据,不需要判断是否重传非可靠传输数据,可以避免因重传数据而带来的传输时延。
17.第二方面,本技术实施例提供一种通信方法,该方法可以由本技术实施例提供的第二设备执行。其中,第二设备可以是服务器或者终端设备。该方法中,第二设备可以接收第一数据。该第一数据可以包含多个报文包,每个报文包可以包含第一序号和第二序号,第一序号可以是可靠传输数据的编号,第二序号可以是非可靠传输数据的编号。第二设备可以将报文包发送给应用层。其中,第二设备可以通过第一数据的第一序号将报文包发送给应用层。
18.基于上述方案,接收端可以接收来自发送端的报文包,可以通过报文包的第一序号和第二序号选择性的对报文包进行保序处理,可以降低数据传输时的传输时延,且可以不影响可靠传输数据的完整性。
19.在一种可能的实现方式中,报文包中可以包含指示信息,该指示信息可以用于指示报文包是可靠传输数据或者用于指示该报文包是非可靠传输数据。
20.基于上述方案,接收端可以通过指示信息确定报文包是可靠传输数据还是非可靠传输数据,可以根据报文包的属性对报文包选择性的进行保序处理。
21.在一种可能的实现方式中,所述第二设备可以将报文包的第一序号与记录的第一序号进行比较。如果报文包的第一序号与记录的第一序号连续,且报文包为可靠传输数据,则第二设备可以将报文包发送给应用层。第二设备可以将记录的第一序号刷新为报文包的第一序号。第二设备可以判断接收缓冲区中是否存在第一报文序列。这里的接收缓冲区可以用于存储报文包。如果第一报文序列中包含的报文包的第一序号与记录的第一序号相同,则第一报文序列是非可靠传输数据序列。在非可靠传输数据序列中包含多个非可靠传输数据时,多个非可靠传输数据的第一序号是相同。如果该第一报文序列中包含的报文包
的第一序号与记录的第一序号连续,则该第一报文序列为可靠传输数据序列。在该可靠传输数据序列中包含多个可靠传输数据时,多个可靠传输数据的第一序号是连续的且多个可靠传输数据的第二序号是相同的。如果第二设备确定接收缓冲区中存在第一报文序列,第二设备可以将第一报文序列发送给应用层。如果第一报文序列为可靠传输数据序列,第二设备将可以将记录的第一序号刷新为第一报文序列中最后一个报文包的第一序号。第二设备返回执行判断接收缓冲区中是否存在第一报文序列的步骤,直至所述接收缓冲区不存在所述第一报文序列,所述第二设备返回执行所述接收所述第一数据的步骤。如果第二设备确定接收缓冲区中不存在第一报文序列,所述第二设备返回执行接收所述第一数据的步骤。
22.基于上述方案,接收端确定可靠传输数据的第一序号与记录的第一序号连续时,可以确定未缺失可靠传输数据,接收端可以将该可靠传输数据以及可靠传输数据序列发送给应用层,可以使得可靠传输数据完整的发送至应用层。
23.在一种可能的实现方式中,如果报文包的第一序号与记录的第一序号不连续,述报文包为可靠传输数据,则第二设备可以将报文包发送至接收缓冲区,第二设备返回执行接收第一数据的步骤。
24.基于上述方案,接收端确定可靠传输数据的第一序号与记录的第一序号不连续时,可以确定缺失可靠传输数据,因此接收端可以将该可靠传输数据放至接收缓冲区中,等待接收报文包,在接收到缺失的可靠传输数据时,才可以将可靠传输数据序列发送给应用层,可以使得可靠传输数据完整的发送至应用层。
25.在一种可能的实现方式中,第二设备可以将报文包的第一序号与记录的第一序号进行比较。如果报文包的第一序号与记录的第一序号是相同的,且报文包为非可靠传输数据,则第二设备将报文包发送给应用层,并返回执行接收第一数据的步骤。
26.基于上述方案,接收端确定非可靠传输数据的第一序号与记录的第一序号相同时,可以确定没有缺失可靠传输数据,可以将该非可靠传输数据发送给应用层,可以使得可靠传输数据完整的发送至应用层。
27.在一种可能的实现方式中,第二设备可以将报文包的第一序号与记录的第一序号进行比较;如果报文包的第一序号与记录的第一序号是不同的,且报文包为非可靠传输数据,则第二设备可以将报文包发送至接收缓冲区,第二设备返回执行接收第一数据的步骤。
28.基于上述方案,接收端确定非可靠传输数据的第一序号与记录的第一序号不相同时,可以确定缺失可靠传输数据,因此接收端可以将该非可靠传输数据放至接收缓冲区中,等待接收报文包。
29.在一种可能的实现方式中,若报文包为非可靠传输数据,则第二设备可以将报文包发送给应用层。
30.基于上述方案,接收端可以不对非可靠传输数据进行保序处理,将接收到的非可靠传输数据发送给应用层,可以降低数据传输时的传输时延。
31.在一种可能的实现方式中,如果报文包的第一序号与记录的第一序号不连续,且报文包为可靠传输数据,或者报文包的第一序号与记录的第一序号不相同,且报文包为非可靠传输数据,则第二设备将所述报文包发送至所述接收缓冲区。第二设备可以判断接收缓冲区中是否存在第二报文序列。这里的第二报文序列可以包含至少一个可靠传输数据;
其中,第二报文序列之前是第一序号与该第二报文序列中第一个报文包的第一序号连续的报文包,该第二报文序列之后是第一序号与该第二报文序列中最后一个报文包的第一序号相同的非可靠传输数据;或者,该第二报文序列之前是第一序号与该第二报文序列中第一个报文包的第一序号连续的报文包,该第二报文序列之后是第一序号与该第二报文序列中最后一个报文包的第一序号连续的可靠传输数据。应理解,在该第二报文序列中包含多个可靠传输数据时,多个可靠传输数据的第一序号是连续的且多个可靠传输数据的第二序号是相同的。如果第二设备确定接收缓冲区中确定存在第二报文序列,第二设备可以将该第二报文序列发送给应用层。第二设备可以将记录的第一序号刷新为第二报文序列中最后一个报文包的第一序号,第二设备可以返回执行判断接收缓冲区中是否存在第一报文序列的步骤,直至接收缓冲区不存在第一报文序列,第二设备可以返回执行接收第一数据的步骤。如果第二设备确定接收缓冲区中不存在第二报文序列,第二设备可以返回执行接收所述第一数据的步骤。
32.基于上述方案,体现了数据的重要性与时间的关系。其中,有些数据随着时间的迁移已经不再重要,无需再保障可靠传输。在对实时性、流畅性要求高的场景中可避免某些可靠数据长期无法到达而对业务造成严重影响。因此,接收端可以将已经接收到的完整的可靠传输数据序列发送给应用层,使得业务可以继续进行,而不需要等待缺失的可靠传输数据。
33.在一种可能的实现方式中,第二设备可以将第二报文序列之前的非可靠传输数据和可靠传输数据发送给应用层。
34.基于上述方案,由于接收端已经将完整的可靠传输数据序列发送给应用层,因此该可靠传输数据序列之前的可靠传输数据和非可靠传输数据已经不再重要,因此无论可靠传输数据是否有缺失均可以将其发送给应用层。
35.第三方面,提供了电子设备,电子设备可以包括用于执行第一方面或第一方面任一种可能实现方式中的各个模块/单元或者可以包括用于执行第二方面或第二方面任一种可能实现方式中的各个模块/单元。例如,处理单元和收发单元。
36.第四方面,提供了一种电子设备,电子设备包括处理器和存储器。存储器用于存储计算机执行指令,控制器运行时,处理器执行存储器中的计算机执行指令以利用控制器中的硬件资源执行第一方面或第一方面任一种可能实现方式中方法的操作步骤或者执行第二方面或第二方面任一种可能实现方式中方法的操作步骤。
37.第五方面,提供了一种系统,该系统可以包括上述至少一个第一设备和至少一个第二设备。
38.第六方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
39.第七方面,本技术提供了一种存储指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面的方法。
40.第八方面,本技术提供了一种芯片,可以包括处理器和存储器。存储器用于存储计算机执行指令,控制器运行时,处理器执行存储器中的计算机执行指令以利用控制器中的硬件资源执行第一方面或第一方面任一种可能实现方式中方法的操作步骤或者执行第二方面或第二方面任一种可能实现方式中方法的操作步骤。
evolution,lte)系统,全球互联微波接入(worldwide interoperability for microwave access,wimax)通信系统,未来的第五代(5th generation,5g)系统,如新一代无线接入技术(new radio access technology,nr),及未来的通信系统,如6g系统等。
54.本技术实施例描述的网络架构以及业务场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
55.目前,传输层协议可以包括可靠性传输协议和不可靠传输协议。比如,tcp协议属于可靠性传输协议,因此使用tcp协议传送的所有数据都是可靠的。举例来说,在客户端执行播放视频的业务时,服务端可以采用tcp协议将该相关的数据包发送给客户端。当网络出现问题导致丢包、乱序时,tcp协议可以保障数据包最终完整、有序的送达客户端。然而,tcp协议的保序处理增大了传输时延,在播放视频时可能会出现视频卡顿的现象。如果采用不可靠传输层协议,如udp协议将数据包发送给客户端,当网络出现问题导致丢包、乱序时,udp协议不做任何保障处理,只是简单的将数据包发送给客户端。因此,如果采用udp协议传输数据可以减少传输时延,但是会影响数据的完整性。例如,在客户端播放视频时,可能会出现马赛克或听不到声音等现象。所以,目前的传输层协议不可以兼顾传输时延和数据的完整性。基于上述问题,本技术实施例提供一种通信方法,将待传输的数据区分为可靠传输数据和非可靠传输数据。以视频业务为例,视频业务使用本技术实施例提供的通信方法时,可以将画面组(group of pictures,gop)中的i帧数据作为可靠传输数据,b帧、p帧作为不可靠传输数据。这样既不会丢失i帧数据导致整个gop播放异常,也不会应某些b帧、p帧丢失时等待重传导致卡顿。
56.为便于理解本技术实施例,首先以图1示出的通信系统为例详细说明适用于本技术实施例的通信系统。图1示出了适用于本技术实施例的通信方法的通信系统的示意图。如图1所示,该通信系统100包括服务端101和客户端102。其中,服务端101和客户端102可以包含传输层和应用层,如图2所示。
57.其中,应用层可以直接和应用程序接口并提供常见的网络应用服务。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。
58.传输层可以用于向两个终端中进程之间的通信提供服务,传输层可以为应用层提供透明的数据传输,在终端之间提供可靠的数据传输服务。
59.以下,对本技术实施例中提供的传输层协议进行说明。
[0060][0061]
表1
[0062]
参见表1,在本技术实施例提供的传输层协议中一个数据可以包括两个序号。其中一个序号可以是可靠数据序号,以下称为可靠传输数据序号;另一个序号可以是不可靠数据序号,以下称为非可靠传输数据序号。另外,在确认消息中也可以包括两个确认序号。其中一个确认序号可以是可靠数据确认序号,以下称为第一确认序号;另一个确认序号可以是不可靠数据序号,以下称为第二确认序号。在本技术实施例提供的传输层协议中,一个数据还可以包括该数据是否可靠数据的是否可靠数据标识。该标识可以指示数据是可靠传输数据,或者数据是非可靠传输数据。
[0063]
参阅图3,为本技术实施例提供的通信方法的示例性流程图,可以包括以下步骤。
[0064]
步骤301:第一设备的应用层向第一设备的传输层发送第一数据。
[0065]
这里的第一数据可以包括多个报文包。第一设备的应用层可以在不同的时序或时隙发送上述多个报文包,在多个报文包通过不同时序或时隙发送给第一设备的传输层时,可以认为完成对第一数据的发送。
[0066]
其中,应用层还可以发送指示信息。该指示信息可以用于指示报文包是可靠传输数据或者用于指示报文包为非可靠传输数据。可选的,应用层可以将指示信息包含在报文包中。比如,应用层可以在报文包的头部携带指示信息。或者,应用层也可以分别发送报文包以及指示信息。
[0067]
步骤302:第一设备的传输层向第二设备的传输层发送第一数据。
[0068]
这里的第一数据可以包括多个报文包,每个报文包中可以包含第一序号和第二序号。其中,第一序号是可靠传输数据的编号,第二序号是非可靠传输数据的编号。
[0069]
第一设备的传输层可以接收到来自第一设备的应用层的第一数据,以及多个指示信息。这里的多个指示信息可以用于指示前述来自第一设备的应用层的第一数据中任一段数据为可靠传输数据,或者为非可靠传输数据。第一设备的传输层可以将前述来自第一设备的应用层的第一数据进行分段,得到多个报文包,并按照指示信息为多个报文包进行编号。其中,多个报文包中针对可靠传输数据的编号,第一序号是连续的,第二序号相同;多个报文包中不可靠传输数据的编号,第一序号是相同的第二序号是连续的。应理解,由于可靠传输数据和不可靠传输数据是交替出现的,因此相邻的可靠传输数据和不可靠传输数据的
第一序号是相同的,第二序号是连续的,或者第一序号是连续的,第二序号是相同的。本技术实施例中,多个报文包可以是不同时序或时隙发送的,在第一设备的传输层将多个报文包通过不同时序或时隙发送给第二设备的传输层时,可以认为已完成第一数据的发送。
[0070]
第一设备的传输层可以将报文包放到缓冲区中,并按照缓冲区中报文包的第一序号从小到大的顺序或者第一序号从大到小的顺序发送给第二设备的传输层。比如,第一设备的传输层向第二设备的传输层发送五个报文包,分别为报文包a、报文包b、报文包c、报文包d和报文包e。其中,报文包a、报文包b和报文包c为可靠传输数据,报文包a的序号可以为a0b0,报文包b的序号可以为a1b0,报文包c的序号为a2b0,报文包d和报文包e是非可靠传输数据,报文包d的序号可以为a2b1,报文包e的序号可以为a2b2。其中,第一设备的传输层可以在报文包中携带指示信息,该指示信息可以用于指示报文包是可靠传输数据,或者是非可靠传输数据。应理解,如果缓冲区中报文包的第一序号是相同的,则可以按照多个报文包的第二序号从小到大的顺序或者第二序号从大到小的顺序发送给第二设备的传输层。
[0071]
在一种可能的实现方式中,如果第一设备的传输层接收到来自第二设备的传输层发送的确认消息,第一设备的传输层可以识别该确认消息中包含的第一确认序号。第一设备的传输层可以释放缓冲区中该第一确认序号所对应的可靠传输数据。
[0072]
例如,第一设备的传输层接收到的确认消息中包含第一确认序号a0,因此第一设备可以将缓冲区中的第一序号为a0的可靠传输数据释放。如果第一设备的传输层又接收到了来自第二设备的传输层的确认消息,该确认消息中包含第一确认序号a2。由于第一设备的传输层已经接收到了包含第一确认序号为a0的确认消息,此时又接收到了包含第一确认序号为a2的确认消息,因此第一设备的传输层可以确定第二设备的传输层已经接收到了第一序号为a0、a1和a2的可靠传输数据,因此,第一设备的传输层可以释放缓冲区中的第一序号为a0、a1和a2的可靠传输数据。
[0073]
如果第一设备的传输层将可靠传输数据a0b0、a1b0、a2b0和a3b0通过缓冲区发送给第二设备的传输层。但第一设备的传输层未接收到来自第二设备的传输层的确认消息时,会触发重传机制。其中,重传机制可以参考现有可靠通信协议规定,本技术不做具体限定。比如,如果第一设备的传输层在发送报文包后的预设时间内未接收到包含该报文包的第一序号所对应的第一确认序号的确认消息,或者未接收到包含该报文包的第一序号所对应的第一确认序号和第二序号所对应的第二确认序号的确认消息时,第一设备的传输层可以对该报文包进行重传。
[0074]
举例来说,第一设备的传输层将可靠传输数据a0b0、a1b0、a2b0和a3b0通过缓冲区发送给第二设备的传输层。第一设备的传输层接收到了包含第一确认消息a2的确认序号,因此第一设备的传输层可以将缓冲区中a0b0、a1b0和a2b0释放。第一设备的传输层在预设时间内未接收到a3b0的确认消息,因此第一设备的传输层可以利用缓冲区中的a3b0进行重传。应理解,a3b0的重传数据可以与序号为a3b0的报文包相同,或者也可以是序号为a3b0的报文包的冗余版本。
[0075]
另一种可能的实现方式中,针对不可靠传输数据,在第一设备的传输层将报文包发送至缓冲区,通过缓冲区将报文包发送给第二设备的传输层。第一设备的传输层在将不可靠传输数据发送给第二设备的传输层后,可以释放缓冲区中该不可靠传输数据。
[0076]
比如,第一设备的传输层可以将序号为a3b1的报文包通过缓冲区发送给第二设备
的传输层后,将缓冲区中的序号为a3b1的报文包释放。
[0077]
如果第二设备的传输层接收到的报文包中包含的指示信息指示该报文包为可靠传输数据,则第二设备的传输层可以将该报文包的第一序号与记录的第一序号进行比较。如果第二设备的传输层确认与记录的第一序号是连续的,则第二设备的传输层可以将该记录的第一序号刷新为该报文包的第一序号。第二设备的传输层可以向第一设备的传输层发送确认消息,该确认消息可以携带与该报文包包含的第一序号所对应的第一确认序号。比如,第二设备的传输层接收到了序号为a0b0的报文包,且指示信息指示a0b0为可靠传输数据,则第二设备的传输层可以记录第一序号a0。第二设备的传输层又接收到了序号为a1b0的报文包,指示信息指示a1b0为可靠传输数据。第二设备的传输层可以将a1b0的第一序号a1与记录的第一序号a0比较。由于a1b0的第一序号a1与记录的第一序号a0连续,第二设备的传输层可以确定a1b0是连续的可靠传输数据,则第二设备的传输层可以向第一设备的传输层发送包含第一确认序号a1的确认消息。可选的,如果第二设备的传输层接收到了多个报文包,则第二设备的传输层可以将该多个报文包中起始的可靠传输数据包含的第一序号与记录的第一序号作比较。第二设备的传输层也可以将该多个报文包中可靠传输数据包含的第一序号分别作比较。比如,第二设备的传输层接收到了序号为a0b0的报文包,且指示信息指示a0b0为可靠传输数据,则第二设备的传输层可以记录第一序号为a0。第二设备的传输层又接收到了序号分别为a1b0、a2b0、a3b0、a3b1和a3b2的多个报文包。其中,a1b0、a2b0和a3b0为可靠传输数据。第二设备的传输层可以将该a1b0包含的第一序号a1与记录的第一序号a0作比较,以及将a2b0包含的第一序号a2与a1b0包含的第一序号a1作比较,以及将a3b0包含的第一序号a3与a2b0包含的第一序号a2作比较。由于a1与a0是连续的,a2与a1是连续的,a3与a2是连续的,且三个可靠传输数据的第二序号是相同的,第二设备的传输层可以确定a1b0、a2b0和a3b0是连续的可靠传输数据,因此可以向第一设备的传输层发送确认消息。该确认消息中包含的第一确认序号可以对应于前述连续的可靠传输数据中的最后一个数据的第一序号a3。
[0078]
可选的,第二设备的传输层在接收到来自还可以发送包含第二确认序号的确认消息。比如,第二设备的传输层接收到了序号为a1b3的报文包,指示信息指示该报文包为非可靠传输数据,第二设备的传输层可以向第一设备的传输层发送包含第二确认序号b3的确认消息。如果第二设备的传输层在之后又接收到了序号为a1b4的非可靠传输数据,第二设备的传输层可以向第一设备的传输层发送包含第二确认序号b4的确认消息。
[0079]
步骤303:第二设备的传输层向第二设备的应用层发送报文包。
[0080]
在一种可能的实现方式中,第二设备的传输层可以通过报文包的第一序号和第二序号确定是否丢失数据或者数据是否乱序。例如,第二设备的传输层接收到了序号为a0b0、a1b0和a3b0的报文包。其中,序号为a1b0的报文包包含的第一序号a1与序号为a0b0的报文包包含的第一序号a0是连续的,且序号为a1b0的报文包包含的第二序号b0与序号为a0b0的报文包包含的第二序号b0是相同的,因此第二设备的传输层可以确定在a0b0和a1b0之间并未丢失数据,也无数据乱序的情况。序号为a3b0的报文包包含的第一序号a3与序号为a1b0的报文包包含的第一序号a1是不连续的,且序号为a3b0的报文包包含的第二序号b0与序号为a1b0的报文包包含的第二序号b0是相同的。第二设备的传输层可以确定a1b0与a3b0之间存在数据丢失或者数据乱序的情况。其中,第二设备的传输层可以通过以下公式(1)确定丢
失的数据的数量。
[0081]
(x2-x1)+(y2-y1)-1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(1)
[0082]
其中,x2是接收顺序在后的报文包的第一序号,y2是接收顺序在后的报文包的第二序号,x1是接受顺序在前的报文包的第一序号,y1是接受顺序在前的第一序号。
[0083]
第二设备的传输层可以确定丢失的数据的数量为(3-1)+(0-0)-1=1个,即丢失了a2b0。
[0084]
又例如,第二设备的传输层接收到序号为a2b3的报文包。第二设备的传输层可以记录第一序号和第二序号,即a2b3。第二设备的传输层又接收到了序号为a4b7的报文包。第二设备的传输层可以确定a2b3和a4b7之间存在数据丢失或者数据乱序的情况。第二设备的传输层根据上述公式(1)可以确认丢失的数据的数量为(4-2)+(7-3)-1=5。应理解,第二设备的传输层可以确认丢失的数据数量为5个,但无法确定丢失的数据的序号。即。即,第二设备的传输层无法确认丢失的数据的序号是a2b4、a2b5、a3b5、a4b5和a4b6,还是a2b4、a3b4、a4b4、a4b5和a4b6,或者是其他的序号。
[0085]
在本技术实施例中,第二设备的传输层接收来自第一设备的传输层的报文包时可以用三种模式实现对报文包的保序处理。以下,分别介绍这三种模式。
[0086]
模式1:强保序模式
[0087]
第二设备的传输层接收到报文包后,可以根据该报文包包含的指示信息确定该报文包是可靠传输数据还是非可靠传输数据。如果是可靠传输数据,则第二设备的传输层可以确定该报文包包含的第一序号与记录的第一序号是否连续。如果是连续的,则第二设备的传输层可以将该报文包发送给传输层,并刷新记录的第一序号。第二设备的传输层还可以向第一设备的传输层发送包含与该报文包包含的第一序号相对应的第一确认序号的确认消息。第二设备的传输层可以根据刷新后的第一序号,确认接收缓冲区中是否存在第一报文序列。其中,该第一报文序列可以是可靠传输数据序列,也可以是非可靠传输数据序列。如果第一报文序列中包含的报文包的第一序号与记录的第一序号是相同的,则该第一报文序列是非可靠传输数据序列。在非可靠传输数据序列中包含多个非可靠传输数据时,多个非可靠传输数据的第一序号是相同的。如果第一报文序列中包含的报文包的第一序号与记录的第一序号是连续的,则该第一报文序列为可靠传输数据序列。在可靠传输数据中包含多个可靠传输数据时,多个可靠传输数据的第一序号是连续的,且多个可靠传输数据的第二序号是相同的。如果第二设备的传输层确定接收缓冲区中存在第一报文序列,则第二设备的传输层可以将第一报文序列发送给第二设备的应用层。如果第一报文序列是可靠传输数据序列,第二设备的传输层可以将记录的第一序号刷新为可靠传输数据序列中最后一个数据序列的第一序号。第二设备的传输层可以根据记录的第一序号继续判断接收缓冲区中是否存在第一报文序列,直至第二设备的传输层判断接收缓冲区中不存在第一报文序列,第二设备的传输层可以继续等待接收报文包。
[0088]
举例来说,第二设备的传输层接收到了序号为a0b0的报文包。第二设备的传输层可以将a0b0发送给第二设备的应用层。第二设备的传输层可以记录a0b0的第一序号a0,以及向第一设备的传输层发送包含有第一确认消息a0的确认消息。第二设备的传输层又接收到了序号为a1b0的报文包。其中,a1b0为可靠传输数据。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的。因此,第二设备的传输层可以将a1b0发送
给第二设备的应用层,并将记录的第一序号刷新为a1。第二设备的传输层可以向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层可以根据记录的第一序号a1,判断接收缓冲区中不存在第一报文序列,因此可以等待接收报文包。
[0089]
如果该报文包包含的第一序号与记录的第一序号是不连续的,且该报文包是可靠传输数据,则第二设备的传输层可以将该报文包发送至接收缓冲区,直至第二设备的传输层接收到第一序号与记录的第一序号是连续的可靠传输数据。第二设备的传输层可以将该可靠传输数据发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为该可靠传输数据的第一序号,并向第一设备的传输层发送包含有该可靠传输数据的第一序号所对应的第一确认序号的确认消息。第二设备的传输层可以判断接收缓冲区中是否存在前述第一报文序列。
[0090]
举例来说,第二设备的传输层接收到了序号为a0b0的报文包。第二设备的传输层可以将a0b0发送给第二设备的应用层。第二设备的传输层可以记录a0b0的第一序号a0,以及向第一设备的传输层发送包含有第一确认消息a0的确认消息。第二设备的传输层又接收到了序号为a2b0和a3b0的报文包。其中,a2b0与a3b0是可靠传输数据。第二设备的传输层可以确定a2b0包含的第一序号a2以及a3b0包含的第一序号a3与记录的第一序号a0是不连续的,因此第二设备的传输层可以将a2b0和a3b0发送至接收缓冲区。第二设备的传输层又接收到了序号为a1b0的报文包,a1b0为可靠传输数据。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的。第二设备的传输层可以将a1b0发送给第二设备的应用层,并将记录的第一序号刷新为a1。第二设备的传输层可以判断接收缓冲区中存在第一报文序列a2b0和a3b0。因此,第二设备的传输层可以将a2b0和a3b0发送给第二设备的应用层。第二设备的传输层可以刷新记录的第一序号为a3,并向第一设备的应用层发送包含第一确认序号a3的确认消息。第二设备的传输层继续根据a3判断接收缓冲区中不存在第一报文序列,因此可以等待接收报文包。
[0091]
如果指示信息指示该报文包是非可靠传输数据,则第二设备的传输层可以确定该报文包包含的第一序号与记录的第一序号是否相同。如果是相同的,则第二设备的传输层可以将该非可靠传输数据发送给第二设备的应用层。
[0092]
举例来说,第二设备的传输层接收到了序号为a0b0和a1b0的报文包。其中,a0b0和a1b0是可靠传输数据。第二设备的传输层可以记录a0b0包含的第一序号。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的,因此可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层还可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层又接收到了序号为a1b2的报文包。其中,a1b2为非可靠传输数据。由于a1b2包含的第一序号a1与记录的第一序号a1是相同的,因此第二设备的传输层可以将a1b2发送给第二设备的应用层。
[0093]
如果该非可靠传输数据包含的第一序号与记录的第一序号不相同,则第二设备的传输层可以将该非可靠传输数据发送至接收缓冲区。直至第二设备的应用层接收到第一序号与记录的第一序号连续的可靠传输数据。第二设备的应用层可以将该可靠传输数据发送给第二设备的应用层。第二设备的传输层可以根据刷新后的第一序号判断接收缓冲区中是否存在第一报文序列,直至第二设备的传输层判断接收缓冲区中不存在第一报文序列,第二设备的传输层可以继续等待接收报文包。
[0094]
举例来说,第二设备的应用层接收到了序号分别为a0b0、a1b0、a2b1、a2b2、a2b3、a3b3和a4b3的多个报文包。其中,a0b0、a1b0、a3b3和a4b3是可靠传输数据;a2b1、a2b2和a2b3是非可靠传输数据。第二设备的传输层可以记录a0b0的第一序号a0,第二设备的传输层可以确定可靠传输数据a1b0包含的第一序号a1与记录的第一序号a0是连续的,因此第二设备的传输层可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层可以确定非可靠传输数据a2b1、a2b2和a2b3包含的第一序号a2与记录的第一序号a1是不相同的,以及可靠传输数据a3b3和a4b3与记录的第一序号a1是不连续的,因此第二设备的传输层可以将a2b1、a2b2、a2b3、a3b3和a4b3发送至接收缓冲区。
[0095]
第二设备的传输层又接收到了序号为a2b0的报文包,a2b0是可靠传输数据。第二设备的传输层可以确定a2b0包含的第一序号a2与记录的第一序号a1是连续的,第二设备的传输层可以将a2b0发送给第二设备的应用层。第二设备的应用层可以将第一序号刷新为a2,并判断接收缓冲区中存在第一报文序列。该第一报文序列分别为a2b1、a2b2和a2b3组成的非可靠传输数据序列,以及由a3b3和a4b3组成的可靠传输数据序列。第二设备的传输层可以将上述非可靠传输数据序列和可靠传输数据序列发送给第二设备的应用层。其中,第二设备的传输层发送上述报文包的顺序应该是按照a2b0、a2b1、a2b2、a2b3、a3b3和a4b3的顺序发送。第二设备的传输层可以将记录的第一序号刷新为a4,并向第一设备的传输层发送包含第一确认序号a4的确认消息。第二设备的传输层可以根据刷新后的第一序号a4判断接收缓冲区中不存在第一报文序列,因此可以等待接收报文包。
[0096]
以下,以具体的实施例对上述强保序模式进行解释和说明。
[0097]
例如,第二设备的传输层接收到了序号分别为a0b0、a1b0、a2b1、a2b3、a3b3、a4b3、a5b3、a5b4、a5b5、a5b6、a7b6、a8b6、a8b7、a8b8和a8b9的报文包。其中,a0b0、a1b0、a3b3、a4b3、a5b3、a7b6和a8b6是可靠传输数据,a2b1、a2b3、a5b4、a5b5、a5b6、a8b7、a8b8和a8b9是非可靠传输数据。第二设备的传输层可以记录a0b0的第一序号a0。第二设备的传输层可以确定可靠传输数据a1b0包含的第一序号a1与记录的第一序号a0是连续的,第二设备的传输层可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层可以确定非可靠传输数据a2b1和a2b3包含的第一序号a2与记录的第一序号a1是不相同的,因此第二设备的传输层可以将a2b1和a2b3发送至接收缓冲区。以此类推,第二设备的传输层也可以将非可靠传输数据a5b4、a5b5、a5b6、a8b7、a8b8和a8b9发送至接收缓冲区。第二设备的传输层可以确定可靠传输数据a3b3包含的第一序号a3与记录的第一序号a1是不连续的,可以将a3b3发送至接收缓冲区。以此类推,第二设备的传输层也可以将可靠传输数据a4b3、a5b3、a7b6和a8b6发送至接收缓冲区。
[0098]
第二设备的传输层又接收到了序号为a2b0的报文包,a2b0为可靠传输数据。第二设备的传输层可以确定可靠传输数据a2b0包含的第一序号a2与记录的第一序号a1是连续的。第二设备的传输层可以将a2b0以及接收缓冲区中的第一序号与a2b0相同的非可靠传输数据a2b1和a2b3,以及第一序号与a2b0连续的可靠传输数据序列a3b3、a4b3和a5b3,以及第一序号与a5b3相同的非可靠传输数据a5b4、a5b5和a5b6发送给第二设备的应用层。可第二设备的传输层可以将记录的第一序号刷新为a5,并向第一设备的传输层发送包含第一确认
序号a5的确认消息。第二设备的传输层可以根据刷新后的第一序号a5判断接收缓冲区中不存在第一报文序列,因此可以继续等待接收报文包。
[0099]
在一种可能的实现方式中,如果第二设备的传输层接收到的报文包包含的第一序号小于记录的第一序号,则可以认为该报文包是异常的数据。因此,第二设备的传输层可以将该报文包按照异常数据进行处理。比如,第二设备的传输层可以将该报文包丢弃,或者可以通知第二设备的应用层接收到异常的数据。其中,第二设备的传输层可以通过发送正常数据的通道或发送异常数据的通道发送第二设备的应用层。
[0100]
例如,在上述实施例中,第二设备的传输层又接收到了序号为a2b2的报文包,a2b2为非可靠传输数据。第二设备的传输层可以确定a2b2的第一序号a2小于记录的第一序号a5,因此第二设备的传输层可以丢弃a2b2,或者通过发送正常数据的通道或发送异常数据的通道将a2b2发送给第二设备的应用层。
[0101]
模式2:弱保序模式
[0102]
第二设备的传输层接收到报文包后,可以根据该报文包包含的指示信息确定该报文包是可靠传输数据还是非可靠传输数据。如果是可靠传输数据,则第二设备的传输层可以确定该报文包包含的第一序号与记录的第一序号是否连续。如果连续的,则第二设备的传输层可以将该报文包发送给传输层,并刷新记录的第一序号。第二设备的传输层还可以向第一设备的传输层发送包含与该报文包包含的第一序号相对应的第一确认序号的确认消息。第二设备的传输层可以根据刷新后的第一序号,确认接收缓冲区中是否存在第一报文序列,直至第二设备的传输层确定接收缓冲区中不存在第一报文序列,则继续等待接收报文包。
[0103]
举例来说,第二设备的传输层接收到了序号为a0b0的报文包。第二设备的传输层可以将a0b0发送给第二设备的应用层。第二设备的传输层可以记录a0b0的第一序号a0,以及向第一设备的传输层发送包含有第一确认消息a0的确认消息。第二设备的传输层又接收到了序号为a1b0的报文包。其中,a1b0为可靠传输数据。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的。因此,第二设备的传输层可以将a1b0发送给第二设备的应用层,并将记录的第一序号刷新为a1。第二设备的传输层可以向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层根据刷新后的第一序号a1判断接收缓冲区中不存在第一报文序列,因此可以继续接收报文包。
[0104]
如果该可靠传输数据包含的第一序号与记录的第一序号是不连续的,则第二设备的传输层可以将该可靠传输数据发送至接收缓冲区,直至第二设备的传输层接收到第一序号与记录的第一序号是连续的可靠传输数据。第二设备的传输层可以将该可靠传输数据发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为该可靠传输数据的第一序号,并向第一设备的传输层发送包含有该可靠传输数据的第一序号所对应的第一确认序号的确认消息。第二设备的传输层可以判断接收缓冲区中是否存在前述第一报文序列。
[0105]
举例来说,第二设备的传输层接收到了序号为a0b0的报文包。第二设备的传输层可以将a0b0发送给第二设备的应用层。第二设备的传输层可以记录a0b0的第一序号a0,以及向第一设备的传输层发送包含有第一确认消息a0的确认消息。第二设备的传输层又接收到了序号为a2b0和a3b0的报文包。其中,a2b0与a3b0是可靠传输数据。第二设备的传输层可
以确定a2b0包含的第一序号a2以及a3b0包含的第一序号a3与记录的第一序号a0是不连续的,因此第二设备的传输层可以将a2b0和a3b0发送至接收缓冲区。第二设备的传输层又接收到了序号为a1b0的报文包,a1b0为可靠传输数据。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的。第二设备的传输层可以将a1b0发送给第二设备的应用层,并将记录的第一序号刷新为a1。第二设备的传输层可以判断接收缓冲区中存在第一报文序列a2b0和a3b0。因此,第二设备的传输层可以将a2b0和a3b0发送给第二设备的应用层。第二设备的传输层可以刷新记录的第一序号为a3,并向第一设备的应用层发送包含第一确认序号a3的确认消息。第二设备的传输层继续根据a3判断接收缓冲区中不存在第一报文序列,因此可以等待接收报文包。
[0106]
另外,需要说明的是,本技术实施例提供的弱保序模式下对于可靠传输数据的处理与强保序模式下对于可靠传输数据的处理是相同的。两种模式针对可靠传输数据的处理均是按照第一设备发送可靠传输数据的顺序,将可靠传输数据发送给第二设备的应用层。而对于不可靠传输数据的处理,弱保序模式与强保序模式是不同的。其中,强保序模式可以是如模式1中所述的,按照第一设备发送可靠传输数据和非可靠传输数据的顺序,将可靠传输数据和非可靠传输数据发送给第二设备的应用层。但弱保序模式中,非可靠传输数据可以按照接收顺序发送给第二设备的应用层。以下,对弱保序模式下针对非可靠传输数据的处理进行说明。
[0107]
如果指示信息指示该报文包是非可靠传输数据,则第二设备的传输层可以将该非可靠传输数据发送给第二设备的应用层。
[0108]
举例来说,第二设备的传输层接收到了序号为a0b0和a1b0的报文包。其中,a0b0和a1b0是可靠传输数据。第二设备的传输层可以记录a0b0包含的第一序号。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的,因此可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层还可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层又接收到了序号为a2b1的报文包。其中,a2b1为非可靠传输数据,因此第二设备的传输层可以将a2b1发送给第二设备的应用层。
[0109]
以下,以具体的实施例对上述弱保序模式进行解释和说明。
[0110]
例如,第二设备的传输层接收到了序号分别为a0b0、a1b0、a2b1、a2b3、a3b3、a4b3、a5b3、a5b4、a5b5、a5b6、a7b6、a8b6、a8b7、a8b8和a8b9的报文包。其中,a0b0、a1b0、a3b3、a4b3、a5b3、a7b6和a8b6是可靠传输数据,a2b1、a2b3、a5b4、a5b5、a5b6、a8b7、a8b8和a8b9是非可靠传输数据。第二设备的传输层可以记录a0b0的第一序号a0。第二设备的传输层可以确定可靠传输数据a1b0包含的第一序号a1与记录的第一序号a0是连续的,第二设备的传输层可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层可以将非可靠传输数据a2b1、a2b3、a5b4、a5b5、a5b6、a8b7、a8b8和a8b9发送给第二设备的应用层。第二设备的传输层可以确定可靠传输数据a3b3包含的第一序号a3与记录的第一序号a1是不连续的,因此第二设备的传输层可以将a3b3发送至接收缓冲区。以此类推,第二设备的传输层可以将可靠传输数据a4b3、a5b3、a7b6和a8b6发送至接收缓冲区。
[0111]
第二设备的传输层接收到了序号为a2b0的报文包,a2b0为可靠传输数据。第二设
备的传输层可以确定a2b0包含的第一序号a2与记录的第一序号a1是连续的,因此第二设备的传输层可以将a2b0,以及接收缓冲区中的可靠传输数据序列a3b3、a4b3和a5b3发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a5,并向第一设备的传输层发送包含第一确认序号a5的确认消息。第二设备的传输层可以根据刷新后的第一序号a5判断接收缓冲区中不存在第一报文序列,因此可以继续接收报文包。
[0112]
在一种可能的实现方式中,如果第二设备的传输层接收到的报文包包含的第一序号小于记录的第一序号的非可靠传输数据,因此第二设备的传输层可以将该报文包发送给第二设备的应用层。
[0113]
例如,在上述实施例中,第二设备的传输层又接收到了序号为a2b2的报文包,a2b2为非可靠传输数据。虽然a2b2的第一序号a2小于记录的第一序号a5,但a2b2是非可靠传输数据,所以第二设备的传输层可以将a2b2发送给第二设备的应用层。
[0114]
模式3:阶段性保序模式
[0115]
第二设备的传输层接收到报文包后,可以根据该报文包包含的指示信息确定该报文包是可靠传输数据还是非可靠传输数据。如果是可靠传输数据,则第二设备的传输层可以确定该报文包包含的第一序号与记录的第一序号是否连续。如果连续的,则第二设备的传输层可以将该报文包发送给传输层,并刷新记录的第一序号。第二设备的传输层还可以向第一设备的传输层发送包含与该报文包包含的第一序号相对应的第一确认序号的确认消息。第二设备的传输层可以根据刷新后的第一序号,确认接收缓冲区中是否存在第一报文序列,直至第二设备的传输层确定接收缓冲区中不存在第一报文序列,则继续等待接收报文包。
[0116]
举例来说,第二设备的传输层接收到了序号为a0b0的报文包。第二设备的传输层可以将a0b0发送给第二设备的应用层。第二设备的传输层可以记录a0b0的第一序号a0,以及向第一设备的传输层发送包含有第一确认消息a0的确认消息。第二设备的传输层又接收到了序号为a1b0的报文包。其中,a1b0为可靠传输数据。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的。因此,第二设备的传输层可以将a1b0发送给第二设备的应用层,并将记录的第一序号刷新为a1。第二设备的传输层可以向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层根据刷新后的第一序号a1判断接收缓冲区中不存在第一报文序列,因此可以继续接收报文包。
[0117]
如果指示信息指示该报文包是非可靠传输数据,则第二设备的传输层可以确定该报文包包含的第一序号与记录的第一序号是否相同。如果是相同的,则第二设备的传输层可以将该非可靠传输数据发送给第二设备的应用层。
[0118]
举例来说,第二设备的传输层接收到了序号为a0b0和a1b0的报文包。其中,a0b0和a1b0是可靠传输数据。第二设备的传输层可以记录a0b0包含的第一序号。第二设备的传输层可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的,因此可以将a0b0和a1b0发送给第二设备的应用层。第二设备的传输层还可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层又接收到了序号为a1b2的报文包。其中,a1b2为非可靠传输数据。由于a1b2包含的第一序号a1与记录的第一序号a1是相同的,因此第二设备的传输层可以将a1b2发送给第二设备的应用层。
[0119]
如果接收到的报文包包含的指示信息指示该报文包是可靠传输数据,但该报文包
包含的第一序号与记录的第一序号是不连续的,或者如果接收到的报文包包含的指示信息指示该报文包是非可靠传输数据,但该报文包包含的第一序号与记录的第一序号是不相同的,则第二设备的传输层可以将该报文包发送至接收缓冲区中。第二设备的传输层可以确定接收缓冲区中是否包含第二报文序列。这里的第二报文序列可以是指在该序列之前是第一序号与该序列中第一个数据包含的第一序号连续的报文包,在该序列之后是第一序号与该序列中最后一个数据包含的第一序号相同的非可靠传输数据;或者,在该序列之前是第一序号与该序列中第一个数据包含的第一序号连续的报文包,在该序列之后是第一序号与该序列中最后一个数据包含的第一序号连续的可靠传输数据。应理解,可靠传输数据序列中可以包含至少一个可靠传输数据。需要说明的是,如果该序列中包含多个可靠传输数据,那么多个可靠传输数据的第一序号是连续的,且第二序号是相同的。
[0120]
如果第二设备的传输层接收缓冲区中存在第二报文序列,则第二设备的传输层可以将该第二报文序列发送给第二设备的应用层。第二设备的传输层可以将该第二报文序列之前的非可靠传输数据发送给第二设备的应用层。可选的,第二设备的传输层可以将该第二报文序列之前的可靠传输数据发送给第二设备的应用层。应理解,第二设备的传输层可以通过发送正常数据的通道或发送异常数据的通道将第二报文序列之前的可靠传输数据发送给第二设备的应用层。第二设备的传输层也可以将记录的第一序号刷新为该完整的可靠传输数据序列中最后一个数据包含的第一序号,并向第一设备的传输层发送包含与该完整的可靠传输数据序列中最后一个数据包含的第一序号相对应的第一确认序号的确认消息。第二设备的传输层可以根据刷新后的第一序号,判断接收缓冲区中是否存在第一报文序列,直至接收缓冲区中不存在第一报文序列,第二设备的传输层可以继续接收报文包。
[0121]
如果第二设备的传输层确定接收缓冲区中不存在第二报文序列,则第二设备的传输层可以继续接收报文包。
[0122]
以下,以具体实施例对上述阶段性保护模式进行解释和说明。
[0123]
例如,第二设备的传输层接收到了序号分别为a0b0、a1b0、a2b1、a2b2、a3b3、a5b3、a5b4、a5b6、a6b6、a7b6、a8b8、a9b9、a11b9、a11b10和a11b11的报文包。其中,a0b0、a1b0、a3b3、a5b3、a6b6、a7b6、a9b9和a11b9是可靠传输数据,a2b1、a2b2、a5b4、a5b6、a8b8、a11b10和a11b11是非可靠传输数据。
[0124]
第二设备的传输层可以记录a0b0的第一序号a0,并可以确定a1b0包含的第一序号a1与记录的第一序号a0是连续的,第二设备的传输层可以将a0b0与a1b0发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a1,并向第一设备的传输层发送包含第一确认序号a1的确认消息。第二设备的传输层可以确认余下的报文包a2b1、a2b2、a3b3、a5b3、a5b4、a5b6、a6b6、a7b6、a8b6、a9b9、a11b9、a11b10、a11b11中可靠传输数据包含的第一序号与记录的第一序号a1不连续,非可靠传输数据的第一序号与记录的第一序号a1不相同。第二设备的传输层可以确定余下的报文包中不包含完整的可靠传输数据序列,即第二报文序列,第二设备的传输层可以将前述余下的报文包发送至接收缓冲区中。
[0125]
在一个示例中,第二设备的传输层先接收到了序号为a4b3的报文包,a4b3是可靠传输数据。第二设备的传输层可以确定接收缓冲区中包含完整的可靠传输数据序列a3b3、a4b3和a5b3。其中,该序列之前是第一序号与a3b3连续的非可靠传输数据a2b2,该序列之后是第一序号与a5b3相同的非可靠传输数据a5b4。第二设备的传输层可以将该可靠传输数据
序列a3b3、a4b3和a5b3,以及该可靠传输数据序列之前的非可靠传输数据a2b1和a2b2发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a5,并向第一设备的传输层发送包含第一确认序号a5的确认消息。
[0126]
第二设备的传输层可以根据刷新后的第一序号a5对接收缓冲区的报文包进行判定。比如,第二设备的传输层可以确定接收缓冲区中的非可靠传输数据a5b4和a5b6的第一序号与记录的第一序号a5相同,第二设备的传输层可以将a5b4和a5b6发送给第二设备的应用层。第二设备的传输层可以确定接收缓冲区中的可靠传输数据序列a6b6和a7b6中a6b6的第一序号与记录的第一序号a5是连续的,第二设备的传输层可以将该可靠传输数据序列a6b6和a7b6发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a7,并向第一设备的传输层发送包含第一确认序号a7的确认消息。第二设备的传输层可以根据刷新后的第一序号a7对接收缓冲区的报文包进行判定,第二设备的传输层确定接收缓冲区中不存在第一报文序列和第二报文序列,因此可以继续接收报文包。
[0127]
在另一示例中,第二设备的传输层先接收到了序号为a8b6的报文包,a8b6为可靠传输数据。第二设备的传输层可以确定接收缓冲区中包含第二报文序列a6b6、a7b6和a8b6。该序列之前是第一序号与a6b6连续的非可靠传输数据a5b6,该序列之后是第一序号与a8b6相同的非可靠传输数据a8b8。第二设备的传输层可以将该序列a6b6、a7b6和a8b6,以及该序列之前的非可靠传输数据a2b1、a2b2、a5b4和a5b6发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a8,并向第一设备的传输层发送包含第一确认序号a8的确认消息。可选的,第二设备的传输层可以将a3b3和a5b3通过发送正常数据的通道或者发送异常数据的通道发送给第二设备的应用层。第二设备的传输层可以根据刷新后的第一序号a8对接收缓冲区中的报文包进行判定。比如,第二设备的传输层可以确定接收缓冲区中的可靠传输数据a9b9包含的第一序号a9与记录的第一序号a8是连续的,第二设备的传输层可以将a9b9发送给第二设备的应用层。第二设备的传输层可以将记录的第一序号刷新为a9,并向第一设备的传输层发送包含第一确认序号a9的确认消息。第二设备的传输层可以根据刷新的第一序号a9对报文包继续进行判定,第二设备的传输层可以确定接收缓冲区中不存在第一报文序列和第二报文序列,因此第二设备的传输层继续接收报文包。
[0128]
在一种可能的实现方式中,如果第二设备的传输层接收到的报文包包含的第一序号小于记录的第一序号,则可以认为该报文包是异常的数据。因此,第二设备的传输层可以将该报文包按照异常数据进行处理。比如,第二设备的传输层可以将该报文包丢弃,或者可以将异常的数据发送给第二设备的应用层。其中,第二设备的传输层可以通过发送正常数据的通道或发送异常数据的通道将异常的数据发送给第二设备的应用层。
[0129]
例如,在上述实施例中,第二设备的传输层又接收到了序号为a4b3的报文包,a4b3是可靠传输数据。第二设备的传输层可以确定a4b3包含的第一序号a4小于记录的第一序号a8,可以认为a4b3是异常的数据。因此,第二设备的传输层可以将该报文包丢弃,或者也可以通过发送正常数据的通道或发送异常数据的通道将a4b3发送给第二设备的应用层。
[0130]
基于与上述通信方法的同一技术构思,如图4所示,提供了一种电子设备400,该电子设备400能够执行上述方法中由第一设备或第二设备执行的各个步骤。设备400包括:收发单元410,处理单元420,可选的,还包括存储单元430;处理单元420可以分别与存储单元430和收发单元410相连,所述存储单元430可以与收发单元410相连。其中,处理单元420也
可以称为处理器,处理单极,处理模块,处理设备等。可选的,可以将收发单元410中用于实现接收功能的器件视为接收单元,可以将收发单元410中用于实现发送功能的器件视为发送单元,即收发单元410可以包括接收单元和发送单元。收发单元410有时也可以称为收发机、收发器或收发电路等。接收单元有时也可以称为接收机、接收器或接收电路等。发送单元有时也可以称为发射机、发射器或发射电路等。
[0131]
应理解,收发单元410用于执行上述方法实施例中第一设备侧或第二设备侧的发送操作和接收操作,处理单元420用于执行上述方法实施例中第一设备侧或第二设备侧的除了收发操作之外的其他操作。
[0132]
所述存储单元430用于存储计算机程序;
[0133]
示例性的,在设备400执行第一设备执行的各个步骤时,所述处理单元420用于通过所述收发单元410发送第一数据。其中,第一数据的描述可以参见如图2所示的方法实施例中的相关描述,此处不再赘述。
[0134]
在一种设计中,所述收发单元410还用于,接收来自第二设备的多个确认消息;所述每个确认消息包含所述与每个第一序号对应的不同的第一确认序号。
[0135]
在一种设计中,所述第一数据包括的多个报文包是可靠传输数据,所述处理单元420通过所述收发单元410发送所述报文包时,具体用于:将所述报文包发送至缓冲区。其中,所述缓冲区的描述可以参见如图2所示的方法实施例中的相关描述。在通过所述收发单元410接收到所述确认消息时,释放所述缓冲区中的所述第一确认序号所对应的所述报文包;未接收到所述和所述报文包对应的确认消息,且所述第一数据满足预设的重传条件时,重传所述缓冲区中的所述报文包。
[0136]
在一种设计中,所述第一数据包括的多个报文包是非可靠传输数据,所述处理单元420通过所述收发单元410发送所述报文包时,具体用于:将所述报文包发送至缓冲区,按照所述缓冲区内报文包的第一序号的顺序对所述缓冲区内的报文包进行发送;释放所述缓冲区中的所述报文包。
[0137]
示例性的,在设备400执行第二设备执行的各个步骤时,所述处理单元420用于通过所述收发单元410接收第一数据。其中,第一数据包括多个报文包。所述报文包的描述可以参见如图2所示的方法实施例中的相关描述,此处不再赘述。通过所述收发单元410将所述报文包发送给应用层。
[0138]
在一种设计中,所述处理单元420通过所述收发单元410将所述报文包发送给应用层时,具体用于:将所述报文包的第一序号与记录的第一序号进行比较;若所述报文包的第一序号与所述记录的第一序号连续,且所述报文包为可靠传输数据,则通过所述收发单元410将所述报文包发送给所述应用层;判断接收缓冲区中是否存在第一报文序列;所述第一报文序列的描述可以参见如图2所示的方法实施例中的相关描述,此处不再赘述。若存在,通过所述收发单元410将所述第一报文序列发送给所述应用层;若所述第一报文序列为可靠传输数据序列,将所述记录的第一序号刷新为所述第一报文序列中最后一个报文包的第一序号;返回执行判断所述接收缓冲区中是否存在第一报文序列的步骤,直至所述接收缓冲区不存在所述第一报文序列,返回执行通过所述收发单元410接收所述第一数据的步骤;若不存在,返回执行通过所述收发单元410接收所述第一数据的步骤。
[0139]
在一种设计中,所述处理单元420还用于:若所述报文包的第一序号与所述记录的
第一序号不连续,且所述报文包为可靠传输数据,则将所述报文包放至所述接收缓冲区,返回执行通过所述收发单元410接收所述第一数据的步骤。
[0140]
在一种设计中,所述处理单元420通过所述收发单元410将所述报文包发送给应用层时,具体用于:将所述报文包的第一序号与记录的第一序号进行比较;若所述报文包的第一序号与记录的第一序号是相同的,且所述报文包为非可靠传输数据,则通过所述收发单元410将所述报文包发送给应用层。
[0141]
在一种设计中,所述处理单元420通过所述收发单元410将所述报文包发送给应用层时,具体用于:将所述报文包的第一序号与记录的第一序号进行比较;若所述报文包的第一序号与记录的第一序号是不同的,且所述报文包为非可靠传输数据,则将所述报文包放至接收缓冲区,返回执行通过所述收发单元410接收所述第一数据的步骤。
[0142]
在一种设计中,所述处理单元420通过所述收发单元410将所述报文包发送给应用层时,具体用于:若所述报文包为非可靠传输数据,则通过所述收发单元410将所述报文包发送给所述应用层。
[0143]
在一种设计中,所述处理单元420还用于:若所述报文包的第一序号与所述记录的第一序号不连续,且所述报文包为可靠传输数据,或者所述报文包的第一序号与所述记录的第一序号不相同,且所述报文包为非可靠传输数据,则将所述报文包放至所述接收缓冲区;判断所述接收缓冲区中是否存在第二报文序列。所述第二报文序列的相关描述可以参见如图2所示的方法实施例,此处不再赘述。若存在,通过所述收发单元410将所述第二报文序列发送给所述应用层;将所述记录的第一序号刷新为所述第二报文序列中最后一个报文包的第一序号返回执行所述判断所述接收缓冲区中是否存在所述第一报文序列的步骤,直至所述接收缓冲区不存在所述第一报文序列,返回执行通过所述收发单元410接收所述第一数据的步骤;
[0144]
若不存在,返回执行通过所述收发单元410接收所述第一数据的步骤。
[0145]
在一种设计中,所述处理单元420还用于:通过所述收发单元410将所述第二报文序列之前的非可靠传输数据和可靠传输数据发送给所述应用层。
[0146]
如图5所示为本技术实施例提供电子设备500,用于实现上述方法中第一设备或第二设备的功能。
[0147]
设备500包括至少一个处理器520,用于实现本技术实施例提供的方法中第一设备或第二设备的功能。设备500还可以包括通信接口510。在本技术实施例中,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口,用于通过传输介质和其它设备进行通信。例如,通信接口510用于设备500中的设备可以和其它设备进行通信。所述处理器520可以完成如图4所示的处理单元420的功能,所述通信接口510可以完成如图4所示的收发单元410的功能。
[0148]
设备500还可以包括至少一个存储器530,用于存储程序指令和/或数据。存储器530和处理器520耦合。本技术实施例中的耦合是设备、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于设备、单元或模块之间的信息交互。处理器520可能和存储器530协同操作。处理器520可能执行存储器530中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
[0149]
本技术实施例中不限定上述通信接口510、处理器520以及存储器530之间的具体
连接介质。本技术实施例在图5中以存储器530、处理器520以及通信接口510之间通过总线540连接,总线在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0150]
作为本实施例的另一种形式,提供一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中第一设备侧或第二设备侧的方法。
[0151]
作为本实施例的另一种形式,提供一种包含指令的计算机程序产品,该指令被执行时执行上述方法实施例中第一设备侧或第二设备侧的方法。
[0152]
作为本实施例的另一种形式,提供一种通信系统,该系统可以包括上述至少一个第一设备和上述至少一个第二设备。
[0153]
应理解,本发明实施例中提及的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0154]
还应理解,本发明实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0155]
需要说明的是,当处理器为通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
[0156]
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0157]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0158]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0159]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0160]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0161]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0162]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0163]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0164]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1