連續(xù)ARQ協(xié)議的交付過程
連續(xù)ARQ協(xié)議在使用過程中如何完成滑動窗口和請求重發(fā)呢?下面我們就在它的主要功能方面進(jìn)行一個詳盡的描述。希望大家能夠通過本文的一些內(nèi)容對這個流程以及交付過程有一個了解。
回退n幀(go-back-n)GBN,以及選擇性重傳(selective repeat)ARQ,兩種協(xié)議是滑動窗口技術(shù)與請求重發(fā)技術(shù)的結(jié)合,由于窗口尺寸開到足夠大時,幀在線路上可以連續(xù)地流動,因此又稱其為連續(xù)ARQ協(xié)議。 連續(xù)重發(fā)請求ARQ方案是指發(fā)送方可以連續(xù)發(fā)送一系列信息幀,即不用等前一幀被確認(rèn)便可繼續(xù)發(fā)送下一幀,效率大大提高。但在這種重發(fā)請求方案中,需要在發(fā)送方設(shè)置一個較大的緩沖存儲空間(稱作重發(fā)表),用以存放若干待確認(rèn)的信息幀。
當(dāng)發(fā)送方收到對某信息幀的確認(rèn)幀后,便可從重發(fā)表中將該信息幀刪除。所以,連續(xù)重發(fā)請求ARQ方案的鏈路傳輸效率大大提高,但相應(yīng)地需要更大的緩沖存儲空間。 在這一協(xié)議中,當(dāng)發(fā)送站點發(fā)送完一個數(shù)據(jù)幀后,不是停下來等待應(yīng)答幀,而是可以連續(xù)再發(fā)送若干個數(shù)據(jù)幀。如果在此過程中又收到了接收端發(fā)來的應(yīng)答幀,那么還可以接著發(fā)送數(shù)據(jù)幀。由于減少了等待時間,整個通信的吞吐量就提高了。
連續(xù)ARQ協(xié)議的主要功能可以歸結(jié)為以下兩點:
1.在不可靠的鏈路上實現(xiàn)可靠交付。
這點可從用下面的圖來說明。
不可靠的鏈路上實現(xiàn)可靠交付
因為出錯的幀都被CRC檢驗器悄悄地丟棄了,因此接收端收下的幀都是無傳輸差錯的幀。數(shù)據(jù)鏈路層協(xié)議還保證了收到的幀的順序和發(fā)送端發(fā)送的順序一致,因為序號不對的幀都不接受。因此,數(shù)據(jù)鏈路層的連續(xù)ARQ協(xié)議就在不可靠的鏈路上實現(xiàn)了可靠交付,即發(fā)送端發(fā)送什么,接收端就收到什么。所有的重傳對上面都是透明的。
總之,可靠交付就是:無差錯、無丟失、無重復(fù)、按順序。
2. 支持了流量控制。
在鏈路層流量控制的思想就是:當(dāng)接收端來不及接收時(如緩存空間不夠或CPU忙不過來),就可以通過暫時不發(fā)送確認(rèn)幀來降低發(fā)送端發(fā)送數(shù)據(jù)幀的速率。
關(guān)于連續(xù)ARQ協(xié)議特別要注意的地方就是對出錯幀和不按序到達(dá)的幀的處理。
對出錯幀的處理:
CRC檢驗器自動將其丟棄,協(xié)議沒有其他動作。但為了不白白浪費時間,可以規(guī)定,如果一個幀重傳多少次都一直出錯,那么就不要再繼續(xù)重傳下去,而是報告上層軟件,指出通信線路不可用。
對不按序到達(dá)的幀的處理(這個幀并無傳輸差錯):
如果接收端沒有數(shù)據(jù)幀要發(fā)送,接收端丟棄這個幀,同時向發(fā)送端重復(fù)發(fā)送已經(jīng)發(fā)送過的最后一個確認(rèn)幀。
如果接收端有數(shù)據(jù)幀要發(fā)送,接收端可以在下面要發(fā)送的自己的數(shù)據(jù)幀中,把確認(rèn)信息捎帶發(fā)送給對方。這個確認(rèn)信息就是期望收到對方的某個編號的數(shù)據(jù)幀。
接收端也可以每隔一段時間,向發(fā)送端重復(fù)發(fā)送已經(jīng)發(fā)送過的最后一個確認(rèn)幀。