tcp快速恢復演算法在接收到3個"重複"ack後會產生會執行
演算法流程如下:
收到第3個重複的ack時,將ssthresh設定為當前cwnd的一半。
設定cwnd=ssthresh+3
重傳丟失的報文段
每收到乙個重複的ack,cwnd+1
確認新資料的ack到達時,設定cwnd=ssthresh。
思考:1) 為何第二步操作的cwnd需要+3
2)為何第4步每次收到重複的ack,cwnd會加一
3)為何新資料的ack到達時,設定cwnd=ssthresh
理解:收到3個重複的ack意味著網路很有可能沒有阻塞。比如有報文段1,2,3,4 重複收到報文段1的序號,那麼意味著實際上2,3,4都是到達了對方,如果此時只將cwnd減半,那麼很有可能未確認的報文數量是要大於或接近cwnd的,此時資料幾乎不傳送,而當新的ack達到時,滑動視窗右滑,又可能造成大量的資料同時傳送出去。既然有3個重複的ack,那麼至少有3個包是離開了網路的,我們就可以透支給cwnd+3,以後每當收到乙個重複的ack,就意味著乙個包離開網路,我們就可以給cwnd+1。而當新的ack到達時,如果不把cwnd還原,很有可能會傳送大量的資料出去,所以最好的辦法是將透支的大小都給還回來
TCP快速重傳和快速恢復
當tcp傳送乙個分組時會設定乙個定時器,如果在規定的實際間隔內沒有收到ack分組,那麼則重新傳輸該分組,但是 如果tcp收到三個連續的ack分組,此時不管是否過超時間隔則重傳該分組,具體步驟如下 1.將慢啟動閾值ssthresh設為擁塞視窗 cwnd 可理解為傳送資料報大小 的一半 2.對於連續三個...
tcp擁塞控制之快速恢復
具體來說快速恢復的主要步驟是 1.當收到3個重複ack時,把ssthresh設定為cwnd的一半,把cwnd設定為ssthresh的值加3,然後重傳丟失的報文段,加3的原因是因為收到3個重複的ack,表明有3個 老 的資料報離開了網路。2.再收到重複的ack時,擁塞視窗增加1。3.當收到新的資料報的...
TCP快速恢復演算法PRR
prr演算法 proportional rate reduction 決定在丟包恢復 loss recovery 期間,對應於每個ack報文,可傳送的報文數量。目的是 1 快速平穩的從loss中恢復 2 恢復之後擁塞視窗收斂與ssthresh。主要是為了解決linux核心之前採用的恢復演算法rate...