資料連結層

自動重送請求(automatic repeat request)

把一組電話號碼念給朋友聽,請他覆誦一遍。如果他念對了,你就往下走;如果他念錯了,或一直不出聲,你就再念一次。這個簡單的循環——確認通過的、重複沒通過的——正是在不可靠連結上做到可靠傳遞的核心。自動重送請求(ARQ)就是這一類用「確認」與「重送」打造出可靠性的協定。

ARQ 仰賴三個一起運作的機制。第一,接收方對它正確收到的資料(錯誤檢查通過的訊框)送回一個確認,也就是 ACK。第二,發送方在送出時啟動一個計時器;若 ACK 在計時器逾時前沒到,發送方就假設那個訊框遺失或損壞,並重送它。第三,序號為每個訊框貼上標籤,讓接收方能分辨新訊框與重複的重送訊框,並把次序排回來。這三者合起來,把會掉東西的傳遞變成可靠、依序的傳遞,代價是多出來的流量與等待。

ARQ 有三種經典口味,以簡單度換取效率:停止等待送出一個訊框後就等它的 ACK;後退 N 同時讓好幾個訊框在途中,但一旦遺失,就重送那個訊框以及它之後的全部;選擇性重送也同時讓好幾個在途中,但只重送那些確實遺失的特定訊框。和順向錯誤更正相比,誠實的對照是:ARQ 只在真的出錯時才用頻寬,但每次復原都要付一個往返延遲,這使它不適合延遲很長或單向的連結——在那裡你付不起「再要一次」。

發送方送出第 7 號訊框並啟動計時器。第 7 號訊框在途中損壞,所以沒有 ACK 回來。計時器一逾時,發送方就自動重送第 7 號訊框;這次它乾淨地到達,接收方對它送出 ACK,對話便接著進入第 8 號訊框。

ACK 加計時器加序號:可靠傳遞的三個齒輪。

ARQ 只在發生錯誤時才復原,但每次復原都要付一個往返——所以它不適合延遲很長或單向的連結,那裡偏好用順向錯誤更正。另外:遺失的 ACK 看起來和遺失的訊框一模一樣,所以重送可能造成重複,這正是序號不可或缺的原因。

又称
ARQ自動重傳請求