mirror of
https://github.com/Estom/notes.git
synced 2026-04-14 18:29:48 +08:00
123
This commit is contained in:
@@ -63,7 +63,9 @@ TCP通过ACK到达的情况(即是否到达,到达的速率)来调整拥
|
||||

|
||||
|
||||
快速恢复一般和快速重传一起实现,其算法为:
|
||||
* 当收到第3个重复的ACK时(对于SCTP,有三个SACK都不包含某个报文的确认时。具体规则:1.只有报文TSN小于当前SACK中新被确认的最大TSN的被丢失的报文的丢失计数才会增加,2.如果已经处于快速重传模式,并且当前的SACK会更新累积确认点,则所有丢失的报文的丢失计数都会增加(这一点将保证报文会被尽快快速重传,从而使得尽快退出快速重传模式)。),把ssthresh设置为max (FlightSize / 2, 2*SMSS)(对于SCTP,max(cwnd/2, 4*MTU)),把cwnd设置为ssthresh的值加3个SMSS(对于SCTP,不增加)。然后重传丢失的报文段。因为收到3个重复的ACK表明有三个报文已经离开网络到达了接收断,被且被接收端给接收了。(同时,对于SCTP,还会将当前已经发出的最大的报文序号(TSN)作为退出快速恢复的序列号)
|
||||
* 当收到第3个重复的ACK时(对于SCTP,有三个SACK都不包含某个报文的确认时。具体规则:
|
||||
1. 只有报文TSN小于当前SACK中新被确认的最大TSN的被丢失的报文的丢失计数才会增加,
|
||||
2. 如果已经处于快速重传模式,并且当前的SACK会更新累积确认点,则所有丢失的报文的丢失计数都会增加(这一点将保证报文会被尽快快速重传,从而使得尽快退出快速重传模式)。),把ssthresh设置为max (FlightSize / 2, 2*SMSS)(对于SCTP,max(cwnd/2, 4*MTU)),把cwnd设置为ssthresh的值加3个SMSS(对于SCTP,不增加)。然后重传丢失的报文段。因为收到3个重复的ACK表明有三个报文已经离开网络到达了接收断,被且被接收端给接收了。(同时,对于SCTP,还会将当前已经发出的最大的报文序号(TSN)作为退出快速恢复的序列号)
|
||||
* 收到另外的重复的ACK时,cwnd增加一个MSS。
|
||||
* 当收到确认新数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。此时就重新进入到了第一步丢包时本应进入的拥塞避免。(对于SCTP,如果收到的SACK的累积确认确认了步骤1中的退出快速恢复的序列号,则退出快速恢复)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user