TCP的超時與重傳

2021-09-08 00:04:01 字數 816 閱讀 1342

tcp提供可靠的運輸層。它使用的方法之一就是確認從另一端收到的資料。但資料和確認都有可能會丟失。tcp通過在傳送時設定乙個定時器來解決這種問題。如果當定時器溢位時還沒有收到確認,它就重傳該資料。對任何實現而言,關鍵之處就在於超時和重傳的策略,即怎樣決定超時間隔和如何確定重傳的頻率。

首先觀察tcp所使用的重傳機制,我們將建立乙個連線,傳送一些分組來證明一切正常,然後拔掉電纜,傳送更多的資料,再觀察tcp的行為。

下圖表示的是tcpdump的輸出結果(已經去掉了bsdi設定的服務型別資訊)。

第1、2和3行表示正常的tcp連線建立的過程,第4行是「hello, world」(1 2個字元加上回車和換行)的傳輸過程,第5行是其確認。接著我們從svr4拔掉了乙太網電纜,第6行表示"and hi"將被傳送。第7 ~ 18行是這個報文段的12次重傳過程,而第1 9行則是傳送方的tcp最終放棄並傳送乙個復位訊號的過程。

現在檢查連續重傳之間不同的時間差,它們取整後分別為 1、3、6、12、24、48和多個6 4秒。在本章的後面,我們將看到當第一次傳送後所設定的超時時間實際上為 1.5秒,此後該時間在每次重傳時增加1倍並直至64秒。這個倍乘關係被稱為"指數退避 (exponential backoff)"

首次分組傳輸(第6行,24 . 4 80秒)與復位訊號傳輸(第19行,566.488秒)之間的時間差約為9分鐘,該時間在目前的tcp實現中是不可變的。

TCP超時與重傳

對每個連線,tcp管理4個不同的定時器。1.重傳定時器適用於當希望收到另一端的確認。2.堅持 persist 定時器使視窗大小資訊保持不斷流動,即使另一端關閉了其接收視窗。3.保活 keepalive 定時器可檢測到乙個空閒連線的另一端何時崩潰或重啟。4.2msl定時器測量乙個連線處於time wa...

TCP的超時與重傳

原理 client server傳送某個資料以後就開啟乙個計時器,在一定時間內如果沒有得到傳送資料報的ack報文,那麼就重新傳送資料,知道傳送成功為止 超時和重傳要做到的幾點 擁塞視窗記做cwnd,慢啟動門限記做ssthresh 1.rtt 發包往返時間測量 首先tcp必須測量在傳送乙個帶有特別序號...

TCP的超時與重傳

tcp提供可靠的傳輸層,使用的方法就是確認從另一端收到資料,但資料和確認可能會丟失,在傳送時設定乙個定時器解決了此問題,如果當定時器溢位時還沒有收到確認就衝傳資料。對於現實而言,關鍵在於超時和重傳的策略,如何限制超時間隔和重傳頻率。對於每個連線,tcp管理4個不同的定時器 1.重傳定時器,使用於當希...