選擇重傳ARQ

選擇重傳ARQ 是一個自動重傳請求 （ ARQ ） 的具體實例 。 它可以用作一個消息單元傳送和確認的協議 。 當用作傳送消息單元的協議時 ， 發送進程根據一個指定大小的 窗口持續發送若干幀 ， 即使發送過程中丟失幀 ， 也會繼續發送 。 和 Go - back - N ARQ不一樣 ， 接收進程在出錯後還是繼續接收和確認幀 。 這是 滑動窗口協議 的發送和接收窗口大小大於1的一般情況 。 接收進程記錄它沒有收到的最早的幀的序列號 ， 併發送ACK時使用這個序列號 。 如果一個發送的幀沒有到達接收方 ， 發送方繼續發送後面的幀 ， 直到它填滿發送窗口 。 接收方持續用接收的幀填充它的接收窗口 ， 並且每次回覆一個帶有序列號的ACK幀 。 一旦發送窗口所有幀都發送了 ， 發送方重新發送的幀號與ACK對應的幀 ， 然後繼續 。 發送和接收窗戶的大小必須是相同的 ， 而且最大取值最大序列號的一半 （ 序列號是假設編號從0到 n -1 ） ， 爲了當所有數據包都丟失時避免出錯 。 假設所有的ACK都丟失了 ， 如果接收窗口大於最大序列號的一半 ， 一些甚至可能是所有的超時重傳的幀 ， 都是不能被識別的重複發送 。 在每個發送的幀得到確認後 ， 發送方移動發送窗口 。 接收窗口的尺寸不能超過序號範圍的1 / 2 ， 否則可能造成幀的重疊 。 另外 ， 發送窗口的尺寸一般和接收窗口的尺寸相同 ， 發送端爲每一個發送緩存設置一個定時計數器 ， 定時器一旦超時 ， 相應輸出緩存區中的幀就被重發 。 Category: 邏輯鏈路控制 Category: 網絡協議