TCP的重傳機制

2021-06-02 21:18:52 字數 951 閱讀 5682

重傳機制是tcp 中最重要和最複雜的問題之一。

tcp 每傳送乙個報文段,就對這個報文段設定一次計時器。只要計時器設定的重傳時間到

但還沒有收到確認,就要重傳這一報文段。

由於tcp 的下層是乙個互連網環境,ip 資料報所選擇的路由變化很大。因而傳輸層的往返

時延的方差也很大。

記錄每乙個報文段發出的時間,以及收到相應的確認報文段的時間。這兩個時間之差就是報

文段的往返時延。

將各個報文段的往返時延樣本加權平均,就得出報文段的平均往返時延rtt。

每測量到乙個新的往返時延樣本,就按下式重新計算一次平均往返時延rtt:

平均往返時延rtt =a*(舊的rtt)+(1-a)*(新的往返時延樣本)

在上式中,0=計時器的rto 應略大於上面得出的rtt,

即: rto = b * rtt

這裡b 是個大於1 的係數。

若取b 很接近於1,傳送端可及時地重傳丟失的報文段,因此效率得到提高。

但若報文段並未丟失而僅僅是增加了一點時延,那麼過早地重傳反而會加重網路的負擔。

因此tcp 原先的標準推薦將b 值取為2。

tcp 報文段1 沒有收到確認。重傳(即報文段2)後,收到了確認報文段ack。

如何判定此確認報文段是對原來的報文段1 的確認,還是對重傳的報文段2 的確認?

在計算平均往返時延rtt 時,tcp 不採用重傳報文段的往返時延樣本。

由於避免了二義性的存在,這樣得出的平均往返時延rtt 和重傳時間就較準確。

當網路時延增大時,tcp 忽略了重傳對往返時延的影響,會造成反覆重傳。

報文段每重傳一次,就將重傳時間增大一些:

新的重傳時間=r*(舊的重傳時間)

係數r 的典型值是2 。

當不再發生報文段的重傳時,才根據報文段的往返時延更新平均往返時延rtt 和重傳時間

的數值。

實踐證明,這種策略較為合理。

TCP重傳機制

tcp進行傳輸時,發出去的請求包在規定時間內沒有收到ack,不管是請求包丟失,還是ack包丟失,還是網路延遲,總之,這裡都是需要有個重傳機制的。常見的導致重傳情況有 資料報傳輸途中丟失 接收端的ack確認報文在傳輸途中丟失 接收端異常未響應ack或被接收端丟棄。tcp的重傳機制有兩種 超時重傳和快速...

TCP 的重傳機制

引起 tcp 對報文進行重傳的事件 超時冗餘 ack tcp 為每個報文段設定乙個計時器,當設定的重傳時間到期,而傳送方還未收到確認就重傳報文段。重傳時間 rto 由加權平均往返時間 rrt s 決定,這個rtt s又叫平滑的往返時間,s 就是 smoothed 的縮寫表示 第一次時,這個 r to...

TCP超時重傳機制

2008 06 23 11 00 tcp協議在能夠傳送資料之前就建立起了 連線 要實現這個連線,啟動tcp連線的那一方首先將傳送乙個syn資料報。這只是乙個不包含資料的資料報,然後,開啟syn標記。如果另一方同時在它收到syn標記的埠通話,它將發回乙個syn ack syn和ack標誌位都被開啟,並...