電腦網路與連結技術第三章 鏈路層 上一頁    下一頁

3-6  自動重複請求

內容:

自動重複請求』(Automatic Repeat reQuest, ARQ)表示兩個通訊實體之間有資料流動時,接收端發現訊框已發生錯誤,它要如何告訴傳送端?傳送端應採何種方法重新傳送(re-transmit)?我們上一節已介紹過錯誤偵出的方法,這一節我們將介紹發生錯誤之後,如何重送的方法。一般通訊協定自動重複請求的機制有下列三種:

    • 停止與等待 ARQStop-and-Wait Automatic Repeat reQuest

    • 退後N ARQGo-Back-N Automatic Repeat reQuest

    • 選擇性重複 ARQSelect-Repeat Automatic Repeat reQuest

3-6-1停止與等待自動重複請求

停止與等待 ARQ』(Stop-and-Wait ARQ)是建構在停止與等待的流量控制技術上。如圖3-9 所示,傳送端送出一個訊框後,便需等待接收端回應確認訊號(Acknowledge),在接收端未回答訊號前,傳送端不會再傳送訊框。

停止與等待之ARQ有兩種錯誤情況:

(1) 傳送之訊框受損。

接收端利用錯誤偵測技術偵出錯誤發生,放棄該訊框並回應一個負確認訊號(Non-acknowledge, NAK)給傳送端,這時候傳送端必須有能力再重送同樣的訊框。為了克服這個問題,傳送端必須有一個緩衝器保留訊框複本,訊框傳送出去後一直到收到確認訊號才可將複本拋棄,否則複本將會被重新傳送。

(2) 回應之確認訊號(ACK)受損。

接收端收到訊框並判斷訊框正確後,回應確認訊號。但確認訊號卻在傳送中受損。傳送端本身在訊框傳送出去後便開始計時,如計時器的時間已逾時(Time out)未收到確認或不確認訊號(NAK),則會認為該訊框已遺失,而重送該訊框。又可能回應訊號在途中受損,同樣的訊框也會被再度傳送。在這種情況下,接收端必須有能力去判斷是否重複接收訊框。為了解決這個問題,我們將訊框編號以 0 1 交替使用,第一次為訊框 0、第二次是訊框 1、再下一個是訊框 0。接收端回應確認訊號也以 ACK0ACK1 交替使用。和滑動視窗控制相同,ACK0 作為編號為 1之訊框的接收確認訊息,表示接收端已準備接收編號為 0 的訊框。

由圖 3-9 可了解停止與等待之ARQ,通訊中的雙方大部分時間都在等待對方回應或傳送資料。對於比較遠的通訊便不適合,因為傳輸延遲時間愈久,等待的時間就愈久。然而的操作方法簡單、且只需一個緩衝器的特性,卻是其他方法所不能及,因此使用於近距離傳輸尤佳。

3-6-2 退後-N自動重複請求

退後-N ARQ』(Go-back-N ARQ)是針對流量控制中的滑動視窗法所設計。在滑動視窗法中,傳送端可以連續傳送多筆訊框,每一筆訊框上都有編號。接收端回應要求希望接收第幾號訊框,表示該號數以前的訊框都已接收正常並確認之。退後-N的設計是傳送端連續傳送多筆訊框後,接收端只回應正確收到第幾筆訊框,以後的訊框表示負確認。負確認以後的訊框都必須重新傳送,表示退後到首個不正確傳送的訊框,將該處以後的訊框全部重送,不管其中訊框是否傳送正常。接收端在偵出錯誤訊框後,便將以後的訊框丟棄,等待對方再重送。

如圖 3-19 所示,傳送端連續發送 6 個訊框(編號012345)之後,接收到回應訊框 2 的負確認(NAK 2),這時候接收端就將編號 2 以後的訊框全部丟棄(含 345)。傳送端也退後到自編號 2 以後的訊框都全部重新傳送。因此,退後-N ARQ 較不需要大量的緩衝器來儲存未按順序到達的訊框,只要儲存連續的正確訊框即可。

3-19 後退-N ARQ 之運作程序

3-6-3 選擇重送自動重複請求

雖然退後-N ARQ可以應用在滑動視窗法的錯誤控制、也可節省大量的緩衝器空間,但目前記憶體價格便宜,一般網路卡上都裝設有大量的緩衝器,記憶體空間已不是大問題。加上目前網路傳輸速率較快,也許會一次傳送大量的連續訊框。如果其中某一訊框發生錯誤,就拋棄該訊框以後的連續訊框,這對傳輸效率來講太不划算。『選擇重送 ARQ』(Select-Repeat ARQ就是針對這個缺點設計,在連續訊框中有某些訊框發生錯誤,只要針對錯誤的訊框重送就好,不要全部重送,這對整個傳輸效率來講會提昇許多。

如圖 3-20 所示,訊框編號 2 發生錯誤,只要重送該訊框即可。但選擇重送方法,在傳送端必須保留更多的訊框複本,一直到對方有回應連續訊框都正常接收,才可拋棄訊框複本。又在接收端方面處理運作也較複雜,接收到的訊框也許會不按照訊框編號順序,必須將訊框依照順序排列後,再傳送給上層通訊軟體。接收端方面也需要有大量緩衝器,而且緩衝器溢流(overflow)的情況也非常容易發生。因此採用選擇重送的滑動視窗法時,必須有能力處理這個問題。

一般各個層次的通訊軟體都有流量控制,不管採用何種錯誤檢出方法,大部分都還是採用選擇重送 ARQ 機制。為了預防緩衝器溢流的問題,在傳輸封包的控制區塊裡有一個視窗(window)欄位(如,TCP 封包),接收端利用這個欄位告訴傳送端還剩下幾個緩衝器可以傳送封包。

如果接收端回應訊號裡 window = 0,表示緩衝器已滿,請暫停傳送封包。在鏈路層方面,在訊框的控制欄位也有一個 P/F 位元(如 LLC 封包),接收端回應傳送端時,如果 P/F = P 表示還有空閒緩衝器可以存放,可再傳送訊框;如果 P/F = F 時,表示緩衝器已滿,請暫停傳送訊框。

3-20 選擇重送 ARQ 之運作程序

翻轉工作室:粘添壽

 

電腦網路與連結技術:

 

 

翻轉電子書系列: