(二十一)運輸層--可靠傳輸的工作原理

可靠傳輸的工作原理

TCP發送的報文段是交給IP層傳送的,但IP層只能提供盡最大努力服務,也就是說,TCP下面的網絡所提供的的是不可靠的傳輸。因此,TCP必須採用適當的措施才能使得兩個運輸層之間的通信變得可靠。

停止等待協議

全雙工通信的雙方既是發送方也是接收方,爲了討論問題的方便,我們僅考慮A發送數據,B接收數據併發送確認。因此A叫做發送方,B叫做接收方。爲討論可靠傳輸的原理,所傳送的數據單元都稱爲分組。

停止等待就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。

無差錯情況

停止等待協議可用下圖來說明,這是最簡單的情況。A發送分組M1,發完就暫停發送,等待B的確認。B收到了M1就向A發送確認。A在收到對M1的確認後,就再發送下一個分組M2。同樣,在收到B對M2的確認後,就發送M3。

出現差錯

如下圖所示:

B接收M1時檢測出了差錯,就丟棄M1,其它什麼也不做(不通知A收到有差錯的報文)。也可能是M1在傳輸過程中丟失了,這時B當然什麼都不知道。在這兩種情況下,B都不會發送任何信息。可靠傳輸協議是這樣設計的:A只要超過了一段時間仍然沒有收到確認,就認爲剛纔發送的分組丟失了,因而重傳前面發送過的分組,這就叫做超時重傳。要實現超時重傳,就要在每發送完一個分組時設置一個超時計時器。如果在超時計時器到期之前收到了對方的確認,就撤銷已設置的超時計時器。注意一下三點:

  • A在發送完一個分組後,必須暫時保留已發送的分組的副本(超時重傳時使用)。只有在收到相應的確認後才能清除保留的分組副本

  • 分組和確認分組都必須進行編號。這樣才能明確是哪一個發送出去的分組收到了確認,而哪一個分組還沒有收到確認

  • 超時計時器設置的重傳時間應當比數據在分組傳輸的平均往返時間更長一些。上圖的虛線表示如果M1正確到達B,同時A也正確收到確認的過程。可見重傳時間應設定爲比平均往返時間更長一些。如果重傳時間設定得很長,那麼通信的效率就會很低。如果重傳時間設定得太短,以致產生了不必要的重傳,就浪費了網絡資源。

確認丟失和確認遲到

下面兩幅圖中,左邊的圖表示確認丟失。B所發送的對M1的確認丟失了。A在設定的超時重傳時間內沒有收到確認,並無法知道是自己發送的分組出錯、丟失,或者是B發送的確認丟失。因此,A在超時計時器到期後就要重傳M1。假定B收到了重傳的分組M1,這時應採取兩個行動:
(1)丟棄這個重複的分組M1,不向上層交付
(2)向A發送確認。不能認爲已經發送過確認就不再發送,因爲A之所以重傳M1,就表示A沒有收到對M1的確認。

右邊的圖表示確認遲到。傳輸過程中沒有出現差錯,但B對分組M1的確認遲到了。A就會收到重複的確認。對重複的確認的處理很簡單:收下後就丟棄。B依然會收到重複的M1,並且同樣要丟棄重複的M1,並重傳確認分組。通常A最終總是可以收到對所有發出的分組的確認。如果A不斷重傳分組但總是收不到確認,就說明通信線路太差,不能進行通信。

信道利用率

停止等待協議的優點是簡單,但缺點是信道利用率太低。

假定A發送分組需要的時間是T1,顯然T1等於分組長度除以數據率。再假定分組正確到達B後,B處理分組的時間可以忽略不計,同時立即發回確認。假定B發送確認分組需要時間T2。如果A處理確認分組的時間也可以忽略不計,那麼A在經過時間(T1 + RTT + T2)後,就可以發送下一個分組,RTT是往返時間。因爲僅僅是在時間T1內才用來傳送有用的數據,因此,信道的利用率可用下式計算:U = T1 / T1 + RTT + T2

當往返時間RTT遠大於分組傳送時間T1時,信道的利用率就會非常低。爲了提高傳輸率,發送方可以不使用低效率的停止等待協議,而是採用流水線傳輸。流水線傳輸就是發送方可連續發送多個分組,不必每發完一個分組就停頓下來等待對方的確認。這樣可使信道上一直有數據不間斷的在傳送。顯然,這種傳輸方式可以獲得很高的信道利用率。

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

連續ARQ協議

滑動窗口協議比較複雜,是TCP協議的精髓所在,這裏先介紹連續ARQ協議的基本概念。

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

連續ARQ協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。如下圖所示,表示發送方收到了對第一個分組的確認,於是把發送窗口向前移動一個分組的位置。如果原來已經發送了前5個分組,那麼現在就可以發送窗口內的第6個分組了。

接收方一般都是採用累積確認的方式。這就是說,接收方不必對收到的分組逐個發送確認,而是在收到幾個分組後,對按序到達的最後一個分組發送確認,表示:到這個分組爲止的所有分組都已正確收到了。累積確認有優點也有缺點。優點是:容易實現,即使確認丟失也不必重傳。缺點是不能向發送方反映出接收方已經正確收到的所有分組的信息。例如,發送方發送了前5個分組,而中間的第三個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,只好把後面的三個分組都再重傳一次。這就叫做Go-back-N(回退N),表示需要再退回來重傳已發送過的N個分組。可見當通信線路質量不好時,連續ARQ協議會帶來負面的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章