CN115118392B - D-sack的确定方法、处理器与通信系统 - Google Patents
D-sack的确定方法、处理器与通信系统 Download PDFInfo
- Publication number
- CN115118392B CN115118392B CN202210655540.8A CN202210655540A CN115118392B CN 115118392 B CN115118392 B CN 115118392B CN 202210655540 A CN202210655540 A CN 202210655540A CN 115118392 B CN115118392 B CN 115118392B
- Authority
- CN
- China
- Prior art keywords
- packet
- data
- information
- received
- data packet
- 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 84
- 238000004891 communication Methods 0.000 title claims abstract description 35
- 230000004044 response Effects 0.000 claims abstract description 55
- 230000008569 process Effects 0.000 claims abstract description 25
- 208000032369 Primary transmission Diseases 0.000 claims description 44
- 230000005540 biological transmission Effects 0.000 abstract description 72
- 238000001514 detection method Methods 0.000 abstract description 24
- 208000032370 Secondary transmission Diseases 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- 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/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
-
- 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/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- 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)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种D‑SACK的确定方法、处理器与通信系统,该确定方法包括:发送端将多个数据包发送至接收端,数据包包括根据接收端的业务请求信息而生成的业务响应数据和第一包号;发送端接收接收端发送的多个ACK包,并对ACK包进行解析和处理,得到第一目标信息,第一目标信息至少包括第二包号和是否接收信息,是否接收信息为接收端是否已经接收到数据包所携带的业务响应数据的信息;在数据包的第一包号与第二包号相同的情况下,确定接收端已接收到第一包号对应的数据包,并根据是否接收信息,确定ACK包是否携带有D‑SACK信息,解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D‑SACK检测的问题。
Description
技术领域
本申请涉及通信领域,具体而言,涉及一种D-SACK的确定方法、计算机可读存储介质、处理器与通信系统。
背景技术
D-SACK(Duplicate-SACK,重复选择确认)用于表示TCP的SACK(SelectiveAcknowledgement,选择确认)报文中携带了接收端收到的重复数据段信息,它一般是由无效重传或者虚假重传引起的。IETF RFC2883定义了TCP SACK及D-SACK的标准。D-SACK的目的是为了更好地进行数据传输的流量控制,主要有以下几个用处:
1)、用于判断是发送的数据包丢失还是返回的ACK包丢失;
2)、用于判断数据包在传输过程中是否被路由器复制并转发;
3)、用于判断丢包检测算法是否存在问题导致发生无效重传。
IETF RFC2883所定义的D-SACK实现适用于TCP(传输控制协议,TransmissionControl Protocol),而对于基于UDP(用户数据报协议,User Datagram Protocol)等其他协议构建的传输协议,由于网络数据包的定义格式以及传输算法的实现流程和TCP协议存在较大的差异,因此,IETF RFC2883所定义的D-SACK便不再适用。
因此,亟需一种能够对基于UDP等其他协议构建的传输协议进行D-SACK检测的方法。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解,因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。
发明内容
本申请的主要目的在于提供一种D-SACK的确定方法、计算机可读存储介质、处理器与通信系统,以解决现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题。
根据本发明实施例的一个方面,提供了一种D-SACK的确定方法,包括:在发送端与接收端建立通信连接的情况下,所述发送端将多个数据包发送至所述接收端,所述数据包包括根据所述接收端的业务请求信息而生成的业务响应数据和第一包号;所述发送端接收所述接收端发送的多个ACK包,并对所述ACK包进行解析和处理,得到第一目标信息,所述第一目标信息至少包括第二包号和是否接收信息,所述是否接收信息为所述接收端是否已经接收到所述数据包所携带的所述业务响应数据的信息;在所述数据包的所述第一包号与所述第二包号相同的情况下,确定所述接收端已接收到所述第一包号对应的所述数据包,并根据所述是否接收信息,确定所述ACK包是否携带有D-SACK信息。
可选地,根据所述是否接收信息,确定所述ACK包是否携带有D-SACK信息,包括:在所述是否接收信息为已接收的情况下,确定所述ACK包携带有所述D-SACK信息,并确定与所述第二包号对应的所述数据包为无效重传包;在所述是否接收信息为未接收的情况下,确定所述ACK包不携带有所述D-SACK信息。
可选地,所述发送端包括元数据管理队列,所述元数据管理队列中有多个所述数据包,每一个所述数据包均具有第二目标信息,所述第二目标信息至少包括所述第一包号、父包号、子包号和接收标志信息,所述接收标志信息用于表征所述发送端发送的所述数据包所携带的所述业务响应数据是否已被所述接收端接收到,在所述是否接收信息为未接收的情况下,确定所述ACK包不携带有所述D-SACK信息之后,所述确定方法还包括:将所述数据包的所述接收标志信息更新为已接收。
可选地,在将所述数据包的所述接收标志信息更新为已接收之后,所述确定方法还包括:在所述数据包的所述父包号为0的情况下,确定所述发送端发送至所述接收端的所述数据包为初传包;在所述数据包的所述父包号不为0的情况下,确定所述发送端发送至所述接收端的所述数据包为所述重传包。
可选地,在所述数据包的所述父包号为0的情况下,确定所述发送端发送至所述接收端的所述数据包为所述初传包之后,所述确定方法还包括:确定所述子包号是否为0,在所述子包号不为0的情况下,将所述子包号对应的所述数据包确定为所述重传包,并将所述重传包的所述接收标志信息更新为已接收。
可选地,在所述数据包的所述父包号不为0的情况下,确定所述发送端发送至所述接收端的所述数据包为所述重传包之后,所述确定方法还包括:将所述父包号对应的所述数据包确定为所述初传包,并所述初传包的所述接收标志信息更新为已接收,并将所述子包号对应的所述数据包确定为所述重传包,并将所述重传包的所述接收标志信息更新为已接收。
可选地,所述发送端包括元数据管理队列,所述元数据管理队列中有多个所述数据包,每一个所述数据包均具有第二目标信息,所述第二目标信息至少包括所述第一包号、父包号、子包号和接收标志信息,所述接收标志信息用于表征所述发送端发送的所述数据包所携带的所述业务响应数据是否已被所述接收端接收到,在所述发送端将多个数据包发送至所述接收端之前,所述确定方法还包括:在所述数据包为重传包的情况下,执行:将所述重传包的所述父包号设置为对应的初传包的所述第一包号、将所述重传包的所述子包号设置为0、将所述重传包的所述第一包号设置为所述初传包的所述子包号、将所述重传包的所述接收标志信息设置为未接收;在所述数据包不为重传包的情况下,将所述数据包的所述父包号设置为0以及将所述子包号设置为0,并将所述数据包的所述接收标志信息设置为未接收。
根据本发明实施例的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行任意一种所述的确定方法。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任意一种所述的确定方法。
根据本发明实施例的再一方面,还提供了一种通信系统,包括:发送端,用于执行任意一种所述的确定方法;接收端,与所述发送端通信连接。
在本发明实施例中,所述的D-SACK的确定方法中,首先,在发送端与接收端建立通信连接的情况下,发送端将多个数据包发送至接收端,其中,数据包包括根据接收端的业务请求信息而生成的业务响应数据和第一包号;然后,发送端对接收到的接收端发送的多个ACK包进行解析和处理,得到第一目标信息,其中,所述第一目标信息至少包括第二包号和是否接收信息;最后,在数据包的第一包号与解析得到的第二包号相同的情况下,确定接收端已经接收到发送端发送的第一包号对应的数据包,并根据解析得到的是否接收信息,确定所述ACK包是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了根据本申请的一种实施例的D-SACK的确定方法的流程图;
图2示出了根据本申请的一种实施例的更新第二目标信息的流程图;
图3示出了根据本申请的一种实施例的发送端的结构示意图;
图4示出了根据本申请的又一种实施例的D-SACK的确定方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
正如背景技术中所说的,现有技术中的难以对基于UDP等其他协议构建的传输协议进行D-SACK检测,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种D-SACK的确定方法、计算机可读存储介质、处理器与通信系统。
根据本申请的实施例,提供了一种D-SACK的确定方法。
图1是根据本申请实施例的D-SACK的确定方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;
步骤S102,上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;
步骤S103,在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。
上述D-SACK的确定方法中,首先,在发送端与接收端建立通信连接的情况下,发送端将多个数据包发送至接收端,其中,数据包包括根据接收端的业务请求信息而生成的业务响应数据和第一包号;然后,发送端对接收到的接收端发送的多个ACK包进行解析和处理,得到第一目标信息,其中,上述第一目标信息至少包括第二包号和是否接收信息;最后,在数据包的第一包号与解析得到的第二包号相同的情况下,确定接收端已经接收到发送端发送的第一包号对应的数据包,并根据解析得到的是否接收信息,确定上述ACK包是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
另外,现有技术中,TCP协议的实现是基于字节流序号来标识发送的包,对于发送端和接收端,双方在建立连接的握手过程中需要先协商是否支持SACK选项,只有发送端和接收端都支持SACK选项信息,才能够进行D-SACK信息的检测。如果接收端有收到无效重传包(即无效重传报文段),则用ACK包中的第一个SACK段来标识D-SACK信息,发送端在处理ACK包中的各个SACK段时,如果第一个SACK段所标识的报文段在之前已经被确认过或者第一个SACK段包含在第二个SACK段里面,则表示第一个SACK段是D-SACK段。也就是说,该SACK段对应的数据包为无效重传包,即该数据包发生了无效重传。而在本方案中,本方案是根据单调递增的包号来标识发送的数据包,本方案中的发送端和接收端在建立连接的握手过程中,无需协商发送端和接收端的SACK选项信息,本方案中的接收端在接收到发送端发送的数据包后,需要在ACK包里面携带各个数据包对应的包号,并将ACK包发送给发送端,发送端在接收到接收端发送的ACK包后,对ACK包进行解析,根据解析得到的第二包号,确定接收端是否接收到该数据包,并根据是否接收信息确定该数据包在之前是否已经被确认过,即在是否接收信息为未接收的情况下,确定该数据包在之前未被确认过,在是否接收信息为已接收的情况下,确定该数据包在之前已经被确认过,并确定该数据包为无效重传包。
在实际的应用过程中,接收端在接收到发送端发送的多个数据包之后,接收端根据已接收到的数据,接收端发送ACK包至发送端,发送端对接收到的ACK包进行解析和处理,得到第一目标信息,第一目标信息至少包括第二包号和是否接收信息。例如,发送端发送10个数据包至接收端,即该10个数据包的第一包号是从1至10单调递增的,也就是说,第一个数据包的第一包号为1、第二个数据包的第一包号为2、第三个数据包的第一包号为3、依次类推。在接收端接收数据包之后,发送ACK包至发送端,发送端对接收到的ACK包进行解析和处理,得到3个包号范围分别为[1 3]、[5 5]以及[7 10],也就是说,解析得到的第二包号分别为1至3、5以及7至10,发送端根据发送的第一包号和解析得到的第二包号,确定哪些数据包已经被接收端接收到,由于解析得到的第二包号为1至3、5以及7至10,可以得出发送端发送的第一个至第三个数据包,第五个数据包以及第七个至第十个数据包已被接收端接收到的,而发送端发送的第四个数据包和第六个数据包未被接收端接收到,后续发送端可以对第四个数据包和第六个数据包进行重传,直到发送端发送的数据包全部接收端接收到或者发送端与接收端的通信连接结束。
具体地,上述数据包还可以携带有数据包的长度、数据包的类型等信息。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了较为简单地确定出上述ACK包中是否携带有D-SACK信息,本申请的一种实施例中,根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息,包括:在上述是否接收信息为已接收的情况下,确定上述ACK包携带有上述D-SACK信息,并确定与上述第二包号对应的上述数据包为重传包;在上述是否接收信息为未接收的情况下,确定上述ACK包不携带有上述D-SACK信息。其中,发送端可以从接收端发送的ACK包中获取得到是否接收信息,例如ack标志位为1,确定已接收,ack标志位为0,确定为未接收。
本申请的另一种实施例中,上述发送端包括元数据管理队列,上述元数据管理队列中有多个上述数据包,每一个上述数据包均具有第二目标信息,上述第二目标信息至少包括上述第一包号、父包号、子包号和接收标志信息,上述接收标志信息用于表征上述发送端发送的上述数据包所携带的上述业务响应数据是否已被上述接收端接收到,在上述是否接收信息为未接收的情况下,确定上述ACK包不携带有上述D-SACK信息之后,上述确定方法还包括:将上述数据包的上述接收标志信息更新为已接收。在该实施例中,在确定出ACK包中不携带有D-SACK信息之后,发送端根据第二包号,将与第二包号相同的第一包号对应的数据包接收标志信息更新为已接收,这样便于发送端对多个数据包进行管理,便于发送端能够及时知晓哪些数据包已被接收端接收到,哪些数据包还未被接收端接收到,对于未被接收端接收到的数据包,后续发送端发送该数据包的重传包,这样进一步地保证了网络传输的重传比较小,进一步地保证了网传传输的性能较好。
具体地,上述一个ACK包可以包括对多个数据包的确认信息,即对上述ACK包进行解析,可以得到第一目标信息,上述第一目标信息中可以包括多个信息组,其中,一个信息组中包括一个第二包号和一个是否接收信息。然后,根据第二包号和第一包号来确定接收端接收的数据包的信息,例如,第一个数据包的第一包号为1,第二个数据包的第一包号为2,而对ACK包进行解析之后,得到两个信息组,其中,第一个信息组为第二包号为1和是否接收信息为未接收,第二个信息组为第二包号为2和是否接收信息为已接收。由于解析得到第一个信息组中的第二包号为1,以及第一个数据包的第一包号为1,即第一包号和第二包号相同,由此可以确定出第一个数据包已被接收端接收到,由于第一个信息组中的是否接收信息为未接收,故第一个数据包不是无效重传包,发送端将第一个数据包的接收标志信息更新为已接收,这样便于发送端能够及时知晓哪些数据包已被接收端接收到,哪些数据包还未被接收端接收到,对于未被接收端接收到的数据包,后续发送端发送该数据包的重传包,直到该数据包被接收端接收到或者通信连接关闭为止。
为了较为简单地确定出上述数据包是否为重传包,本申请的又一种实施例中,在将上述数据包的上述接收标志信息更新为已接收之后,上述确定方法还包括:在上述数据包的上述父包号为0的情况下,确定上述发送端发送至上述接收端的上述数据包为初传包;在上述数据包的上述父包号不为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述重传包。
具体地,为了便于发送端对多个数据包进行管理,发送端包括元数据管理队列,上述元数据管理队列中包括多个已发送但未被接收端进行确认的数据包,而每个数据包都具有第二目标信息。其中,第二目标信息至少包括第一包号、父包号、子包号和接收标志信息。例如,第一个数据包为第一次已发送但未被接收端进行确认的数据包,其的第一包号为1,其还可以称之为初传包。由于第一个数据包为初传包,所以第一个数据包的父包号为0且子包号为0、以及接收标志信息为未接收。在接收端未对第一个数据包进行确认的情况下,发送端需要对第一个数据包进行重传,即第二个数据包为第一个数据包的重传包。对于第二个数据包,其的第一包号为2、父包号为第一个数据包的第一包号,即第二个数据包的父包号为1以及子包号为0。在发送端发送第二个数据包之前,还需要对第一个数据包的第二目标信息进行更新,即将第一个数据包的子包号更新为第二个数据包的第一包号,即第一个数据包的子包号可以更新为2。在接收端还未对第二个数据包进行确认的情况下,发送端需要继续对第一个数据包进行重传,即第三个数据包还为第一个数据包的重传包。对于第三个数据包,其的第一包号为3,第三个数据包的父包号为1,子包号为0,接收标志信息为未接收。在发送端发送第三个数据包之前,还需要对第一个数据包的第二目标信息进行更新,将第一个数据包的子包号更新为2和3。另外,在发送端发送第三个数据包之前,无需对第二个数据的第二目标信息进行更新。对于第一个数据包来说,第二个数据包和第三个数据包均为第一个数据包的重传包,后续在对ACK包进行处理时可以减少遍历次数,提高系统性能。
本申请的再一种实施例中,在上述数据包的上述父包号为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述初传包之后,上述确定方法还包括:确定上述子包号是否为0,在上述子包号不为0的情况下,将上述子包号对应的上述数据包确定为上述重传包,并将上述重传包的上述接收标志信息更新为已接收。在该实施例中,在子包号不为0的情况下,根据初传包的子包号,确定该初传包的重传包,并将重传包的接收标志信息更新为已接收,这样进一步地保证了发送端能够较为及时地知晓哪些数据包已被接收端接收到,对于已被接收端接收到的数据包,后续便可以不再继续进行重传,进一步保证了网络传输的重传比较好,进一步地保证了网络传输的健壮性较好。
具体地,在子包号为0的情况下,则说明该数据包未发生重传。
具体地,在发送端与接收端建立通信连接的情况下,接收端(例如客户端)向发送端(例如服务端)发送业务请求信息,发送端根据业务请求信息生成对应的业务响应数据,根据业务响应数据量大小,业务响应数据可能需要封装在一系列数据包里面进行传输。同一段业务响应数据第一次封装为网络数据报文发送给接收端的数据包称为初传包。由于网络传输过程中存在延迟、乱序和丢包等问题,为保证数据传输的可靠性和完整性,发送端可能需要再次将初传包对应的业务响应数据发送给接收端,第二次开始就都是重传包,一个初传包可能会对应多个重传包。初传包及对应的各个重传包的包号不同,但是其所携带的业务响应数据或者静载荷数据(payload data)是相同的。上述第一包号具体为发送端已发送数据包的包号,第二包号为接收端已确认数据包的包号。对于一个初传包,其的子包号可以有一个,当然,在对该初传包重传了多次的情况下,该初传包的子包号还可以有多个。例如,第一个数据包的第一包号为1、父包号为0以及子包号为2和3;第二个数据包的第一包号为2、父包号为1以及子包号为0;第三个数据包的第一包号为3、父包号为1以及子包号为0。由此可以看出,第二个数据包和第三个数据包均为第一个数据包的重传包,由于网络有乱序,发送端没有在预定时间内接收到接收端发送的第一个数据包的ACK包,便会对第一个数据包进行重传。在发送端接收到第一个数据包的ACK包时,根据对ACK包解析和处理得到的是否接收信息,来确定第一个数据包是否已被接收端接收到。在解析得到的是否接收信息为未接收的情况下,此刻说明,接收端是第一次接收到第一个数据包,并向发送端发送了第一个数据包的ACK包。发送端在接收到之后,将第一个数据包的接收标志信息更新为已接收,后续便不再对第一个数据包继续进行重传。然后再根据第一个数据包的子包号,找到第一个数据包所有的重传包,即确定出第二个数据包和第三个数据包,并将第二个数据包和第三个数据包的接收标志信息均更新为已接收。由于发送端及时对数据包的信息进行了更新,发送端便可以较为及时地知晓哪些数据包已被确认过了,哪些数据包需要继续进行重传,这样进一步地减少了网络传输的虚假重传。
为了进一步地减少了网络传输的虚假重传,本申请的一种实施例中,在上述数据包的上述父包号不为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述重传包之后,上述确定方法还包括:将上述父包号对应的上述数据包确定为上述初传包,并上述初传包的上述接收标志信息更新为已接收,并将上述子包号对应的上述数据包确定为上述重传包,并将上述重传包的上述接收标志信息更新为已接收。
具体地,例如,第一个数据包的第一包号为1、父包号为0以及子包号为2;第二个数据包的第一包号为2、父包号为1以及子包号为0。由于第二个数据包的父包号为1,则说明第二个数据包为第一个数据包的重传包。则根据第二个数据包的父包号,确定出第一个数据包,即确定出第二个数据包的初传包,则将的第一个数据包(即初传包)的接收标志信息更新为已接收。
本申请的又一种实施例中,如图2所示,上述发送端包括元数据管理队列,上述元数据管理队列中有多个上述数据包,每一个上述数据包均具有第二目标信息,上述第二目标信息至少包括上述第一包号、父包号、子包号和接收标志信息,上述接收标志信息用于表征上述发送端发送的上述数据包所携带的上述业务响应数据是否已被上述接收端接收到,在上述发送端将多个数据包发送至上述接收端之前,上述确定方法还包括:在上述数据包为上述重传包的情况下,执行:将上述重传包的上述父包号设置为对应的初传包的上述第一包号、将上述重传包的上述子包号设置为0、将上述重传包的上述第一包号设置为上述初传包的上述子包号、将上述重传包的上述接收标志信息设置为未接收;在上述数据包不为重传包的情况下,将上述数据包的上述父包号设置为0以及将上述子包号设置为0,并将上述数据包的上述接收标志信息设置为未接收。在该实施例中,在发送端将数据包发送至接收端之后,根据数据包的类型信息对数据包的第二目标信息进行设置,这样保证了发送端较为方便地对多个数据包进行管理,后续再根据接收到接收端发送的ACK包,对第二目标信息进行更新,进一地保证了能够较为简单和高效地管理多个数据包,进一步地减少了网络传输的重传次数。
另外,在发送端在将数据包发送给接收端之前,发送端根据对应的业务层数据信息,便可以知晓该数据包是否为重传包,故发送端可以根据数据包的情况信息来更新要发送的数据包的第二目标信息。在将多个数据包的第二目标信息更新之后,再将多个数据包发送至接收端,后续发送端在接收到ACK包之后,根据解析得到的第二包号,可以确定该ACK包对应着哪些数据包。然后再根据第二目标信息中的父包号来确定该数据包是否为重传包,以及是哪些数据包的重传包,并根据该数据包的子包号可以确定出哪些数据包重传了该数据包。
另外,由于网络传输过程中可能存在丢包,所以每个业务响应数据包可能需要传输多次才能到达接收端。相同内容的业务响应数据第一次传输的网络数据报文称为初传包,后续传输的网络数据报文称为重传包。在本方案中,初传包和重传包用不同的第一包号来加以区分,发送端需要维护一个元数据管理队列,用于管理各个已发送但未被接收端确认的数据包。每个队列节点对应一个已发送的数据包。每个节点至少包括该数据包的第一包号、接收标志信息(即对应的业务响应数据是否已被接收端确认)、父包号和子包号等信息。
本申请实施例还提供了一种发送端,需要说明的是,本申请实施例的发送端可以用于执行本申请实施例所提供的用于D-SACK的确定方法。以下对本申请实施例提供的发送端进行介绍。
图3是根据本申请实施例的发送端的结构示意图。如图3所示,该发送端包括:
发送单元10,用于在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;
解析单元20,用于上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;
第一确定单元30,用于在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。
上述的发送端中,发送单元用于在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;解析单元用于上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;第一确定单元用于在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
另外,现有技术中,TCP协议的实现是基于字节流序号来标识发送的包,对于发送端和接收端,双方在建立连接的握手过程中需要先协商是否支持SACK选项,只有发送端和接收端都支持SACK选项信息,才能够进行D-SACK信息的检测。如果接收端有收到无效重传包(即无效重传报文段),则用ACK包中的第一个SACK段来标识D-SACK信息,发送端在处理ACK包中的各个SACK段时,如果第一个SACK段所标识的报文段在之前已经被确认过或者第一个SACK段包含在第二个SACK段里面,则表示第一个SACK段是D-SACK段。也就是说,该SACK段对应的数据包为无效重传包,即该数据包发生了无效重传。而在本方案中,本方案是根据单调递增的包号来标识发送的数据包,本方案中的发送端和接收端在建立连接的握手过程中,无需协商发送端和接收端的SACK选项信息,本方案中的接收端在接收到发送端发送的数据包后,需要在ACK包里面携带各个数据包对应的包号,并将ACK包发送给发送端,发送端在接收到接收端发送的ACK包后,对ACK包进行解析,根据解析得到的第二包号,确定接收端是否接收到该数据包,并根据是否接收信息确定该数据包在之前是否已经被确认过,即在是否接收信息为未接收的情况下,确定该数据包在之前未被确认过,在是否接收信息为已接收的情况下,确定该数据包在之前已经被确认过,并确定该数据包为无效重传包。
在实际的应用过程中,接收端在接收到发送端发送的多个数据包之后,接收端根据已接收到的数据,接收端发送ACK包至发送端,发送端对接收到的ACK包进行解析和处理,得到第一目标信息,第一目标信息至少包括第二包号和是否接收信息。例如,发送端发送10个数据包至接收端,即该10个数据包的第一包号是从1至10单调递增的,也就是说,第一个数据包的第一包号为1、第二个数据包的第一包号为2、第三个数据包的第一包号为3、依次类推。在接收端接收数据包之后,发送ACK包至发送端,发送端对接收到的ACK包进行解析和处理,解析得到3个包号范围分别为[1 3]、[5 5]以及[7 10],也就是说,解析得到的第二包号分别为1至3、5以及7至10,发送端根据发送的第一包号和解析得到的第二包号,确定哪些数据包已经被接收端接收到,由于解析得到的第二包号为1至3、5以及7至10,可以得出发送端发送的第一个至第三个数据包,第五个数据包以及第七个至第十个数据包已被接收端接收到的,而发送端发送的第四个数据包和第六个数据包未被接收端接收到,后续发送端可以对第四个数据包和第六个数据包进行重传,直到发送端发送的数据包全部接收端接收到或者发送端与接收端的通信连接结束。
具体地,上述数据包还可以携带有数据包的长度、数据包的类型等信息。
为了较为简单地确定出上述ACK包中是否携带有D-SACK信息,本申请的一种实施例中,上述第一确定单元包括第一确定模块和第二确定模块,其中,上述第一确定模块用于在上述是否接收信息为已接收的情况下,确定上述ACK包携带有上述D-SACK信息,并确定与上述第二包号对应的上述数据包为重传包;上述第二确定模块用于在上述是否接收信息为未接收的情况下,确定上述ACK包不携带有上述D-SACK信息。其中,发送端可以从接收端发送的ACK包中获取得到是否接收信息,例如ack标志位为1,确定已接收,ack标志位为0,确定为未接收。
本申请的另一种实施例中,上述发送端包括元数据管理队列,上述元数据管理队列中有多个上述数据包,每一个上述数据包均具有第二目标信息,上述第二目标信息至少包括上述第一包号、父包号、子包号和接收标志信息,上述接收标志信息用于表征上述发送端发送的上述数据包所携带的上述业务响应数据是否已被上述接收端接收到,上述发送端还包括第一更新单元,用于在上述是否接收信息为未接收的情况下,确定上述ACK包不携带有上述D-SACK信息之后,将上述数据包的上述接收标志信息更新为已接收。在该实施例中,在确定出ACK包中不携带有D-SACK信息之后,发送端根据第二包号,将与第二包号相同的第一包号对应的数据包接收标志信息更新为已接收,这样便于发送端对多个数据包进行管理,便于发送端能够及时知晓哪些数据包已被接收端接收到,哪些数据包还未被接收端接收到,对于未被接收端接收到的数据包,后续发送端发送该数据包的重传包,这样进一步地保证了网络传输的重传比较小,进一步地保证了网传传输的性能较好。
具体地,上述一个ACK包可以包括对多个数据包的确认信息,即对上述ACK包进行解析,可以得到第一目标信息,上述第一目标信息中可以包括多个信息组,其中,一个信息组中包括一个第二包号和一个是否接收信息。然后,根据第二包号和第一包号来确定接收端接收的数据包的信息,例如,第一个数据包的第一包号为1,第二个数据包的第一包号为2,而对ACK包进行解析之后,得到两个信息组,其中,第一个信息组为第二包号为1和是否接收信息为未接收,第二个信息组为第二包号为2和是否接收信息为已接收。由于解析得到第一个信息组中的第二包号为1,以及第一个数据包的第一包号为1,即第一包号和第二包号相同,由此可以确定出第一个数据包已被接收端接收到,由于第一个信息组中的是否接收信息为未接收,故第一个数据包不是无效重传包,发送端将第一个数据包的接收标志信息更新为已接收,这样便于发送端能够及时知晓哪些数据包已被接收端接收到,哪些数据包还未被接收端接收到,对于未被接收端接收到的数据包,后续发送端发送该数据包的重传包,直到该数据包被接收端接收到或者通信连接关闭为止。
为了较为简单地确定出上述数据包是否为重传包,本申请的又一种实施例中,上述发送端还包括第二确定单元和第三确定单元,其中,上述第二确定单元用于在将上述数据包的上述接收标志信息更新为已接收之后,在上述数据包的上述父包号为0的情况下,确定上述发送端发送至上述接收端的上述数据包为初传包;上述第三确定单元用于在上述数据包的上述父包号不为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述重传包。
具体地,为了便于发送端对多个数据包进行管理,发送端包括元数据管理队列,上述元数据管理队列中包括多个已发送但未被接收端进行确认的数据包,而每个数据包都具有第二目标信息。其中,第二目标信息至少包括第一包号、父包号、子包号和接收标志信息,例如,第一个数据包为第一次已发送但未被接收端进行确认的数据包,其的第一包号为1,其还可以称之为初传包。由于第一个数据包为初传包,所以第一个数据包的父包号为0子包号为0、以及接收标志信息为未接。在接收端未对第一个数据包进行确认的情况下,发送端需要对第一个数据包进行重传,即第二个数据包为第一个数据包的重传包。对于第二个数据包,其的第一包号为2、父包号为第一个数据包的第一包号,即第二个数据包的父包号为1以及子包号为0。在发送端发送第二个数据包之前,还需要对第一个数据包的第二目标信息进行更新,即将第一个数据包的子包号更新为第二个数据包的第一包号,即第一个数据包的子包号可以更新为2。在接收端还未对第二个数据包进行确认的情况下,发送端需要继续对第一个数据包进行重传,即第三个数据包还为第一个数据包的重传包。对于第三个数据包,其的第一包号为3,第三个数据包的父包号为1,子包号为0,接收标志信息为未接收。在发送端发送第三个数据包之前,还需要对第一个数据包的第二目标信息进行更新,将第一个数据包的子包号更新为2和3。另外,在发送端发送第三个数据包之前,无需对第二个数据的第二目标信息进行更新。对于第一个数据包来说,第二个数据包和第三个数据包均为第一个数据包的重传包,后续在对ACK包进行处理时可以减少遍历次数,提高系统性能。
本申请的再一种实施例中,上述发送端还包括第四确定单元,用于在上述数据包的上述父包号为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述初传包之后,确定上述子包号是否为0,在上述子包号不为0的情况下,将上述子包号对应的上述数据包确定为上述重传包,并将上述重传包的上述接收标志信息更新为已接收。在该实施例中,在子包号不为0的情况下,根据初传包的子包号,确定该初传包的重传包,并将重传包的接收标志信息更新为已接收,这样进一步地保证了发送端能够较为及时地知晓哪些数据包已被接收端接收到,对于已被接收端接收到的数据包,后续便可以不再继续进行重传,进一步保证了网络传输的重传比较好,进一步地保证了网络传输的健壮性较好。
具体地,在子包号为0的情况下,则说明该数据包未发生重传。
具体地,在发送端与接收端建立通信连接的情况下,接收端(例如客户端)向发送端(例如服务端)发送业务请求信息,发送端根据业务请求信息生成对应的业务响应数据,根据业务响应数据量大小,业务响应数据可能需要封装在一系列数据包里面进行传输。同一段业务响应数据第一次封装为网络数据报文发送给接收端的数据包称为初传包。由于网络传输过程中存在延迟、乱序和丢包等问题,为保证数据传输的可靠性和完整性,发送端可能需要再次将初传包对应的业务响应数据发送给接收端,第二次开始就都是重传包,一个初传包可能会对应多个重传包。初传包及对应的各个重传包的包号不同,但是其所携带的业务响应数据或者静载荷数据(payload data)是相同的。上述第一包号具体为发送端已发送数据包的包号,第二包号为接收端已确认数据包的包号。对于一个初传包,其的子包号可以有一个,当然,在对该初传包重传了多次的情况下,该初传包的子包号还可以有多个。例如,第一个数据包的第一包号为1、父包号为0以及子包号为2和3;第二个数据包的第一包号为2、父包号为1以及子包号为0;第三个数据包的第一包号为3、父包号为1以及子包号为0。由此可以看出,第二个数据包和第三个数据包均为第一个数据包的重传包,由于网络有乱序,发送端没有在预定时间内接收到接收端发送的第一个数据包的ACK包,便会对第一个数据包进行重传。在发送端接收到第一个数据包的ACK包时,根据对ACK包解析和处理得到的是否接收信息,来确定第一个数据包是否已被接收端接收到。在解析得到的是否接收信息为未接收的情况下,此刻说明,接收端是第一次接收到第一个数据包,并向发送端发送了第一个数据包的ACK包。发送端在接收到之后,将第一个数据包的接收标志信息更新为已接收,后续便不再对第一个数据包继续进行重传。然后再根据第一个数据包的子包号,找到第一个数据包所有的重传包,即确定出第二个数据包和第三个数据包,并将第二个数据包和第三个数据包的接收标志信息均更新为已接收。由于发送端及时对数据包的信息进行了更新,发送端便可以较为及时地知晓哪些数据包已被确认过了,哪些数据包需要继续进行重传,这样进一步地减少了网络传输的虚假重传。
为了进一步地减少了网络传输的虚假重传,本申请的一种实施例中,上述发送端还包括第五确定单元,用于在上述数据包的上述父包号不为0的情况下,确定上述发送端发送至上述接收端的上述数据包为上述重传包之后,将上述父包号对应的上述数据包确定为上述初传包,并上述初传包的上述接收标志信息更新为已接收,并将上述子包号对应的上述数据包确定为上述重传包,并将上述重传包的上述接收标志信息更新为已接收。
具体地,例如,第一个数据包的第一包号为1、父包号为0以及子包号为2;第二个数据包的第一包号为2、父包号为1以及子包号为0。由于第二个数据包的父包号为1,则说明第二个数据包为第一个数据包的重传包。则根据第二个数据包的父包号,确定出第一个数据包,即确定出第二个数据包的初传包,则将的第一个数据包(即初传包)的接收标志信息更新为已接收。
本申请的又一种实施例中,如图2所示,上述发送端包括元数据管理队列,上述元数据管理队列中有多个上述数据包,每一个上述数据包均具有第二目标信息,上述第二目标信息至少包括上述第一包号、父包号、子包号和接收标志信息,上述接收标志信息用于表征上述接收标志信息用于表征上述发送端发送的上述数据包所携带的上述业务响应数据是否已被上述接收端接收到,上述发送端还包括执行单元和第二更新单元,上述执行单元用于在上述发送端将多个数据包发送至上述接收端之前,在上述数据包为上述重传包的情况下,执行:将上述重传包的上述父包号设置为初传包的上述第一包号、将上述重传包的上述子包号设置为0、将上述重传包的上述第一包号设置为上述初传包的上述子包号、将上述重传包的上述接收标志信息设置为未接收;上述第二更新单元用于在上述数据包不为上述重传包的情况下,将上述数据包的上述父包号设置为0以及将上述子包号设置为0,并将上述数据包的上述接收标志信息设置为未接收。在该实施例中,在发送端将数据包发送至接收端之后,根据数据包的类型信息对数据包的第二目标信息进行设置,这样保证了发送端较为方便地对多个数据包进行管理,后续再根据接收到接收端发送的ACK包,对第二目标信息进行更新,进一地保证了能够较为简单和高效地管理多个数据包,进一步地减少了网络传输的重传次数。
另外,在发送端在将数据包发送给接收端之前,发送端根据对应的业务层数据信息,便可以知晓该数据包是否为重传包,故发送端可以根据数据包的情况信息来更新要发送的数据包的第二目标信息。在将多个数据包的第二目标信息更新之后,再将多个数据包发送至接收端,后续发送端在接收到ACK包之后,根据解析得到的第二包号,可以确定该ACK包对应着哪些数据包。然后再根据第二目标信息中的父包号来确定该数据包是否为重传包,以及是哪些数据包的重传包,并根据该数据包的子包号可以确定出哪些数据包重传了该数据包。
另外,由于网络传输过程中可能存在丢包,所以每个业务响应数据包可能需要传输多次才能到达接收端。相同内容的业务响应数据第一次传输的网络数据报文称为初传包,后续传输的网络数据报文称为重传包。在本方案中,初传包和重传包用不同的第一包号来加以区分,发送端需要维护一个元数据管理队列,用于管理各个已发送但未被接收端确认的数据包。每个队列节点对应一个已发送的数据包。每个节点至少包括该数据包的第一包号、接收标志信息(即对应的业务响应数据是否已被接收端确认)、父包号和子包号等信息。
为了使得本领域的技术人员更加清楚明确地了解本申请的技术方案,下面将结合具体的实施例进行说明:
实施例
如图4所示,在发送端接收到接收端发送的ACK包之后,发送端对接收到的ACK包进行解析和处理,得到第一目标信息,第一目标信息至少包号第二包号和是否接收信息。在数据包的第一包号与第二包号相同的情况下,确定接收端已经接收到第一包号对应的数据包,并根据是否接收信息,确定ACK包中是否携带有D-SACK信息。在是否接收信息为已接收的情况下,确定ACK包中携带有D-SACK信息,并确定出与该第二包号相同的第一包号对应的数据包发生了重传,后续根据D-SACK信息进行相关的操作。在是否接收信息为未接收的情况下,将与第二包号相同的第一包号对应的数据包的接收标志信息更新为已接收。然后根据该数据包的父包号,确定该数据包是否为重传包,即在该数据包的父包号为0的情况下,确定该数据包为初传包,则根据该数据包的子包号,在元数据管理队列中查找该数据包的重传包,并将查找到得到的重传包的接收标志信息更新为已接收。在该数据包的父包号不为0的情况下,确定该数据包为重传包,则根据数据包的父包号,在元数据管理队列中查找该数据包的初传包,并初传包的接收标志信息更新为已接收。再根据数据包的子包号,在元数据管理队列中查找该数据包的重传包,并将重传包的接收标志信息更新为已接收,并进入其他的处理流程。
上述发送端包括处理器和存储器,上述发送单元、解析单元和第一确定单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述D-SACK的确定方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述D-SACK的确定方法。
本申请的一种典型的实施例中,还提供了一种通信系统,包括:发送端,用于执行任意一种上述的方法;接收端,与上述发送端通信连接。
上述的通信系统包括发送端和接收端,上述接收端与上述发送端通信连接,上述发送端可以执行上述D-SACK的确定方法,上述确定方法中,发送端对接收到的接收端发送的ACK包进行解析,得到第一目标信息,即发送端对ACK包进行解析,至少得到第二包号和是否接收信息,再根据解析得到的第二包号和数据包对应的第一包号,确定接收端是否接收到数据包,即在数据包的第一包号与解析得到的第二包号相同的情况下,确定接收端已经接收到第一包号对应的数据包,并根据解析得到的是否接收信息,确定ACK包中是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;
步骤S102,上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;
步骤S103,在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;
步骤S102,上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;
步骤S103,在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的D-SACK的确定方法中,首先,在发送端与接收端建立通信连接的情况下,发送端将多个数据包发送至接收端,其中,数据包包括根据接收端的业务请求信息而生成的业务响应数据和第一包号;然后,发送端对接收到的接收端发送的多个ACK包进行解析和处理,得到第一目标信息,其中,上述第一目标信息至少包括第二包号和是否接收信息;最后,在数据包的第一包号与解析得到的第二包号相同的情况下,确定接收端已经接收到发送端发送的第一包号对应的数据包,并根据解析得到的是否接收信息,确定上述ACK包是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
2)、本申请的发送端中,发送单元用于在发送端与接收端建立通信连接的情况下,上述发送端将多个数据包发送至上述接收端,上述数据包包括根据上述接收端的业务请求信息而生成的业务响应数据和第一包号;解析单元用于上述发送端接收上述接收端发送的多个ACK包,并对上述ACK包进行解析和处理,得到第一目标信息,上述第一目标信息至少包括第二包号和是否接收信息,上述是否接收信息为上述接收端是否已经接收到上述数据包所携带的上述业务响应数据的信息;第一确定单元用于在上述数据包的上述第一包号与上述第二包号相同的情况下,确定上述接收端已接收到上述第一包号对应的上述数据包,并根据上述是否接收信息,确定上述ACK包是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
3)、本申请的通信系统包括发送端和接收端,上述接收端与上述发送端通信连接,上述发送端可以执行上述D-SACK的确定方法,上述确定方法中,发送端对接收到的接收端发送的ACK包进行解析,得到第一目标信息,即发送端对ACK包进行解析,至少得到第二包号和是否接收信息,再根据解析得到的第二包号和数据包对应的第一包号,确定接收端是否接收到数据包,即在数据包的第一包号与解析得到的第二包号相同的情况下,确定接收端已经接收到第一包号对应的数据包,并根据解析得到的是否接收信息,确定ACK包中是否携带有D-SACK信息。由于现有技术中TCP协议是基于字节流序号来标识发送的数据包,并根据字节流序号来实现对D-SACK信息的检测,但基于UDP协议等其他协议构建的传输协议是通过数据包的包号来标识发送的数据包,故根据字节流序号来实现对D-SACK信息的检测并不适用于基于UDP等其他协议构建的传输协议,而本方案是根据数据包的包号来确定接收端是否接收到数据包,并根据解析得到的是否接收信息来确定ACK包是否携带有D-SACK信息,从而解决了现有技术中难以对基于UDP等其他协议构建的传输协议进行D-SACK检测的问题,保证了无效和冗余数据的传输较少,保证了网络传输的健壮性较好以及改善了网络传输的重传性能。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种D-SACK的确定方法,其特征在于,包括:
在发送端与接收端建立通信连接的情况下,所述发送端将多个数据包发送至所述接收端,所述数据包包括根据所述接收端的业务请求信息而生成的业务响应数据和第一包号;
所述发送端接收所述接收端发送的多个ACK包,并对所述ACK包进行解析和处理,得到第一目标信息,所述第一目标信息至少包括第二包号和是否接收信息,所述是否接收信息为所述接收端是否已经接收到所述数据包所携带的所述业务响应数据的信息;
在所述数据包的所述第一包号与所述第二包号相同的情况下,确定所述接收端已接收到所述第一包号对应的所述数据包,并根据所述是否接收信息,确定所述ACK包是否携带有D-SACK信息。
2.根据权利要求1所述的确定方法,其特征在于,根据所述是否接收信息,确定所述ACK包是否携带有D-SACK信息,包括:
在所述是否接收信息为已接收的情况下,确定所述ACK包携带有所述D-SACK信息,并确定与所述第二包号对应的所述数据包为重传包;
在所述是否接收信息为未接收的情况下,确定所述ACK包不携带有所述D-SACK信息。
3.根据权利要求2所述的确定方法,其特征在于,所述发送端包括元数据管理队列,所述元数据管理队列中有多个所述数据包,每一个所述数据包均具有第二目标信息,所述第二目标信息至少包括所述第一包号、父包号、子包号和接收标志信息,所述接收标志信息用于表征所述发送端发送的所述数据包所携带的所述业务响应数据是否已被所述接收端接收到,
在所述是否接收信息为未接收的情况下,确定所述ACK包不携带有所述D-SACK信息之后,所述确定方法还包括:
将所述数据包的所述接收标志信息更新为已接收。
4.根据权利要求3所述的确定方法,其特征在于,在将所述数据包的所述接收标志信息更新为已接收之后,所述确定方法还包括:
在所述数据包的所述父包号为0的情况下,确定所述发送端发送至所述接收端的所述数据包为初传包;
在所述数据包的所述父包号不为0的情况下,确定所述发送端发送至所述接收端的所述数据包为所述重传包。
5.根据权利要求4所述的确定方法,其特征在于,在所述数据包的所述父包号为0的情况下,确定所述发送端发送至所述接收端的所述数据包为初传包之后,所述确定方法还包括:
确定所述子包号是否为0,在所述子包号不为0的情况下,将所述子包号对应的所述数据包确定为所述重传包,并将所述重传包的所述接收标志信息更新为已接收。
6.根据权利要求4所述的确定方法,其特征在于,在所述数据包的所述父包号不为0的情况下,确定所述发送端发送至所述接收端的所述数据包为所述重传包之后,所述确定方法还包括:
将所述父包号对应的所述数据包确定为所述初传包,并所述初传包的所述接收标志信息更新为已接收,并将所述子包号对应的所述数据包确定为所述重传包,并将所述重传包的所述接收标志信息更新为已接收。
7.根据权利要求1所述的确定方法,其特征在于,所述发送端包括元数据管理队列,所述元数据管理队列中有多个所述数据包,每一个所述数据包均具有第二目标信息,所述第二目标信息至少包括所述第一包号、父包号、子包号和接收标志信息,所述接收标志信息用于表征所述发送端发送的所述数据包所携带的所述业务响应数据是否已被所述接收端接收到,
在所述发送端将多个数据包发送至所述接收端之前,所述确定方法还包括:
在所述数据包为重传包的情况下,执行:将所述重传包的所述父包号设置为对应的初传包的所述第一包号、将所述重传包的所述子包号设置为0、将所述重传包的所述第一包号设置为所述初传包的所述子包号、将所述重传包的所述接收标志信息设置为未接收;
在所述数据包不为重传包的情况下,将所述数据包的所述父包号设置为0以及将所述子包号设置为0,并将所述数据包的所述接收标志信息设置为未接收。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1至7中任意一项所述的确定方法。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的确定方法。
10.一种通信系统,其特征在于,包括:
发送端,用于执行权利要求1至7中任意一项所述的确定方法;
接收端,与所述发送端通信连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210655540.8A CN115118392B (zh) | 2022-06-10 | 2022-06-10 | D-sack的确定方法、处理器与通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210655540.8A CN115118392B (zh) | 2022-06-10 | 2022-06-10 | D-sack的确定方法、处理器与通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115118392A CN115118392A (zh) | 2022-09-27 |
CN115118392B true CN115118392B (zh) | 2024-05-28 |
Family
ID=83325937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210655540.8A Active CN115118392B (zh) | 2022-06-10 | 2022-06-10 | D-sack的确定方法、处理器与通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115118392B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834700A (zh) * | 2010-05-12 | 2010-09-15 | 北京邮电大学 | 一种基于数据包的单向可靠传输方法及收发装置 |
CN102045362A (zh) * | 2010-12-21 | 2011-05-04 | 北京高森明晨信息科技有限公司 | 一种基于udp协议的数据传输方法和系统 |
CN102308512A (zh) * | 2011-07-28 | 2012-01-04 | 华为技术有限公司 | 一种基于流控制传输协议的信令重传方法、装置及系统 |
JP2014049820A (ja) * | 2012-08-29 | 2014-03-17 | Fujitsu Ltd | 監視装置,監視プログラム,監視方法 |
CN104104480A (zh) * | 2014-07-31 | 2014-10-15 | 北京蓝汛通信技术有限责任公司 | 用于tcp协议的重传包丢失检测方法和装置 |
CN106059724A (zh) * | 2016-05-25 | 2016-10-26 | 杭州宏杉科技有限公司 | 一种报文传输方法和装置 |
CN106330930A (zh) * | 2016-08-29 | 2017-01-11 | 烽火通信科技股份有限公司 | 基于流媒体丢包二次重传系统及其方法 |
CN110995697A (zh) * | 2019-11-29 | 2020-04-10 | 济南慧天云海信息技术有限公司 | 一种大数据传输方法及系统 |
CN111865828A (zh) * | 2020-07-24 | 2020-10-30 | 展讯通信(上海)有限公司 | 数据传输方法、系统、电子设备及存储介质 |
CN113259989A (zh) * | 2021-06-02 | 2021-08-13 | 中移智行网络科技有限公司 | 数据重传方法、装置及电子设备 |
CN113411313A (zh) * | 2018-01-25 | 2021-09-17 | 华为技术有限公司 | 数据传输方法、装置和系统 |
-
2022
- 2022-06-10 CN CN202210655540.8A patent/CN115118392B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834700A (zh) * | 2010-05-12 | 2010-09-15 | 北京邮电大学 | 一种基于数据包的单向可靠传输方法及收发装置 |
CN102045362A (zh) * | 2010-12-21 | 2011-05-04 | 北京高森明晨信息科技有限公司 | 一种基于udp协议的数据传输方法和系统 |
CN102308512A (zh) * | 2011-07-28 | 2012-01-04 | 华为技术有限公司 | 一种基于流控制传输协议的信令重传方法、装置及系统 |
JP2014049820A (ja) * | 2012-08-29 | 2014-03-17 | Fujitsu Ltd | 監視装置,監視プログラム,監視方法 |
CN104104480A (zh) * | 2014-07-31 | 2014-10-15 | 北京蓝汛通信技术有限责任公司 | 用于tcp协议的重传包丢失检测方法和装置 |
CN106059724A (zh) * | 2016-05-25 | 2016-10-26 | 杭州宏杉科技有限公司 | 一种报文传输方法和装置 |
CN106330930A (zh) * | 2016-08-29 | 2017-01-11 | 烽火通信科技股份有限公司 | 基于流媒体丢包二次重传系统及其方法 |
CN113411313A (zh) * | 2018-01-25 | 2021-09-17 | 华为技术有限公司 | 数据传输方法、装置和系统 |
CN110995697A (zh) * | 2019-11-29 | 2020-04-10 | 济南慧天云海信息技术有限公司 | 一种大数据传输方法及系统 |
CN111865828A (zh) * | 2020-07-24 | 2020-10-30 | 展讯通信(上海)有限公司 | 数据传输方法、系统、电子设备及存储介质 |
CN113259989A (zh) * | 2021-06-02 | 2021-08-13 | 中移智行网络科技有限公司 | 数据重传方法、装置及电子设备 |
Non-Patent Citations (5)
Title |
---|
apos ; and amp ; apos ; Availability after DDN Failure amp * |
apos ; Downlink data delivery status amp * |
apos ; events".3GPP tsg_sa\wg2_arch.2019,(tsgs2_134_sapporo),全文. * |
Nokia, Nokia Shanghai-Bell.S2-1906945 "Detection of amp * |
基于无线TCP的簇生丢失重传协议;孙芳蕾, 曾平;计算机研究与发展;20050216(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115118392A (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Marx et al. | Same standards, different decisions: A study of QUIC and HTTP/3 implementation diversity | |
US9003053B2 (en) | Message acceleration | |
US7764694B2 (en) | System, method, and apparatus for prioritizing network traffic using deep packet inspection (DPI) | |
US20070025374A1 (en) | TCP normalization engine | |
US10355961B2 (en) | Network traffic capture analysis | |
US20090300153A1 (en) | Method, System and Apparatus for Identifying User Datagram Protocol Packets Using Deep Packet Inspection | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
US20060271680A1 (en) | Method For Transmitting Window Probe Packets | |
US8301685B2 (en) | Method and apparatus for managing transmission of TCP data segments | |
US10505677B2 (en) | Fast detection and retransmission of dropped last packet in a flow | |
CN104980257B (zh) | 物联网通讯方法及装置 | |
US8490173B2 (en) | Unauthorized communication detection method | |
US7535916B2 (en) | Method for sharing a transport connection across a multi-processor platform with limited inter-processor communications | |
US20160359950A1 (en) | Systems and methods for improved trivial file transfer protocol | |
CN115118392B (zh) | D-sack的确定方法、处理器与通信系统 | |
CN114390054A (zh) | 一种核心网网络加速方法、电子设备及计算机存储介质 | |
CN107733903B (zh) | 一种基于udp的数据传输确认方法和基站 | |
CN113259490B (zh) | 基于udp传输协议的多级节点网络数据传输方法 | |
KR101611663B1 (ko) | 비연결 지향형 프로토콜을 이용한 데이터 통신 | |
EP3672189A1 (en) | Data transmission method, device and system | |
Henze | A Machine-Learning Packet-Classification Tool for Processing Corrupted Packets on End Hosts | |
KR101376583B1 (ko) | 이동통신 시스템에서 패킷 데이터 수신 응답 신호 구성방법 및 장치 | |
Vernersson | Analysis of UDP-based reliable transport using network emulation | |
JP2005286832A (ja) | Atm通信システムおよびatm通信方法 | |
CN107548105B (zh) | 一种基于udp的数据传输确认方法和基站 |
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 |