CN109981385A - 一种实现丢包检测的方法、装置和系统 - Google Patents
一种实现丢包检测的方法、装置和系统 Download PDFInfo
- Publication number
- CN109981385A CN109981385A CN201711451071.3A CN201711451071A CN109981385A CN 109981385 A CN109981385 A CN 109981385A CN 201711451071 A CN201711451071 A CN 201711451071A CN 109981385 A CN109981385 A CN 109981385A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- value
- indicator
- confirmation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
-
- 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/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0023—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the signalling
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Communication Control (AREA)
Abstract
本发明实施例公开了一种实现丢包检测的方法、装置和系统。该方法包括:数据接收设备在确定接收到携带的第一指示符的值和上一数据报文中的第一指示符的值不同的数据报文时,确定数据发送设备已发送已丢失数据报文的重传报文,并在确定该重传报文丢失时,向数据发送设备发送确认号为该已丢失数据报文的序列号的确认报文,该确认报文中的第二指示符的值与数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该重传报文已丢失。由于数据接收设备可以确定数据发送设备重传了一个数据报文,并在确定该重传的数据报文丢失时通知数据发送设备,因此数据发送设备可以再次重传该数据报文,从而减少了触发RTO定时器的次数,有效提升了通信效率。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种实现丢包检测的方法、装置和系统。
背景技术
可靠传输协议是网络(如互联网)中广泛使用的传输协议,如传输控制协议(Transmission Control Protocol,TCP)、流控制传输协议(Stream ControlTransmission Protocol,SCTP)等协议。
当采用可靠传输协议进行数据传输时,为了保证数据传输的可靠性,需要检测并重传丢失的数据报文。重传超时(Retransmission Timeout,RTO)机制是保证重传最可靠的方式。数据发送设备每向数据接收设备发送一个数据报文,都会为该数据报文设置一个RTO定时器。当收到该数据接收设备发送的用于确认已收到该数据报文的确认报文后,取消该数据报文对应的RTO定时器。当该数据报文对应的RTO定时器超时触发时,表示该数据报文丢失,数据发送设备重传该数据报文,并重置该数据报文对应的RTO定时器。
为了减少丢包误判以保证正常的通信,RTO定时器的值通常会设置为远大于数据发送设备和数据接收设备之间的往返时延(Round Trip Time,RTT)的值,如果等到RTO定时器超时触发才重传丢失的数据报文,会严重影响通信的效率。另外,一旦触发RTO定时器,数据发送设备会大幅度降低数据发送速率,会导致通信效率的进一步降低。
为了减少RTO定时器的触发,在现有技术中,通常会采用如下丢包检测方法检测丢失的数据报文。数据接收设备在确定收到一个序列号(Sequence number)大于还未收到的数据报文的序列号的其它数据报文(即确定该未收到的数据报文发生乱序)后,每接收一个数据报文就向数据发送设备发送确认号(Acknowledgment number)为该未收到的数据报文的序列号的确认报文以指示期望接收该确认号对应的数据报文,直至收到该数据报文。相应地,数据发送设备在连续收到多个(如3个)确认号为该未收到的数据报文的序列号的重复确认报文时确定该数据报文丢失,并重传该数据报文。
然而,当丢包率较高且传输数据量较大时,重传报文丢失的可能性较大。根据该现有技术,无法检测重传报文的丢失,如果重传报文也丢失了,还是会触发RTO定时器,导致通信效率较低。
发明内容
本发明实施例提供一种实现丢包检测的方法、装置和系统,用于解决现有技术中存在的重传报文丢失触发RTO定时器所导致的通信效率较低的问题。
第一方面,提供了一种实现丢包检测的方法,该方法由数据接收设备执行,数据接收设备和数据发送设备之间通过基于可靠传输协议建立的连接进行通信,数据接收设备通过该连接接收的数据发送设备发送的数据报文携带第一指示符的值,数据接收设备通过该连接向数据发送设备发送的确认报文携带第二指示符的值。
该方法包括:数据接收设备在确定接收到携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的第一数据报文时,确定数据发送设备已发送第二数据报文的重传报文,该第二数据报文为已丢失数据报文;进一步地,在确定该第二数据报文的重传报文丢失时,向数据发送设备发送确认号为该第二数据报文的序列号的第一确认报文,该第一确认报文中的第二指示符的值与数据接收设备向数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该第二数据报文的重传报文已丢失。
根据第一方面的实现方式,数据接收设备可以根据数据报文中携带的第一指示符的值确定数据发送设备重传了一个数据报文,并在确定该重传的数据报文丢失时通过第二指示符的值通知数据发送设备,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。
在第一方面的第一种实现方式中,该第二指示符的长度可以为1比特,相应地,该第二指示符的值为0或1。通过该实现方式,第二指示符占用的位数较少,对确认报文可携带的其它信息的信息量影响较小,易于实现。
基于第一方面或第一方面的第一种实现方式,在第二种实现方式中,数据接收设备具体可以当确定在判断结束条件满足之前没有接收到该第二数据报文的重传报文时确定该第二数据报文的重传报文丢失。该判断结束条件为在接收该第一数据报文之后接收的携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文的数据量满足数据量条件。
该判断结束条件可以为在接收该第一数据报文之后接收的携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文的个数达到预设个数,如3个。
该判断结束条件还可以为在接收该第一数据报文之后接收的携带的第一指示符的值与该第一数据条件中的第一指示符的值相同的数据报文的总长度达到预设数据长度。
可以理解的是,携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文通常为发送设备在发送该重传报文后发送的数据报文,如果接收到的在发送该重传报文后发送的数据报文的数据量满足了数据量条件,如个数达到预设个数,又如总长度达到预设数据长度,则说明该重传报文很可能已经丢失了。因此,通过该实现方式确定重传报文丢失,准确度较高。
基于第一方面、第一方面的第一种实现方式或第一方面的第二种实现方式,在第三种实现方式中,数据接收设备可以每确定丢失一个重传报文时修改第二指示符的值。数据接收设备发送该第一确认报文之后且确定丢失下一重传报文之前发送的其它确认报文中的第二指示符的值与该第一确认报文中的第二指示符的值相同。
根据第三种实现方式,可以通过第二指示符的值的变化指示重传报文的丢失,实现简单高效。
进一步地,该第一数据报文可以为数据接收设备在第一时间后接收到的第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。其中,该第一时间为如下两个时间中较晚的一个:
最近一次修改第二指示符的值的时间;
确定接收到第一个序列号大于该第二数据报文的序列号的数据报文的时间。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在第一时间后接收到第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文时,确定数据发送设备已发送第二数据报文的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
基于第一方面、第一方面的第一种实现方式或第一方面的第二种实现方式,在第四种实现方式中,数据接收设备可以每确定丢失一个数据报文时修改第二指示符的值。数据接收设备确定数据发送设备已发送第二数据报文的重传报文之前,还可以包括,数据接收设备在确定该第二数据报文丢失时,向数据发送设备发送确认号为该第二数据报文的序列号的第二确认报文,该第二确认报文中的第二指示符的值与数据接收设备向数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该第二数据报文已丢失。进一步地,数据接收设备发送该第一确认报文之后且确定丢失下一数据报文之前发送的其它确认报文中的第二指示符的值与该第一确认报文中的第二指示符的值相同;数据接收设备发送该第二确认报文之后且确定丢失下一数据报文之前发送的其它确认报文中的第二指示符的值与该第二确认报文中的第二指示符的值相同。
根据该第四种实现方式,数据发送设备还可以根据接收的确认报文中的第二指示符的值的变化确定非重传报文的丢失,而无需等待收到预设数量个(如3个)重复确认报文时才确定该非重传报文丢失,在确认报文有可能丢失的情况下,可以尽早确定并重传丢失的非重传报文,从而进一步提升通信效率。
基于第一方面的第四种实现方式,在第五种实现方式中,该第一数据报文具体可以为数据接收设备在最近一次修改第二指示符的值后接收到的第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在最近一次修改第二指示符的值后接收到第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文时,确定数据发送设备已发送第二数据报文的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
第二方面,提供了一种实现丢包检测的方法,该方法由数据发送设备执行,数据发送设备和数据接收设备之间通过基于可靠传输协议建立的连接进行通信,数据发送设备通过该连接向数据接收设备发送的数据报文携带第一指示符的值,数据发送设备通过该连接接收的数据接收设备发送的确认报文携带第二指示符的值。
该方法包括:数据发送设备在确定向数据接收设备发送的第一数据报文丢失时,向数据接收设备首次重传该第一数据报文(即第一次发送第一数据报文的重传报文),该首次重传的第一数据报文中的第一指示符的值与数据发送设备向数据接收设备发送的上一数据报文中的第一指示符的值不同,数据发送设备首次重传该第一数据报文后且向数据接收设备发送下一重传报文前发送的其它数据报文中的第一指示符的值与该首次重传的第一数据报文中的第一指示符的值相同,该首次重传的第一数据报文和该其它数据报文中的第一指示符的值与该上一数据报文中的第一指示符的值的不同用于表示数据发送设备向数据接收设备发送了一个重传报文;进一步地,数据发送设备接收第一确认报文,该第一确认报文的确认号为该第一数据报文的序列号;并在确定该第一确认报文中的第二指示符的值与从数据接收设备接收的上一确认报文中的第二指示符的值不同时,根据该第一确认报文的确认号再次重传该第一数据报文。
根据第二方面的实现方式,数据发送设备在发送重传报文后可以通过第一指示符的值通知数据接收设备已发送重传报文,因此数据接收设备可以确定该数据发送设备已发送一个重传报文并在确定该重传报文丢失时通过第二指示符的值通知数据发送设备该重传报文已丢失,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。
在第二方面的第一种实现方式中,该第一指示符的长度可以为1比特,相应地,该第二指示符的值为0或1。通过该实现方式,第一指示符占用的位数较少,对确认报文可携带的其它信息的信息量影响较小,易于实现。
由于可能存在报文乱序,数据接收设备在确定丢失一个重传报文前发送的确认报文可能会晚于在确定丢失该重传报文后发送的确认报文。发生报文乱序后,可能会存在报文乱序所导致的携带的RE的值和上一确认报文中的RE的值不同的确认报文。
对于任一重传报文,数据发送设备在发送该重传报文之后接收到用于表示丢失了数据报文(可能是该重传报文、也可能是序列号大于该重传报文的序列号的另一数据报文)的确认报文的时间和发送该重传报文的时间之差通常不小于该数据发送设备和该数据接收设备之间的往返时延(Round-Trip Time,RTT),并且,如果携带不同的RE的值的确认报文之间不发生乱序,在相继发送两个重传报文之间通常只会接收到一个携带的RE的值和上一确认报文中的RE的值不同的确认报文。
为了减少乱序导致的误判,基于第二方面或第二方面的第一种实现方式,在第二种实现方式中,该第一确认报文可以为在第一时间之后接收的第一个携带的第二指示符的值与从数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,该第一时间为首次重传该第一数据报文的时间与a1*RTT的和,其中,0<a1<1,RTT为数据发送设备和数据接收设备之间的往返时延。
为了进一步提升判断的准确性,a1的取值范围可以为0.25<=a1<=0.8,具体可以为0.5。
基于第二方面或第二方面的上述任一实现方式,在第三种实现方式中,数据发送设备可以通过如下实施方式确定向数据接收设备发送的第一数据报文丢失:数据发送设备接收第二确认报文,该第二确认报文的确认号为该第一数据报文的序列号;数据发送设备在确定该第二确认报文中的第二指示符的值与从数据接收设备接收的上一确认报文中的第二指示符的值不同时,确定该第二确认报文的确认号对应的该第一数据报文丢失。
根据该实现方式,数据发送设备可以根据接收的确认报文中的第二指示符的值的变化确定非重传报文的丢失,而无需等待收到预设数量个(如3个)重复确认报文时才确定该非重传报文丢失,在确认报文有可能丢失的情况下,可以尽早确定并重传丢失的非重传报文,从而进一步提升通信效率。
为了减少乱序导致的误判,基于第二方面的第三种实现方式,在第四种实现方式中,该第二确认报文可以为在第二时间之后接收的第一个携带的第二指示符的值与从数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,该第二时间为最近一次发送重传报文的时间与a2*RTT的和,其中,0<a2<1,RTT为数据发送设备和数据接收设备之间的往返时延。为了进一步提升判断的准确性,a2的取值范围可以为0.25<=a2<=0.8,具体可以为0.5。第四种实现方式中的a2和第二种实现方式中的a1通常取相同的值。
第三方面提供了一种数据接收设备,数据接收设备和数据发送设备之间通过基于可靠传输协议建立的连接进行通信,数据接收设备通过该连接接收的数据发送设备发送的数据报文携带第一指示符的值,数据接收设备通过该连接向数据发送设备发送的确认报文携带第二指示符的值。数据接收设备包括:发送单元、接收单元和处理单元。
该处理单元,用于在确定通过该接收单元接收到携带的第一指示符的值和通过该接收单元从数据发送设备接收的上一数据报文中的第一指示符的值不同的第一数据报文时,确定数据发送设备已发送第二数据报文的重传报文,该第二数据报文为已丢失数据报文。
该处理单元,还用于在确定该第二数据报文的重传报文丢失时,通过该发送单元向数据发送设备发送确认号为该第二数据报文的序列号的第一确认报文,该第一确认报文中的第二指示符的值与该处理单元通过该发送单元向数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该第二数据报文的重传报文已丢失。
根据第三方面的实现方式,数据接收设备可以根据数据报文中携带的第一指示符的值确定数据发送设备重传了一个数据报文,并在确定该重传的数据报文丢失时通过第二指示符的值通知数据发送设备,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。
在第三方面的第一种实现方式中,该第二指示符的长度可以为1比特,相应地,该第二指示符的值为0或1。通过该实现方式,第二指示符占用的位数较少,对确认报文可携带的其它信息的信息量影响较小,易于实现。
基于第三方面或第三方面的第一种实现方式,在第二种实现方式中,该处理单元具体可以用于当确定在判断结束条件满足之前没有通过该接收单元接收到该第二数据报文的重传报文时确定该第二数据报文的重传报文丢失,该判断结束条件为在接收该第一数据报文之后接收的携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文的数据量满足数据量条件。
该判断结束条件具体可以为在通过该接收单元接收该第一数据报文之后接收的携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文的个数达到预设个数。该判断结束条件具体还可以为在通过该接收单元接收该第一数据报文之后通过该接收单元接收的携带的第一指示符的值与该第一数据条件中的第一指示符的值相同的数据报文的总长度达到预设数据长度。
可以理解的是,携带的第一指示符的值与该第一数据报文中的第一指示符的值相同的数据报文通常为发送设备在发送该重传报文后发送的数据报文,如果接收到的在发送该重传报文后发送的数据报文的数据量满足了数据量条件,如个数达到预设个数,又如总长度达到预设数据长度,则说明该重传报文很可能已经丢失了。因此,通过该实现方式确定重传报文丢失,准确度较高。
基于第三方面、第三方面的第一种实现方式或第三方面的第二种实现方式,在第三种实现方式中,该处理单元可以每确定丢失一个重传报文时修改第二指示符的值,该处理单元通过该发送单元发送该第一确认报文之后且确定丢失下一重传报文之前通过该发送单元发送的其它确认报文中的第二指示符的值与该第一确认报文中的第二指示符的值相同。
根据第三种实现方式,可以通过第二指示符的值的变化指示重传报文的丢失,实现简单高效。
进一步地,该第一数据报文可以为该处理单元在第一时间后通过该接收单元接收到的第一个携带的第一指示符的值和通过该接收单元从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。该第一时间为如下两个时间中较晚的一个:
最近一次修改第二指示符的值的时间;
确定通过该接收单元接收到第一个序列号大于该第二数据报文的序列号的数据报文的时间。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在第一时间后接收到第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文时,确定数据发送设备已发送第二数据报文的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
基于第三方面、第三方面的第一种实现方式或第三方面的第二种实现方式,在第四种实现方式中,该处理单元可以每确定丢失一个数据报文时修改第二指示符的值。
该处理单元还用于,在确定数据发送设备已发送第二数据报文的重传报文之前、在确定该第二数据报文丢失时,通过该发送单元向数据发送设备发送确认号为该第二数据报文的序列号的第二确认报文,该第二确认报文中的第二指示符的值与该处理单元通过该发送单元向数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该第二数据报文已丢失。进一步地,该处理单元通过该发送单元发送该第一确认报文之后且确定丢失下一数据报文之前通过该发送单元发送的其它确认报文中的第二指示符的值与该第一确认报文中的第二指示符的值相同;该处理单元通过该发送单元发送该第二确认报文之后且确定丢失下一数据报文之前通过该发送单元发送的其它确认报文中的第二指示符的值与该第二确认报文中的第二指示符的值相同。
根据该第四种实现方式,数据发送设备还可以根据接收的确认报文中的第二指示符的值的变化确定非重传报文的丢失,而无需等待收到预设数量个(如3个)重复确认报文时才确定该非重传报文丢失,在确认报文有可能丢失的情况下,可以尽早确定并重传丢失的非重传报文,从而进一步提升通信效率。
基于第三方面的第四种实现方式,在第五种实现方式中,该第一数据报文具体可以为该处理单元在最近一次修改第二指示符的值后通过该接收单元接收到的第一个携带的第一指示符的值和通过该接收单元从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在最近一次修改第二指示符的值后接收到第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文时,确定数据发送设备已发送第二数据报文的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
第四方面,提供了一种数据发送设备,数据发送设备和数据接收设备之间通过基于可靠传输协议建立的连接进行通信,数据发送设备通过该连接向数据接收设备发送的数据报文携带第一指示符的值,数据发送设备通过该连接接收的数据接收设备发送的确认报文携带第二指示符的值。数据发送设备包括:发送单元、接收单元和处理单元。
该处理单元,用于在确定通过该发送单元向数据接收设备发送的第一数据报文丢失时,通过该发送单元首次重传该第一数据报文,该首次重传的第一数据报文中的第一指示符的值与该处理单元通过该发送单元向数据接收设备发送的上一数据报文中的第一指示符的值不同,该处理单元通过该发送单元首次重传该第一数据报文后且通过该发送单元向数据接收设备发送下一重传报文前发送的其它数据报文中的第一指示符的值与该首次重传的第一数据报文中的第一指示符的值相同,该首次重传的第一数据报文和该其它数据报文中的第一指示符的值与该上一数据报文中的第一指示符的值的不同用于表示数据发送设备向数据接收设备发送了一个重传报文。
该处理单元,还用于通过该接收单元接收第一确认报文,该第一确认报文的确认号为该第一数据报文的序列号,并用于在确定该第一确认报文中的第二指示符的值与通过该接收单元从数据接收设备接收的上一确认报文中的第二指示符的值不同时,根据该第一确认报文的确认号再次通过该接收单元重传该第一数据报文。
根据第四方面的实现方式,数据发送设备在发送重传报文后可以通过第一指示符的值通知数据接收设备已发送重传报文,因此数据接收设备可以确定该数据发送设备已发送一个重传报文并在确定该重传报文丢失时通过第二指示符的值通知数据发送设备该重传报文已丢失,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。
在第四方面的第一种实现方式中,该第一指示符的长度可以为1比特,相应地,该第二指示符的值为0或1。通过该实现方式,第一指示符占用的位数较少,对确认报文可携带的其它信息的信息量影响较小,易于实现。
由于可能存在报文乱序,数据接收设备在确定丢失一个重传报文前发送的确认报文可能会晚于在确定丢失该重传报文后发送的确认报文。发生报文乱序后,可能会存在报文乱序所导致的携带的RE的值和上一确认报文中的RE的值不同的确认报文。
对于任一重传报文,数据发送设备在发送该重传报文之后接收到用于表示丢失了数据报文(可能是该重传报文、也可能是序列号大于该重传报文的序列号的另一数据报文)的确认报文的时间和发送该重传报文的时间之差通常不小于该数据发送设备和该数据接收设备之间的往返时延(Round-Trip Time,RTT),并且,如果携带不同的RE的值的确认报文之间不发生乱序,在相继发送两个重传报文之间通常只会接收到一个携带的RE的值和上一确认报文中的RE的值不同的确认报文。
为了减少乱序导致的误判,基于第四方面或第四方面的第一种实现方式,在第二种实现方式中,该第一确认报文可以为该处理单元在第一时间之后通过该接收单元接收的第一个携带的第二指示符的值与通过该接收单元从数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,该第一时间为通过该发送单元首次重传该第一数据报文的时间与a1*RTT的和,其中,0<a1<1,RTT为数据发送设备和数据接收设备之间的往返时延。
为了进一步提升判断的准确性,a1的取值范围可以为0.25<=a1<=0.8,具体可以为0.5。
基于第四方面或第四方面的上述任一实现方式,在第三种实现方式中,该处理单元可以通过如下实施方式确定通过该发送单元向数据接收设备发送的第一数据报文丢失:通过该接收单元接收第二确认报文,该第二确认报文的确认号为该第一数据报文的序列号;并用于在确定该第二确认报文中的第二指示符的值与通过该接收单元从数据接收设备接收的上一确认报文中的第二指示符的值不同时,确定该第二确认报文的确认号对应的该第一数据报文丢失。
根据该实现方式,数据发送设备可以根据接收的确认报文中的第二指示符的值的变化确定非重传报文的丢失,而无需等待收到预设数量个(如3个)重复确认报文时才确定该非重传报文丢失,在确认报文有可能丢失的情况下,可以尽早确定并重传丢失的非重传报文,从而进一步提升通信效率。
为了减少乱序导致的误判,基于第四方面的第三种实现方式,在第四种实现方式中,该第二确认报文可以为在第二时间之后接收的第一个携带的第二指示符的值与从数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,该第二时间为发送上一重传报文的时间与a2*RTT的和,其中,0<a2<1,RTT为数据发送设备和数据接收设备之间的往返时延。为了进一步提升判断的准确性,a2的取值范围可以为0.25<=a2<=0.8,具体可以为0.5。第四种实现方式中的a2和第二种实现方式中的a1通常取相同的值。
第五方面,提供了一种通信系统,该通信系统包括数据发送设备和数据接收设备。
数据发送设备可以用于执行上述第二方面提供的方法,具体可以为如上述第四方面提供的数据发送设备。数据接收设备可以用于执行上述第一方面提供的方法,具体可以为如上述第三方面提供的数据接收设备。
第六方面,提供了一种计算机可读存储介质,包括指令,当该指令在计算机上运行时,使得计算机执行上述第一方面或第二方面提供的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1A和1B为本发明实施例提供的通信系统100的组网结构示意图;
图2A和2B为本发明实施例1提供的TCP头的结构示意图;
图3A和3B为本发明实施例1提供的方法100的流程示意图;
图4是本发明实施例2提供的数据发送设备200的结构示意图;
图5是本发明实施例3提供的数据接收设备300的结构示意图;
图6是本发明实施例5提供的数据发送设备1000的结构示意图;
图7是本发明实施例6提供的数据接收设备2000的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
图1A为本发明实施例提供的一种通信系统100的组网结构示意图。通信系统100包括通信设备110和通信设备120。通信设备110和通信设备120之间可以建立基于可靠传输协议的连接,并通过该连接传输报文。该可靠传输协议具体可以是TCP、SCTP等。需要说明的是,通信设备110和通信设备120之间可以直接通信,如通过网线直接相连,也可以通过传输设备(如路由器)通信,则通信系统100还包括至少一个传输设备130(如图1B所示)。
通信设备110和通信设备120均可以为终端或服务器。如,第一通信设备为视频终端,如机顶盒(Set Top Box,STB),第二通信设备可以为视频服务器,如因特网协议电视(Internet Protocol Television,IPTV)头端。又如,通信设备110和通信设备120均为通话终端。
通信设备110和通信设备120之间传输的报文包括数据报文和用于对数据报文进行确认的确认报文,如TCP ACK报文。数据报文通常为封装了通信数据(如视频数据)的报文。
对于通信设备110和通信设备120中的一方(后续称为通信设备A)通过该连接向另一方(后续称为通信设备B)发送的任一数据报文,通信设备B通常会通过确认报文通知通信设备A是否已接收到该数据报文。如果该数据报文丢了,通信设备A会重传该数据报文。需要说明的是,如果通信设备A和通信设备B均向对方发送数据报文,则通信设备B向通信设备A发送的确认报文也可能携带通信数据,即该确认报文既作为通信设备B向通信设备A发送的确认报文又作为通信设备B向通信设备A发送的数据报文。
后续将通信设备110和通信设备120中发送数据报文的通信设备称为数据发送设备,将另一通信设备称为数据接收设备。如,通信设备110为STB,通信设备120为IPTV头端,IPTV头端向STB发送视频流,则将IPTV头端称为数据发送设备,将STB称为数据接收设备。又如,通信设备110和通信设备120均为通话终端,相互发送通信数据,则在对通信设备110向通信设备120发送的数据报文进行丢包检测时,将通信设备110称为数据发送设备,将通信设备120称为数据接收设备。
数据发送设备通过该连接向数据接收设备发送的数据报文的序列号符合一定的规则,如,当该可靠传输协议为TCP或SCTP时,每个数据报文的负载的第一个字节的序列号可以看做是该数据报文的序列号,因此,对于任意两个相邻的数据报文,后一数据报文的序列号等于前一数据报文的序列号加上前一数据报文的负载长度。为便于表述,在举例时假定每个数据报文的负载长度均为1字节。
下面结合图2A、2B和图3A、3B介绍本发明实施例1提供的方法100。本发明实施例1的方法可以应用于如图1A或图1B所示的通信系统100。
在本发明实施例1中,数据发送设备和数据接收设备之间基于可靠传输协议(如TCP)建立连接,并通过该连接传输报文。数据发送设备向数据接收设备发送的数据报文,可能会被数据接收设备收到,也可能会丢失。发送的数据报文丢失时,数据发送设备会重传丢失的数据报文,如果重传的数据报文也丢失,会再次重传丢失的数据报文。因此,数据发送设备向数据接收设备发送的数据报文包括首次发送的数据报文和重传的数据报文,后续将重传的数据报文称为重传报文。
数据发送设备可以在发送的数据报文中携带第一指示符(后续称为SE),以通知数据接收设备发送了重传报文。具体地,在数据发送设备和数据接收设备进行通信之前,数据发送设备为SE设置一个初始值,如0,数据发送设备在发送第一个重传报文前向数据接收设备发送的数据报文包括的SE的值均为该初始值,然后,数据发送设备每确定要发送一个重传报文时(即每确定数据接收设备丢失了一个数据报文时),修改SE的值,并在该重传报文和后续发送的数据报文中携带该修改后的SE的值,直到发送下一重传报文。也就是说,在相邻的两个重传报文之间发送的数据报文、以及该两个重传报文中的前一个重传报文中携带的SE的值是确定要发送该前一个重传报文时修改的SE的值。
数据接收设备可以在发送的确认报文中携带第二指示符(后续称为RE),以通知数据发送设备丢失了数据报文。具体可以采用如下两种方式实现。
方式X:数据接收设备每确定丢失一个数据报文时修改RE的值,并在后续发送的确认报文中携带该修改后的RE的值,直到再次确定丢失数据报文。也就是说,在连续两次确定丢失数据报文之间发送的确认报文中携带的是前一次确定丢失数据报文后修改的RE的值。
方式Y:数据接收设备仅在每确定丢失一个重传报文时修改RE的值,而不在丢失非重传报文时修改RE的值。修改RE的值后,在后续发送的确认报文中携带该修改后的RE的值,直到再次确定丢失重传报文。也就是说,在连续两次确定丢失重传报文之间发送的确认报文中携带的是前一次确定丢失重传报文后修改的RE的值。
在具体实现时,在数据发送设备和数据接收设备进行通信之前,数据接收设备为RE设置一个初始值,如0。如果采用方式X,数据接收设备在确定第一个丢失的数据报文前向数据发送设备发送的确认报文包括的RE的值均为该初始值。如果采用方式Y,数据接收设备在确定第一个丢失的重传报文前向数据发送设备发送的确认报文包括的RE的值均为该初始值。
RE和SE的长度可以为1比特或多比特。当RE的长度为1比特时,每确定丢失一个数据报文(用于方式X)或每确定丢失一个重传报文(用于方式Y),RE的值跳变一次,即由1变为0或由0变为1。当SE的长度为1比特时,每重传一个数据报文,SE的值跳变一次,即由1变为0或由0变为1。
当SE、RE的长度为1比特时,占用的位数较少,对所在报文可携带的其它信息的信息量影响较小,易于实现。
在具体实现时,可以利用数据发送设备和数据接收设备之间传输报文的协议的头域中的字段携带RE的值和SE的值。
以数据发送设备和数据接收设备之间通过TCP协议通信为例。可以使用TCP头中预留的比特位携带RE和SE的值。如图2A所示,数据偏移字段与NS字段之间为预留的3比特,数据接收设备可以使用其中的1比特携带RE的值,数据发送设备可以使用其中的另1比特携带SE的值。也可以使用TCP头中的选项头携带RE和SE的值。如图2B所示,将该选项头的类型设置为与其他选项不冲突的值(如40),长度为该选项头的长度(如4),接下来的2比特分别用于携带RE的值与SE的值,后续的14比特可以设置为填充数据(如全部填充为0)。
下面结合图3A介绍本发明实施例1提供的方法100的实施方式1。在实施方式1中,数据接收设备采用方式X通知数据发送设备丢失了数据报文。
如图3A所示,在实施方式1中,方法100包括如下步骤:
S201:数据发送设备向数据接收设备发送数据报文。
在具体实现时,数据发送设备会向数据接收设备发送多个序列号连续的数据报文。假定每个数据报文的长度均为1字节,数据发送设备在步骤S201中依次向数据接收设备发送的数据报文的序列号为1、2、3、4、5、6、7……。
数据发送设备在发送第一个重传报文前发送的数据报文中的SE的值为设置的初始值。
数据发送设备建立与数据接收设备之间的基于可靠传输协议的连接后,开始执行步骤S201向数据接收设备发送序列号连续的多个数据报文,并循环执行步骤S205至步骤S207以检测并重传丢失的数据报文。需要说明的是,循环执行步骤S205至步骤S207的过程中步骤S201会一直执行。
在一个循环中执行步骤S205检测到的丢失的数据报文可能是步骤S201中发送的数据报文,也可能是在上一循环中执行步骤S207发送的重传报文。
可以理解的是,在步骤S201中发送的是非重传报文,在步骤S207中发送的是重传报文。
S202:数据接收设备接收数据发送设备发送的数据报文,并判断是否存在丢失的数据报文。
在步骤S202中,数据接收设备可以每接收一个数据报文均判断是否存在丢失的数据报文,直至判断出丢失的数据报文。
数据接收设备建立与数据发送设备之间的基于可靠传输协议的连接后,执行步骤S202,每接收一个数据报文均判断是否存在丢失的数据报文,直至判断出丢失的数据报文。
在判断出丢失的数据报文后执行步骤S203和S204以通知数据发送设备丢失了数据报文,并执行步骤S208,在步骤S208中判断是否接收到序列号和数据报文A的序列号相同的数据报文(即数据报文A或数据报文A的重传报文)、并判断数据发送设备是否发送了数据报文A的重传报文。如果接收到序列号和数据报文A的序列号相同的数据报文,转步骤S202;如果没接收到序列号和数据报文A的序列号相同的数据报文,但判断出数据发送设备发送了数据报文A的重传报文,执行步骤S209判断该重传报文是否丢失。
如果在步骤S209中判断出该重传报文没有丢失(即接收到该重传报文),则转步骤S202。否则,转步骤S203。
可以理解的是,步骤S202判断的是非重传报文是否丢失,步骤S209判断的是重传报文是否丢失。
数据接收设备可以在确定接收到预设个数的序列号大于某个数据报文的序列号的其它数据报文时,确定该数据报文丢失。示例性地,预设个数可以为3,数据接收设备依次接收到的数据报文的序列号依次为1、2、4、5、6、7,则在收到序列号为6的数据报文时可以确定序列号为3的数据报文丢失。
数据接收设备还可以在确定接收到的序列号大于该数据报文的序列号的其它数据报文的总长度大于或等于预设数据长度时,确定该数据报文丢失。预设数据长度可以设置为2*最大段长度(Maximum Segment Size,MSS)。
如果步骤S202的判断结果为是,执行步骤S203。否则,向数据发送设备发送确认号为待接收数据报文的序列号且携带当前的RE的值的确认报文,并在接收到新的数据报文时继续执行步骤S202判断是否存在丢失的数据报文。数据接收设备在第一次判断出存在丢失的数据报文前发送的确认报文中的RE的值为设置的初始值。
为便于描述,后续将步骤S202中判断出丢失的数据报文称为数据报文A。
S203-S204:数据接收设备修改RE的值(如图3A中的S203),并向数据发送设备发送确认号为数据报文A的序列号、且携带修改后的RE的值的确认报文(如图3A中的S204)。
数据接收设备向数据发送设备发送的确认报文的确认号为期望接收的数据报文的序列号。如果确定丢失了一个数据报文(可能是在步骤S202中确定丢失的数据报文A、也可能是在步骤209中确定丢失的数据报文A的重传报文),发送的确认报文的确认号为数据报文A的序列号。
数据接收设备在确定丢失一个数据报文(如在步骤S202中确定数据报文A丢失、又如在后续步骤S209确定数据报文A的重传报文丢失)后执行步骤S203以修改RE的值,并在后续发送的确认报文中携带该修改后的RE的值,直到再次确定丢失数据报文。可以理解的是,确定该数据报文丢失后、确定丢失下一数据报文前向数据发送设备发送的确认报文中的RE的值与数据接收设备在确定该数据报文丢失之前向数据发送设备发送的最后一个确认报文中的RE的值不同。
确定丢失的下一数据报文可能是数据报文A的重传报文,当该丢失的数据报文为数据报文A时,该丢失的下一数据报文为第1次重传的数据报文A,当该丢失的数据报文为第N次重传的数据报文时,该丢失的下一数据报文为第N+1次重传的数据报文A,其中N为正整数。丢失的下一数据报文也可能是序列号大于数据报文A的序列号的其它数据报文,表明数据报文A的重传报文没有丢失,而是正常接收到了。
在步骤S204中通常会发送多个确认报文,执行步骤S203后,数据接收设备一边基于接收的数据报文执行后续的串行步骤S208和S209一边基于接收的数据报文执行步骤S204。
需要说明的是,在接收到数据报文A的上一相邻数据报文后以及接收到数据报文A的重传报文前发送的所有确认报文的确认号均为数据报文A的序列号。
S205:数据发送设备接收数据接收设备发送的确认报文,在确定接收到携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的第一确认报文时,确定该第一确认报文的确认号对应的数据报文丢失,执行步骤S206-S207。
可以理解的是,从数据发送设备的角度来说,任一确认报文对应的上一确认报文与该任一确认报文为相继接收到的两个确认报文。
由于可能存在报文乱序,数据接收设备在确定丢失一个数据报文前发送的确认报文可能会晚于在确定丢失该数据报文后发送的确认报文到达数据发送设备。由于在确定丢失该数据报文至确定丢失下一数据报文之间发送的各确认报文中的RE的值相同,且和在确定丢失该数据报文前发送的确认报文中的RE的值不同,所以发生报文乱序后可能会存在报文乱序所导致的携带的RE的值和上一确认报文中的RE的值不同的确认报文。
对于任一重传报文,数据发送设备在发送该重传报文之后接收到用于表示丢失了数据报文(可能是该重传报文、也可能是序列号大于该重传报文的序列号的另一数据报文)的确认报文的时间和发送该重传报文的时间之差通常不小于该数据发送设备和该数据接收设备之间的往返时延(Round-Trip Time,RTT),并且,如果携带不同的RE的值的确认报文之间不发生乱序,在相继发送两个重传报文之间通常只会接收到一个携带的RE的值和上一确认报文中的RE的值不同的确认报文。因此,为了减少乱序导致的误判,可以当在时间T1+a*RTT之后接收到第一个携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的确认报文时确定该确认报文的确认号对应的数据报文丢失,即第一确认报文为T1+a*RTT之后接收到的第一个携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的确认报文。其中,T1为最近一次发送重传报文的时间(即在步骤S205之前发送最后一个重传报文的时间),0<a<1。最近一次发送的重传报文可能是数据报文A的重传报文,也可能是序列号小于数据报文A的序列号的另一个数据报文的重传报文。为了进一步提升判断的准确性,a的取值范围可以为0.25<=a<=0.8,具体可以为0.5。RTT可以是数据发送设备对与数据接收设备之间传输的报文进行检测(如周期性检测)得到的,如,基于每2秒发送的数据报文的发送时间及对应的确认报文的接收时间计算RTT,又如,基于每个数据报文的发送时间及对应的确认报文的接收时间计算RTT。在具体实现时,数据发送设备可以在时间T1+a*RTT之后每接收一个确认报文均判断该确认报文中的RE的值和从数据接收设备接收的上一确认报文中的RE的值是否相同,直至接收到携带的RE的值和从数据接收设备接收的上一确认报文中的RE的值不同的确认报文(即第一确认报文)。
另外,数据发送设备与数据接收设备通信后,在第一次执行步骤S205之前并没有重传报文,则可以直接在建立TCP连接后开始判断从数据接收设备接收的确认报文中的RE的值和从数据接收设备接收的上一确认报文中的RE的值是否相同。
S206-S207:数据发送设备修改SE的值(如图3A中的S206),并向数据接收设备重传第一确认报文的确认号对应的数据报文(如图3A中的S207),重传的数据报文包括修改后的SE的值。
注:在图2B中,表示步骤S207的带箭头横线并没有与右侧的竖线相连,表示步骤S207中发送的重传报文不一定会被数据接收设备接收到。
步骤S207重传的数据报文中的SE的值为修改后的SE的值,即与数据发送设备向数据接收设备发送的上一数据报文中的SE的值不同。可以理解的是,该上一数据报文和该重传的数据报文为相继发送的两个数据报文。
数据发送设备每确定要发送一个重传报文时,修改SE的值,并在该重传报文和后续发送的数据报文中携带该修改后的SE的值,直到发送下一重传报文。
如,在步骤S206之前的SE的值为0,即在步骤S206之前、发送上一重传报文之后发送的数据报文和上一重传报文中的SE的值均为0,步骤S206中发送的重传报文中的SE的值为1。发送步骤S206的重传报文后、发送下一重传报文之前,还可能发送其它数据报文,其它数据报文中的SE的值与步骤S206中发送的重传报文中的SE的值相同(如也为1)。
步骤S205至步骤S207为循环执行的步骤,数据发送设备在执行步骤S207后再次执行步骤S205至步骤S207以再次检测并重传丢失的数据报文。
由于数据接收设备每确定丢失一个数据报文时均会修改RE的值,所以该第一确认报文对应的已丢失数据报文可能是首次发送的数据报文(即数据报文A),也可能是重传的数据报文(即数据报文A的重传报文)。不过,数据发送设备可以不用确定该已丢失数据报文是首次发送的数据报文还是重传的数据报文,只需执行步骤S206和S207发送该确认号对应的数据报文即可。在执行步骤S202后执行步骤S203的情况下,在步骤S205中接收到的第一确认报文对应的已丢失数据报文为数据报文A,相应地,在步骤S207中是第一次重传数据报文A。在执行步骤S209后执行步骤S203的情况下,在步骤S205中接收到的第一确认报文对应的已丢失数据报文为第N次重传的数据报文A,相应地,在步骤S207中是第N+1次重传数据报文A,N为大于等于1的整数。
S208:数据接收设备接收数据发送设备发送的数据报文,在确定接收到序列号和数据报文A的序列号相同的数据报文时,转步骤S202;在确定没有接收到序列号和数据报文A的序列号相同的数据报文、且数据发送设备已发送数据报文A的重传报文时,执行步骤S209。
在步骤S208中如果接收到序列号和数据报文A的序列号相同的数据报文,则处理该数据报文,如,数据接收设备的TCP协议栈将数据报文A的重传报文上报到应用层进行处理,并转步骤S202。在步骤S208中接收到的序列号和数据报文A的序列号相同的数据报文可能是数据报文A,也可能是数据报文A的重传报文。
如果在执行步骤S202和S203之后执行步骤S208,由于步骤S202判断出丢失的数据报文A有可能并没有丢失而是严重延迟,也有可能真的丢失了,所以,在步骤S208中确定接收到的序列号和数据报文A的序列号相同的数据报文可能是数据报文A,也可能是数据报文A的重传报文。如果在执行步骤S209和S203之后执行步骤S208,在步骤S208中确定接收到的序列号和数据报文A的序列号相同的数据报文通常为数据报文A的重传报文。
数据接收设备具体可以在接收到携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文(后续称为数据报文B)时,确定数据发送设备已发送数据报文A的重传报文。
数据报文B可以为执行步骤S203后(即最近一次更新RE的值后)接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
在具体实现时,数据接收设备可以每接收一个数据报文,判断该报文的序列号和数据报文A的序列号是否相同,如果相同,转步骤S202,如果不同,进一步判断该数据报文中的SE的值和从数据发送设备接收的上一数据报文中的SE的值是否相同。如果不同,确定数据发送设备已发送数据报文A的重传报文,执行步骤S209,如果相同,继续执行步骤S208,直至接收到序列号和数据报文A的序列号相同的数据报文、或接收到携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在执行步骤S203后接收到第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文时,确定数据发送设备已发送数据报文A的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
数据报文B也可以为最近一次确定数据报文丢失后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。具体地,如果在执行步骤S202和S203之后执行步骤S208,数据报文B为执行步骤S202后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。如果在执行步骤S209和S203之后执行步骤S208,数据报文B为执行步骤S209后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
由于确定数据报文丢失后会立即更新RE的值,因此,最近一次确定数据报文丢失后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文,通常就是最近一次更新RE的值后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
可以理解的是,从数据接收设备的角度来说,任一数据报文对应的上一数据报文与该任一数据报文为相继接收到的两个数据报文。
步骤S209:数据接收设备判断数据报文A的重传报文是否丢失。
数据接收设备可以判断在判断结束条件满足之前有没有接收到该重传报文,如果在判断结束条件满足之前没有接收到该重传报文,确定该重传报文丢失,否则确定该重传报文没有丢失。判断结束条件可以为在确定数据发送设备已发送数据报文A的重传报文之后接收的携带的SE的值与数据报文B中的SE的值相同的数据报文(后续称为数据报文S)的数据量满足数据量条件。该数据量条件具体可以是预设个数(如3个),相应地,数据报文S的数据量满足数据量条件指的是数据报文S的个数达到预设个数。该数据量条件还可以是预设数据长度(如2*MSS),相应地,数据报文S的数据量满足数据量条件指的是数据报文S的总长度达到预设数据长度。具体地,数据接收设备在确定数据发送设备已发送数据报文A的重传报文之后可以每接收一个数据报文均执行如下操作直至接收到该重传报文或确定该判断结束条件满足:判断该数据报文是否为数据报文A的重传报文,如果不是,判断该数据报文携带的SE的值与该第一数据报文中的SE的值是否相同,如果相同,判断该判断结束条件是否满足。
携带的SE的值与数据报文B中的SE的值相同的数据报文通常为发送设备在发送该重传报文后发送的数据报文,如果接收到的在发送该重传报文后发送的数据报文的数据量满足了数据量条件,如个数达到预设个数,又如总长度达到预设数据长度,则说明该重传报文很可能已经丢失了。因此,通过该判断方法确定重传报文丢失,准确度较高。
如果在步骤S209中判断出数据报文A的重传报文丢失,转步骤S203。
如果在步骤S209中判断出数据报文A的重传报文没有丢失,即接收到数据报文A的重传报文,则处理数据报文A的重传报文,如,数据接收设备的TCP协议栈将数据报文A的重传报文上报到应用层进行处理,并转步骤S202以检测新的丢失的数据报文。
在具体实现时,可能会连续丢失多个数据报文,如,数据接收设备依次接收到的数据报文的序列号依次为1、2、5、6、7、8,丢失了序列号为3和4的数据报文。则在第一次执行步骤S202时可以在收到序列号为7的数据报文时确定序列号为3的数据报文丢失,并执行后续步骤。如果在执行完步骤S209之后再次执行步骤S202时序列号为4的数据报文还没有收到且已接收到序列号为8的数据报文,则再次执行步骤S202时确定的丢失的数据报文为序列号为4的数据报文。
先后丢失的数据报文也可能不是序列号连续的报文,如,数据接收设备依次接收到的数据报文的序列号依次为1、2、4、6、7、8,丢失了序列号为3和5的数据报文。则在第一次执行步骤S202时可以在收到序列号为7的数据报文时确定序列号为3的数据报文丢失,并执行后续步骤。如果在执行完步骤S209之后再次执行步骤S202时序列号为5的数据报文还没有收到且已接收到序列号为8的数据报文,则再次执行步骤S202时确定的丢失的数据报文为序列号为5的数据报文。
在本发明实施例1的实施方式1中,数据接收设备可以设置丢包检测状态。状态1表明当前正在检测是否存在丢失的非重传报文,状态2表明当前已检测到丢失的非重传报文且正在检测是否存在丢失的重传报文。在与数据发送设备进行通信之前,数据接收设备将丢包检测状态设置为状态1。在丢包检测状态为状态1时,每次接收到数据报文均执行步骤S202判断是否存在丢失的数据报文。如果确定不存在丢失的数据报文,在接收到新的数据报文时继续执行步骤S202判断是否存在丢失的数据报文。如果确定存在丢失的数据报文,修改RE,并将丢包检测状态设置为状态2。在丢包检测状态为状态2时,在确定数据发送设备已发送重传报文前,每次接收到数据报文均执行步骤S208。如果通过执行步骤S208确定接收到序列号和已丢失数据报文的序列号相同的数据报文,将丢包检测状态重新设置为状态1;如果通过执行步骤S208确定没有接收到序列号和已丢失数据报文的序列号相同的数据报文、且数据发送设备已发送重传报文,在接收到重传报文前每次接收到数据报文均执行步骤S209判断该重传报文是否丢失。如果接收到该重传报文,将丢包检测状态重新设置为状态1。如果检测到重传报文丢失,修改RE,丢包检测状态保持不变,并再次执行步骤S208和步骤S209。
根据本发明实施例1提供的方法100的实施方式1,数据接收设备可以根据数据报文中携带的第一指示符的值确定数据发送设备重传了一个数据报文,并在确定该重传的数据报文丢失时通过第二指示符的值通知数据发送设备,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。
进一步地,数据接收设备还可以确定非重传报文是否丢失,并在确定非重传报文丢失时通过修改确认报文中的RE的值通知数据发送设备该非重传报文丢失,因此,数据发送设备接收到RE发生变化的确认报文即可确定非重传报文丢失而无需等待收到预设数量个(如3个)重复确认报文时才确定该非重传报文丢失,在确认报文有可能丢失的情况下,可以尽早确定并重传丢失的非重传报文,从而进一步提升通信效率。
下面结合图3B介绍本发明实施例1提供的方法100的实施方式2,在实施方式2中,数据接收设备采用方式Y通知数据发送设备丢失了数据报文。
如图3B所示,在实施方式2中,方法100包括如下步骤:
S301:数据发送设备向数据接收设备发送数据报文。
在具体实现时,数据发送设备会向数据接收设备发送多个序列号连续的数据报文。
数据发送设备在发送第一个重传报文前发送的数据报文中的SE的值为设置的初始值。
数据发送设备建立与数据接收设备之间的基于可靠传输协议的连接后,开始执行步骤S301向数据接收设备发送序列号连续的多个数据报文,并执行步骤S304检测在步骤S301发送的数据报文中丢失的数据报文,进而执行步骤S305和S306重传丢失的数据报文。在执行步骤S306后,执行步骤S311确定重传的数据报文是否丢失,如果丢失,再次执行步骤S305-S306以再次重传该数据报文,否则,转步骤S304再次检测在步骤S301发送的数据报文中丢失的另一数据报文。
可以理解的是,在步骤S301中发送的是非重传报文,在步骤S306中发送的是重传报文。
S302:数据接收设备接收数据发送设备发送的数据报文,并确定接收到序列号大于还未收到的数据报文的序列号的其它数据报文。后续将该未收到的数据报文称为数据报文A。
如,数据接收设备依次接收到序列号为1、2、4的数据报文,在接收到序列号为4的数据报文前没有接收到序列号为3的数据报文,数据报文A即为序列号为3的数据报文。
S303:数据接收设备向数据发送设备发送确认号为数据报文A的序列号的确认报文。
该确认报文的确认号为数据报文A的序列号,表示期望接收数据报文A。
数据接收设备后续在接收到数据报文A之前每接收一个数据报文均向数据发送设备发送一个序列号为数据报文A的序列号的确认报文。
数据接收设备在确定接收到序列号大于数据报文A的序列号的其它数据报文之前接收到序列号小于数据报文A的序列号且与数据报文A相邻的数据报文时也可能向数据发送设备发送确认号为数据报文A的序列号的确认报文,以表示期望接收数据报文A。
如,相继接收到序列号为1、2、4、5、6、7的数据报文,在接收到序列号分别为2、4、5、6、7的数据报文时均向数据发送设备发送确认号为3的确认报文,以表示期望接收序列号为3的数据报文。
在步骤S303中通常会发送多个确认报文,执行步骤S302后,数据接收设备一边基于接收的数据报文执行后续的串行步骤S307和S308一边基于接收的数据报文执行步骤S303。
需要说明的是,在接收到数据报文A的上一相邻数据报文后以及接收到数据报文A或数据报文A的重传报文前发送的所有确认报文的确认号均为数据报文A的序列号。
S304:数据发送设备根据接收的确认报文确定数据报文A丢失。
由于在实施方式2中数据接收设备仅在确定丢失重传报文时修改RE的值,所以,数据发送设备无法根据接收的确认报文中的RE的值的变化判断非重传报文是否丢失。由于数据接收设备在接收到数据报文A之前每接收一个数据报文均向数据发送设备发送一个确认号为数据报文A的序列号的确认报文。因此,数据发送设备可以在收到预设个数(如3个)的序列号为数据报文A的序列号的重复确认报文时确定数据报文A丢失。
S305-S306:数据发送设备修改SE的值(如图3B中的S305),并向数据接收设备发送数据报文A的重传报文(如图3B中的S306),该重传报文包括修改后的SE的值。
注:在图3B中,表示步骤S306的带箭头横线并没有与右侧的竖线相连,表示步骤S306中发送的重传报文不一定会被数据接收设备接收到。
如果在执行步骤S304后执行步骤S305-S306,在步骤S306中发送的数据报文是第1次重传的数据报文A。如果在执行步骤S311后执行步骤S305-S306,在步骤S311中确定丢失的数据报文为第N次重传的数据报文A,相应地,在步骤S306中发送的数据报文是第N+1次重传的数据报文A,N为正整数。
步骤S306发送的重传报文中的SE的值为通过步骤S305修改后的SE的值,即与数据发送设备向数据接收设备发送的上一数据报文中的SE的值不同。可以理解的是,该上一数据报文和该重传报文为相继发送的两个数据报文。
S307:数据接收设备接收数据发送设备发送的数据报文,在确定接收到序列号和数据报文A的序列号相同的数据报文时,转步骤S302;在确定没有接收到序列号和数据报文A的序列号相同的数据报文、且数据发送设备已发送数据报文A的重传报文时,执行步骤S308。
在步骤S307中如果接收到序列号和数据报文A的序列号相同的数据报文,则处理该数据报文,如,数据接收设备的TCP协议栈将数据报文A的重传报文上报到应用层进行处理,并转步骤S302。在步骤S307中接收到的序列号和数据报文A的序列号相同的数据报文可能是数据报文A,也可能是数据报文A的重传报文。
如果在执行步骤S302后执行步骤S307,由于步骤S302中未收到的数据报文A有可能并没有丢失而是发生了延迟,也有可能丢失了,所以,在步骤S307中确定接收到的序列号和数据报文A的序列号相同的数据报文可能是数据报文A,也可能是数据报文A的重传报文。如果在执行步骤S308和S309之后执行步骤S307,在步骤S307中确定接收到的序列号和数据报文A的序列号相同的数据报文通常为数据报文A的重传报文。
数据接收设备具体可以在接收到携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文(后续称为数据报文B)时,确定数据发送设备已发送数据报文A的重传报文。
如果在执行步骤S302后执行步骤S307,数据报文B可以为执行步骤S302后(即确定接收到第一个序列号大于数据报文A的序列号的数据报文后)接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
如果在执行步骤S309之后执行步骤S307,数据报文B可以为执行步骤S309后(即最近一次更新RE的值后)接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
步骤S307有时在步骤S302后执行,有时在步骤S309后执行。可以理解的是,数据报文B为时间T2后接收到的第一个携带的第一指示符的值和从数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文,其中,时间T2为如下两个时间中较晚的时间:
最近一次更新第二指示符的值的时间,即执行步骤S307的时间;
确定接收到第一个序列号大于该第二数据报文的序列号的数据报文的时间(即执行步骤S302的时间)。
在具体实现时,在步骤S307中,数据接收设备可以每接收一个数据报文,判断该报文的序列号和数据报文A的序列号是否相同,如果相同,转步骤S302,如果不同,进一步判断该数据报文中的SE的值和从数据发送设备接收的上一数据报文中的SE的值是否相同,如果不同,确定数据发送设备已发送数据报文A的重传报文,执行步骤S308,如果相同,继续执行步骤S307,直至接收到序列号和数据报文A的序列号相同的数据报文或接收到携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
由于可能存在报文乱序,数据发送设备在发送一个重传报文之前发送的数据报文可能会晚于在发送该重传报文后发送的一个或多个其它数据报文到达数据接收设备。发生报文乱序后,可能会存在报文乱序所导致的携带的SE的值和上一数据报文中的SE的值不同的数据报文。根据上述实现方式,当在T2后接收到第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文时,确定数据发送设备已发送数据报文A的重传报文,可以有效地解决数据报文乱序导致的判断不准确的问题。
如果在执行步骤S309之后执行步骤S307,数据报文B也可以为执行步骤S308后(即最近一次确定丢失重传报文后)接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。由于确定数据报文丢失后会立即更新RE的值,因此,最近一次确定丢失重传报文后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文,通常就是最近一次更新RE的值后接收到的第一个携带的SE的值和从数据发送设备接收的上一数据报文中的SE的值不同的数据报文。
可以理解的是,从数据接收设备的角度来说,任一数据报文对应的上一数据报文与该任一数据报文为相继接收到的两个数据报文。
步骤S308:数据接收设备判断数据报文A的重传报文是否丢失。
步骤S308的实现同步骤S209,不再赘述。
如果数据接收设备判断出该重传报文丢失,则执行步骤S309和S310。如果数据接收设备判断出该重传报文没有丢失,即接收到数据报文A的重传报文,则处理该重传报文,并转步骤S302。
步骤S309-S310:数据接收设备修改RE的值(如图3B中的步骤S309),并向数据发送设备发送确认号为数据报文A的序列号、且携带修改后的RE的值的确认报文(如图3B中的步骤S310)。
数据接收设备在确定丢失一个重传报文后修改RE的值,并在后续发送的确认报文中携带该修改后的RE的值,直到再次确定丢失重传报文。可以理解的是,确定该重传报文丢失后、确定丢失下一重传报文前向数据发送设备发送的确认报文中的RE的值与数据接收设备在确定该重传报文丢失之前向数据发送设备发送的最后一个确认报文中的RE的值不同。
丢失的下一重传报文可能是该已丢失重传报文对应的再次重传报文。丢失的下一重传报文也可能是序列号大于该已丢失重传报文的序列号的其它数据报文的重传报文,表明该已丢失重传报文的再次重传报文没有丢失,而是正常接收到了。
数据接收设备在执行步骤S309后执行步骤S310并转步骤S307。
在步骤S310中通常会发送多个确认报文,执行步骤S309后,数据接收设备一边基于接收的数据报文执行串行步骤S307和S308一边基于接收的数据报文执行步骤S309。
步骤S311:数据发送设备接收数据接收设备发送的确认报文,并根据接收的确认报文判断数据报文A的重传报文是否丢失,如果没丢失,转步骤S304,如果丢失,转步骤S305。
数据发送设备具体可以在确定接收到确认号大于数据报文A的序列号的确认报文时,确定数据接收设备已接收到数据报文A的重传报文,即数据报文A的重传报文没丢失。
数据发送设备具体可以在确定接收到确认号为数据报文A的序列号、且携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的第一确认报文时确定数据报文A的重传报文丢失。
由于可能存在报文乱序,数据接收设备在确定丢失一个重传报文前发送的确认报文可能会晚于在确定丢失该重传报文后发送的确认报文到达数据发送设备。由于在确定丢失该重传报文至确定丢失下一重传报文之间发送的各确认报文中的RE的值相同,且和在确定丢失该重传报文前发送的确认报文中的RE的值不同,所以发生报文乱序后会存在多个携带的RE的值和上一确认报文中的RE的值不同的确认报文。
对于任一重传报文,数据发送设备在发送该重传报文之后接收到用于表示丢失了另一重传报文的确认报文的时间和发送该重传报文的时间之差通常不小于该数据发送设备和该数据接收设备之间的RTT,并且,如果携带不同的RE的值的确认报文之间不发生乱序,在相继发送两个重传报文之间通常只会接收到一个携带的RE的值和上一确认报文中的RE的值不同的确认报文。因此,为了减少乱序导致的误判,可以当在时间T1+a*RTT之后接收到第一个确认号为数据报文A的序列号、且携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的确认报文时确定数据报文A丢失,即第一确认报文为T1+a*RTT之后接收到的第一个确认号为数据报文A的序列号、且携带的RE的值与从数据接收设备接收的上一确认报文中的RE的值不同的确认报文。其中,T1为最近一次发送重传报文的时间(即在步骤S311之前最近一次执行步骤S306的时间),0<a<1。最近一次发送的重传报文可能是数据报文A的重传报文,也可能是序列号小于数据报文A的序列号的另一个数据报文的重传报文。为了进一步提升判断的准确性,a的取值范围可以为0.25<=a<=0.8,具体可以为0.5。RTT的获取方式同步骤S205中描述的方式,不再赘述。
在具体实现时,在时间T1之后、以及时间T1+a*RTT之前,数据发送设备可以每接收一个确认报文,判断该确认报文的确认号是否大于数据报文A的序列号。如果大于,确定数据接收设备已接收到数据报文A的重传报文,转步骤S304,否则在接收到新的确认报文后继续判断,直至到达时间T1+a*RTT。在时间T1+a*RTT之后,数据发送设备可以每接收一个确认报文,判断该确认报文的确认号是否大于数据报文A的序列号。如果大于数据报文A的序列号,确定数据接收设备已接收到数据报文A的重传报文,转步骤S304。如果等于数据报文A的序列号,判断该确认报文中的RE的值和从数据接收设备接收的上一确认报文中的RE的值是否相同。如果不同,确定该确认报文的确认号对应的数据报文丢失,转步骤S305,否则在接收到新的确认报文后继续判断,直至接收到确认号大于数据报文A的序列号的确认报文、或接收到携带的RE的值和从数据接收设备接收的上一确认报文中的RE的值不同的确认报文。
可以理解的是,从数据发送设备的角度来说,任一确认报文对应的上一确认报文与该任一确认报文为相继接收的两个确认报文。
根据本发明实施例1提供的方法100的实施方式2,数据接收设备可以根据数据报文中携带的第一指示符的值确定数据发送设备重传了一个数据报文,并在确定该重传的数据报文丢失时通过第二指示符的值通知数据发送设备,因此数据发送设备可以再次重传该数据报文,从而减少了重传报文丢失触发RTO定时器的次数,有效提升了通信效率。进一步地,根据实施方式2,通过RE的值的变化指示重传报文的丢失,实现简单高效。
根据本发明实施例1,本发明实施例2提出了一种数据发送设备200。数据发送设备200和数据接收设备之间通过基于可靠传输协议建立的连接进行通信,数据发送设备通过该连接向数据接收设备发送的数据报文携带第一指示符的值,数据发送设备通过该连接接收的数据接收设备发送的确认报文携带第二指示符的值。如图4所示,数据发送设备200包括:接收单元210、处理单元220和发送单元230。
处理单元220,用于在确定通过该发送单元向数据接收设备发送的第一数据报文丢失时,通过该发送单元首次重传该第一数据报文,该首次重传的第一数据报文中的第一指示符的值与处理单元220通过该发送单元向数据接收设备发送的上一数据报文中的第一指示符的值不同,处理单元220通过该发送单元首次重传该第一数据报文后且通过该发送单元向数据接收设备发送下一重传报文前发送的其它数据报文中的第一指示符的值与该首次重传的第一数据报文中的第一指示符的值相同,该首次重传的第一数据报文和该其它数据报文中的第一指示符的值与该上一数据报文中的第一指示符的值的不同用于表示数据发送设备向数据接收设备发送了一个重传报文;还用于通过接收单元210接收第一确认报文,该第一确认报文的确认号为该第一数据报文的序列号,并用于在确定该第一确认报文中的第二指示符的值与通过接收单元210从数据接收设备接收的上一确认报文中的第二指示符的值不同时,根据该第一确认报文的确认号再次通过接收单元210重传该第一数据报文。
本发明实施例2中描述的功能单元可以用来实施上述实施例1所述的方法中的数据发送设备执行的操作。具体地,接收单元210用于从数据接收设备接收确认报文,发送单元230向数据接收设备发送数据报文,处理单元220用于执行确定丢失的数据报文、修改SE的值、通过发送单元230发送数据报文等操作。
根据本发明实施例1,本发明实施例3提出了一种数据接收设备300。数据接收设备300和数据发送设备之间通过基于可靠传输协议建立的连接进行通信,数据接收设备通过该连接接收的数据发送设备发送的数据报文携带第一指示符的值,数据接收设备通过该连接向数据发送设备发送的确认报文携带第二指示符的值。如图5所示,数据接收设备300包括:接收单元310、处理单元320和发送单元330。
处理单元320,用于在确定通过接收单元310接收到携带的第一指示符的值和通过接收单元310从数据发送设备接收的上一数据报文中的第一指示符的值不同的第一数据报文时,确定数据发送设备已发送第二数据报文的重传报文,该第二数据报文为已丢失数据报文;还用于在确定该第二数据报文的重传报文丢失时,通过该发送单元向数据发送设备发送确认号为该第二数据报文的序列号的第一确认报文,该第一确认报文中的第二指示符的值与处理单元320通过该发送单元向数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示该第二数据报文的重传报文已丢失。
本发明实施例3中描述的功能单元可以用来实施上述实施例1所述的方法中的数据接收设备执行的操作。具体地,接收单元310用于从数据发送设备接收数据报文,发送单元330用于向数据接收设备发送确认报文,处理单元320用于执行确定数据发送设备已发送重传报文、确定重传报文是否丢失、修改RE的值、通过发送单元330发送确认报文等操作。
根据本发明实施例1,本发明实施例4提供了一种数据发送设备1000,如图6所示,数据发送设备1000包括处理器1010和存储器1020,其中,处理器1010和存储器1020之间通过总线完成相互间的通信。
存储器1020,用于存放计算机操作指令。具体可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory)。
处理器1010,用于执行存储器1020中存放的计算机操作指令。处理器1010具体可以是中央处理器(central processing unit,CPU),或者是特定集成电路(ApplicationSpecific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
其中,处理器1010执行该计算机操作指令使得数据发送设备设备1000执行上述实施例1所述的方法中的数据发送设备所执行的操作。
根据本发明实施例1,本发明实施例5提供了一种数据接收设备2000,如图7所示,数据接收设备2000包括处理器2010和存储器2020,其中,处理器2010和存储器2020之间通过总线完成相互间的通信。
存储器2020,用于存放计算机操作指令。具体可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory)。
处理器2010,用于执行存储器2020中存放的计算机操作指令。处理器2010具体可以是CPU,或者是ASIC)或者是被配置成实施本发明实施例的一个或多个集成电路。
其中,处理器2010执行该计算机操作指令使得数据接收设备2000执行上述实施例1所述的方法中的数据接收设备所执行的操作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
Claims (24)
1.一种实现丢包检测的方法,其特征在于,所述方法由数据接收设备执行,所述数据接收设备和数据发送设备之间通过基于可靠传输协议建立的连接进行通信,所述数据接收设备通过所述连接接收的所述数据发送设备发送的数据报文携带第一指示符的值,所述数据接收设备通过所述连接向所述数据发送设备发送的确认报文携带第二指示符的值;所述方法包括:
所述数据接收设备在确定接收到携带的第一指示符的值和从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的第一数据报文时,确定所述数据发送设备已发送第二数据报文的重传报文,所述第二数据报文为已丢失数据报文;
所述数据接收设备在确定所述第二数据报文的重传报文丢失时,向所述数据发送设备发送确认号为所述第二数据报文的序列号的第一确认报文,所述第一确认报文中的第二指示符的值与所述数据接收设备向所述数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示所述第二数据报文的重传报文已丢失。
2.如权利要求1所述的方法,其特征在于,所述数据接收设备当确定在判断结束条件满足之前没有接收到所述第二数据报文的重传报文时确定所述第二数据报文的重传报文丢失,所述判断结束条件为在接收所述第一数据报文之后接收的携带的第一指示符的值与所述第一数据报文中的第一指示符的值相同的数据报文的数据量满足数据量条件。
3.如权利要求1或2所述的方法,其特征在于,所述数据接收设备每确定丢失一个重传报文时修改第二指示符的值;
所述数据接收设备发送所述第一确认报文之后且确定丢失下一重传报文之前发送的其它确认报文中的第二指示符的值与所述第一确认报文中的第二指示符的值相同。
4.如权利要求3所述的方法,其特征在于,所述第一数据报文为所述数据接收设备在第一时间后接收到的第一个携带的第一指示符的值和从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文;
所述第一时间为如下两个时间中较晚的一个:
最近一次修改第二指示符的值的时间;
确定接收到第一个序列号大于所述第二数据报文的序列号的数据报文的时间。
5.如权利要求1或2所述的方法,其特征在于,所述数据接收设备每确定丢失一个数据报文时修改第二指示符的值;
所述数据接收设备确定所述数据发送设备已发送第二数据报文的重传报文之前,还包括,所述数据接收设备在确定所述第二数据报文丢失时,向所述数据发送设备发送确认号为所述第二数据报文的序列号的第二确认报文,所述第二确认报文中的第二指示符的值与所述数据接收设备向所述数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示所述第二数据报文已丢失。
6.如权利要求5所述的方法,其特征在于,
所述数据接收设备发送所述第一确认报文之后且确定丢失下一数据报文之前发送的其它确认报文中的第二指示符的值与所述第一确认报文中的第二指示符的值相同;所述数据接收设备发送所述第二确认报文之后且确定丢失下一数据报文之前发送的其它确认报文中的第二指示符的值与所述第二确认报文中的第二指示符的值相同。
7.如权利要求5或6所述的方法,其特征在于,所述第一数据报文具体为所述数据接收设备在最近一次修改第二指示符的值后接收到的第一个携带的第一指示符的值和从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。
8.如权利要求1-7任一所述的方法,其特征在于,所述第二指示符的长度为1比特,所述第二指示符的值为0或1。
9.一种实现丢包检测的方法,其特征在于,所述方法由数据发送设备执行,所述数据发送设备和数据接收设备之间通过基于可靠传输协议建立的连接进行通信,所述数据发送设备通过所述连接向所述数据接收设备发送的数据报文携带第一指示符的值,所述数据发送设备通过所述连接接收的所述数据接收设备发送的确认报文携带第二指示符的值;所述方法包括:
所述数据发送设备在确定向所述数据接收设备发送的第一数据报文丢失时,向所述数据接收设备首次重传所述第一数据报文,所述首次重传的第一数据报文中的第一指示符的值与所述数据发送设备向所述数据接收设备发送的上一数据报文中的第一指示符的值不同,所述数据发送设备首次重传所述第一数据报文后且向所述数据接收设备发送下一重传报文前发送的其它数据报文中的第一指示符的值与所述首次重传的第一数据报文中的第一指示符的值相同,所述首次重传的第一数据报文和所述其它数据报文中的第一指示符的值与所述上一数据报文中的第一指示符的值的不同用于表示所述数据发送设备向所述数据接收设备发送了一个重传报文;
所述数据发送设备接收第一确认报文,所述第一确认报文的确认号为所述第一数据报文的序列号;
所述数据发送设备在确定所述第一确认报文中的第二指示符的值与从所述数据接收设备接收的上一确认报文中的第二指示符的值不同时,根据所述第一确认报文的确认号再次重传所述第一数据报文。
10.如权利要求9所述的方法,其特征在于,所述第一确认报文为在第一时间之后接收的第一个携带的第二指示符的值与从所述数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,所述第一时间为首次重传所述第一数据报文的时间与a*RTT的和,其中,0<a<1,RTT为所述数据发送设备和所述数据接收设备之间的往返时延。
11.如权利要求10所述的方法,其特征在于,0.25<=a<=0.8。
12.如权利要求9-11任一所述的方法,其特征在于,所述数据发送设备确定向所述数据接收设备发送的第一数据报文丢失具体包括:
所述数据发送设备接收第二确认报文,所述第二确认报文的确认号为所述第一数据报文的序列号;
所述数据发送设备在确定所述第二确认报文中的第二指示符的值与从所述数据接收设备接收的上一确认报文中的第二指示符的值不同时,确定所述第二确认报文的确认号对应的所述第一数据报文丢失。
13.如权利要求9-12任一所述的方法,其特征在于,所述第一指示符的长度为1比特,所述第一指示符的值为0或1。
14.一种数据接收设备,其特征在于,所述数据接收设备和数据发送设备之间通过基于可靠传输协议建立的连接进行通信,所述数据接收设备通过所述连接接收的所述数据发送设备发送的数据报文携带第一指示符的值,所述数据接收设备通过所述连接向所述数据发送设备发送的确认报文携带第二指示符的值;所述数据接收设备包括:发送单元、接收单元和处理单元;
所述处理单元,用于在确定通过所述接收单元接收到携带的第一指示符的值和通过所述接收单元从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的第一数据报文时,确定所述数据发送设备已发送第二数据报文的重传报文,所述第二数据报文为已丢失数据报文;
所述处理单元,还用于在确定所述第二数据报文的重传报文丢失时,通过所述发送单元向所述数据发送设备发送确认号为所述第二数据报文的序列号的第一确认报文,所述第一确认报文中的第二指示符的值与所述处理单元通过所述发送单元向所述数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示所述第二数据报文的重传报文已丢失。
15.如权利要求14所述的数据接收设备,其特征在于,所述处理单元具体用于当确定在判断结束条件满足之前没有通过所述接收单元接收到所述第二数据报文的重传报文时确定所述第二数据报文的重传报文丢失,所述判断结束条件为在接收所述第一数据报文之后接收的携带的第一指示符的值与所述第一数据报文中的第一指示符的值相同的数据报文的数据量满足数据量条件。
16.如权利要求14或15所述的数据接收设备,其特征在于,所述处理单元每确定丢失一个重传报文时修改第二指示符的值;
所述处理单元通过所述发送单元发送所述第一确认报文之后且确定丢失下一重传报文之前通过所述发送单元发送的其它确认报文中的第二指示符的值与所述第一确认报文中的第二指示符的值相同。
17.如权利要求16所述的数据接收设备,其特征在于,所述第一数据报文为所述处理单元在第一时间后通过所述接收单元接收到的第一个携带的第一指示符的值和通过所述接收单元从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文;
所述第一时间为如下两个时间中较晚的一个:
最近一次修改第二指示符的值的时间;
确定通过所述接收单元接收到第一个序列号大于所述第二数据报文的序列号的数据报文的时间。
18.如权利要求14或15所述的数据接收设备,其特征在于,所述处理单元每确定丢失一个数据报文时修改第二指示符的值;
所述处理单元还用于,在确定所述数据发送设备已发送第二数据报文的重传报文之前、在确定所述第二数据报文丢失时,通过所述发送单元向所述数据发送设备发送确认号为所述第二数据报文的序列号的第二确认报文,所述第二确认报文中的第二指示符的值与所述处理单元通过所述发送单元向所述数据发送设备发送的上一确认报文中的第二指示符的值不同,以表示所述第二数据报文已丢失。
19.如权利要求18所述的数据接收设备,其特征在于,所述处理单元通过所述发送单元发送所述第一确认报文之后且确定丢失下一数据报文之前通过所述发送单元发送的其它确认报文中的第二指示符的值与所述第一确认报文中的第二指示符的值相同;所述处理单元通过所述发送单元发送所述第二确认报文之后且确定丢失下一数据报文之前通过所述发送单元发送的其它确认报文中的第二指示符的值与所述第二确认报文中的第二指示符的值相同。
20.如权利要求18或19所述的数据接收设备,其特征在于,所述第一数据报文具体为所述处理单元在最近一次修改第二指示符的值后通过所述接收单元接收到的第一个携带的第一指示符的值和通过所述接收单元从所述数据发送设备接收的上一数据报文中的第一指示符的值不同的数据报文。
21.如权利要求14-20任一所述的数据接收设备,其特征在于,所述第二指示符的长度为1比特,所述第二指示符的值为0或1。
22.一种数据发送设备,其特征在于,所述数据发送设备和数据接收设备之间通过基于可靠传输协议建立的连接进行通信,所述数据发送设备通过所述连接向所述数据接收设备发送的数据报文携带第一指示符的值,所述数据发送设备通过所述连接接收的所述数据接收设备发送的确认报文携带第二指示符的值;所述数据发送设备包括:发送单元、接收单元和处理单元;
所述处理单元,用于在确定通过所述发送单元向所述数据接收设备发送的第一数据报文丢失时,通过所述发送单元首次重传所述第一数据报文,所述首次重传的第一数据报文中的第一指示符的值与所述处理单元通过所述发送单元向所述数据接收设备发送的上一数据报文中的第一指示符的值不同,所述处理单元通过所述发送单元首次重传所述第一数据报文后且通过所述发送单元向所述数据接收设备发送下一重传报文前发送的其它数据报文中的第一指示符的值与所述首次重传的第一数据报文中的第一指示符的值相同,所述首次重传的第一数据报文和所述其它数据报文中的第一指示符的值与所述上一数据报文中的第一指示符的值的不同用于表示所述数据发送设备向所述数据接收设备发送了一个重传报文;
所述处理单元,还用于通过所述接收单元接收第一确认报文,所述第一确认报文的确认号为所述第一数据报文的序列号,并用于在确定所述第一确认报文中的第二指示符的值与通过所述接收单元从所述数据接收设备接收的上一确认报文中的第二指示符的值不同时,根据所述第一确认报文的确认号再次通过所述接收单元重传所述第一数据报文。
23.如权利要求22所述的数据发送设备,其特征在于,所述第一确认报文为所述处理单元在第一时间之后通过所述接收单元接收的第一个携带的第二指示符的值与通过所述接收单元从所述数据接收设备接收的上一确认报文中的第二指示符的值不同的确认报文,所述第一时间为通过所述发送单元首次重传所述第一数据报文的时间与a*RTT的和,其中,0<a<1,RTT为所述数据发送设备和所述数据接收设备之间的往返时延。
24.如权利要求22或23所述的数据发送设备,其特征在于,所述处理单元确定通过所述发送单元向所述数据接收设备发送的第一数据报文丢失,具体包括:用于通过所述接收单元接收第二确认报文,所述第二确认报文的确认号为所述第一数据报文的序列号;并用于在确定所述第二确认报文中的第二指示符的值与通过所述接收单元从所述数据接收设备接收的上一确认报文中的第二指示符的值不同时,确定所述第二确认报文的确认号对应的所述第一数据报文丢失。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711451071.3A CN109981385B (zh) | 2017-12-27 | 2017-12-27 | 一种实现丢包检测的方法、装置和系统 |
PCT/CN2018/123378 WO2019128964A1 (zh) | 2017-12-27 | 2018-12-25 | 一种实现丢包检测的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711451071.3A CN109981385B (zh) | 2017-12-27 | 2017-12-27 | 一种实现丢包检测的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109981385A true CN109981385A (zh) | 2019-07-05 |
CN109981385B CN109981385B (zh) | 2022-10-28 |
Family
ID=67066599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711451071.3A Active CN109981385B (zh) | 2017-12-27 | 2017-12-27 | 一种实现丢包检测的方法、装置和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109981385B (zh) |
WO (1) | WO2019128964A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112311725A (zh) * | 2019-07-26 | 2021-02-02 | 华为技术有限公司 | 一种数据处理方法、装置及终端 |
CN112688876A (zh) * | 2020-12-18 | 2021-04-20 | 北京华环电子股份有限公司 | 一种tcp拥塞快速恢复的方法 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及系统 |
CN117579233A (zh) * | 2024-01-15 | 2024-02-20 | 杭州优云科技股份有限公司 | 一种报文重传方法及装置 |
US12126702B2 (en) | 2019-07-26 | 2024-10-22 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and terminal |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113852445B (zh) * | 2021-08-27 | 2023-06-16 | 山东云海国创云计算装备产业创新中心有限公司 | 一种提高数据传输可靠性的方法、系统、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090129309A1 (en) * | 2007-11-19 | 2009-05-21 | Pascal Thubert | Retransmitting lost packet with subsequent received packet |
CN101729197A (zh) * | 2008-10-14 | 2010-06-09 | 华为技术有限公司 | 一种丢包率检测方法、装置及系统 |
CN104780119A (zh) * | 2015-04-28 | 2015-07-15 | 重庆大学 | 一种基于scps-tp的丢包定位及检测方法 |
CN106656431A (zh) * | 2015-09-21 | 2017-05-10 | 华为技术有限公司 | 一种报文传输方法及用户设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9306853B2 (en) * | 2006-07-06 | 2016-04-05 | Alcatel Lucent | Maintaining quality of service for multi-media packet data services in a transport network |
KR100772528B1 (ko) * | 2006-09-29 | 2007-11-01 | 한국전자통신연구원 | 유/무선 네트워크에서 효율적인 패킷 재전송 방법 및 장치 |
CN105634776B (zh) * | 2014-10-31 | 2020-01-31 | 华为技术有限公司 | 一种确定报文转发接口的方法及设备 |
CN106788911A (zh) * | 2015-11-25 | 2017-05-31 | 华为技术有限公司 | 一种报文重传的方法和装置 |
-
2017
- 2017-12-27 CN CN201711451071.3A patent/CN109981385B/zh active Active
-
2018
- 2018-12-25 WO PCT/CN2018/123378 patent/WO2019128964A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090129309A1 (en) * | 2007-11-19 | 2009-05-21 | Pascal Thubert | Retransmitting lost packet with subsequent received packet |
CN101729197A (zh) * | 2008-10-14 | 2010-06-09 | 华为技术有限公司 | 一种丢包率检测方法、装置及系统 |
CN104780119A (zh) * | 2015-04-28 | 2015-07-15 | 重庆大学 | 一种基于scps-tp的丢包定位及检测方法 |
CN106656431A (zh) * | 2015-09-21 | 2017-05-10 | 华为技术有限公司 | 一种报文传输方法及用户设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112311725A (zh) * | 2019-07-26 | 2021-02-02 | 华为技术有限公司 | 一种数据处理方法、装置及终端 |
CN112311725B (zh) * | 2019-07-26 | 2022-01-11 | 华为技术有限公司 | 一种数据处理方法、装置及终端 |
US12126702B2 (en) | 2019-07-26 | 2024-10-22 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and terminal |
CN112688876A (zh) * | 2020-12-18 | 2021-04-20 | 北京华环电子股份有限公司 | 一种tcp拥塞快速恢复的方法 |
CN112688876B (zh) * | 2020-12-18 | 2022-10-14 | 北京华环电子股份有限公司 | 一种tcp拥塞快速恢复的方法 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及系统 |
CN113992306B (zh) * | 2021-09-26 | 2022-06-24 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及系统 |
CN117579233A (zh) * | 2024-01-15 | 2024-02-20 | 杭州优云科技股份有限公司 | 一种报文重传方法及装置 |
CN117579233B (zh) * | 2024-01-15 | 2024-04-23 | 杭州优云科技股份有限公司 | 一种报文重传方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019128964A1 (zh) | 2019-07-04 |
CN109981385B (zh) | 2022-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934340B2 (en) | Multi-path RDMA transmission | |
CN109981385A (zh) | 一种实现丢包检测的方法、装置和系统 | |
CN108494782B (zh) | 一种基于udp的数据传输方法、终端设备及存储介质 | |
US9379852B2 (en) | Packet recovery method, communication system, information processing device, and program | |
CN106612284B (zh) | 一种流数据的传输方法和装置 | |
CN109327288A (zh) | 数据传输加速方法、装置及系统 | |
US9007905B2 (en) | System to improve an Ethernet network | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
WO2011046056A1 (ja) | パケット通信の伝送制御方法及びパケット通信システム | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
CN108322836A (zh) | 一种数据传输的方法及装置 | |
CN106506124A (zh) | 重传报文确定方法及装置 | |
CN111404872A (zh) | 一种报文处理方法、装置及系统 | |
CN102761403B (zh) | 探测tcp丢包的方法、装置及tcp协议栈的探测端 | |
CN108574644A (zh) | 一种tcp连接恢复方法、装置、电子设备及存储介质 | |
CN108234089B (zh) | 用于低时延通信的方法和系统 | |
JP7067544B2 (ja) | 通信システム、通信装置、方法およびプログラム | |
CN101695067B (zh) | 基于tcp的数据处理方法、装置、数字电视接收终端和系统 | |
CN114968876B (zh) | 数据通信方法、系统、电子装置和存储介质 | |
CN114039702B (zh) | 数据传输方法、装置、设备和介质 | |
WO2018138672A1 (en) | Communication protocol packet retransmission | |
CN104243107A (zh) | 数据传输方法、装置、终端、服务器及系统 | |
US20240250889A1 (en) | Device and method for achieving improved network speed test result by preventing transmission control protocol packets from being re-transmitted | |
Fang et al. | Design and implementation of embedded rudp | |
WO2022262944A1 (en) | Method and sending device for transmitting data packets of a data file over a network connection |
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 |