This commit is contained in:
estomm
2021-09-08 23:57:39 +08:00
parent 7711cd7ea7
commit 825343abe6

View File

@@ -63,7 +63,9 @@ TCP通过ACK到达的情况即是否到达到达的速率来调整拥
![](image/TCP拥塞控制-快速恢复.png)
快速恢复一般和快速重传一起实现,其算法为:
* 当收到第3个重复的ACK时对于SCTP有三个SACK都不包含某个报文的确认时。具体规则1.只有报文TSN小于当前SACK中新被确认的最大TSN的被丢失的报文的丢失计数才会增加2.如果已经处于快速重传模式并且当前的SACK会更新累积确认点则所有丢失的报文的丢失计数都会增加这一点将保证报文会被尽快快速重传从而使得尽快退出快速重传模式把ssthresh设置为max (FlightSize / 2, 2*SMSS)对于SCTPmax(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)对于SCTPmax(cwnd/2, 4*MTU)把cwnd设置为ssthresh的值加3个SMSS对于SCTP不增加。然后重传丢失的报文段。因为收到3个重复的ACK表明有三个报文已经离开网络到达了接收断被且被接收端给接收了。同时对于SCTP还会将当前已经发出的最大的报文序号TSN作为退出快速恢复的序列号
* 收到另外的重复的ACK时cwnd增加一个MSS。
* 当收到确认新数据包的ACK时把cwnd设置为第一步中的ssthresh的值。此时就重新进入到了第一步丢包时本应进入的拥塞避免。对于SCTP如果收到的SACK的累积确认确认了步骤1中的退出快速恢复的序列号则退出快速恢复