1. 程式人生 > >TCP 可靠傳輸的工作原理

TCP 可靠傳輸的工作原理

轉載地址:https://my.oschina.net/xinxingegeya/blog/485233

感謝原作者

TCP 可靠傳輸的工作原理

ARQ(Automatic Repeat-reQuest)(自動重傳請求)

  • 停止等待ARQ協議

  • 連續ARQ協議

 

停止等待ARQ協議

全雙工通訊的雙發既是傳送方也是接收方。下面為了討論問題的方便,我們僅考慮A傳送資料而B接受資料併發送確認。因此A就做傳送方,B叫做接收方。因為這裡是討論可靠傳輸的原理,因此把傳送的資料單元都稱為分組,而並不考慮資料在哪一層次上傳送的。停止等待就是每傳送完一個分組就停止傳送,等待對方的確認。

在收到確認後在傳送下一個分組。

1.無差錯情況

2.出現差錯情況值超時重傳

超時自動重傳分組

  • 在傳送完一個分組後,必須暫時保留已傳送的分組的副本。

  • 分組和確認分組都必須進行編號。

  • 超時計時器的重傳時間應當比資料在分組傳輸的平均往返時間更長一些。

 

3.確認丟失和確認遲到

分組確認

使用上述的重傳和確認機制,我們可以在不可靠的傳輸網路上實現可靠的通訊。

重傳和確認機制

像上述這種可靠傳輸協議常稱為自動重傳請求ARQ (Automatic Repeat reQuest),ARQ 表明重傳的請求是自動進行的。接收方不需要請求傳送方重傳某個出錯的分組 。

 

流水線傳輸

  • 傳送方可連續傳送多個分組,不必每發完一個分組就停頓下來等待對方的確認。

  • 由於通道上一直有資料不間斷地傳送,這種傳輸方式可獲得很高的通道利用率。 

當使用流水線傳輸時,就要使用下面介紹的連續ARQ協議和滑動視窗協議。

 

連續 ARQ 協議 

下圖表示傳送方維持的傳送視窗,他的意義是:位於傳送視窗內的5個分組都可以連續傳送出去,而不需 要等待對方的確認。這樣通道利用率就提高了。

傳送視窗是5 

連續ARQ協議規定,傳送方每接收到一個確認,就把傳送視窗向前滑動一個分組的位置。下圖表示傳送方收到了第一個分組的確認,於是把傳送視窗向前移動一個分組的位置。

如果原來已經發送了前5個分組,那麼現在就可以傳送視窗內的第六個分組。

接收方一般都採用累積確認的方式。這就是說接收方不必對收到的分組逐個傳送確認,而是可以在幾個分組後,對按序到達的最後一個分組傳送確認,這樣就表示:到這個分組為止的所有分組都已經正確接收到了。

 

累積確認

  • 接收方一般採用累積確認的方式。即不必對收到的分組逐個傳送確認,而是對按序到達的最後一個分組傳送確認 ,這樣就表示:到這個分組為止的所有分組都已正確收到了。

  • 累積確認有的優點是:容易實現,即使確認丟失也不必重傳。缺點是:不能向傳送方反映出接收方已經正確收到的所有分組的資訊。

 

Go-back-N(回退 N)

  • 如果傳送方傳送了前 5 個分組,而中間的第 3 個分組丟失了。這時接收方只能對前兩個分組發出確認。傳送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。

  • 這就叫做 Go-back-N(回退 N),表示需要再退回來重傳已傳送過的 N 個分組。

  • 可見當通訊線路質量不好時,連續 ARQ 協議會帶來負面的影響。