連續(xù)ARQ協(xié)議入門初解
網(wǎng)絡(luò)中的協(xié)議是多種多樣的。今天我們來介紹一下連續(xù)ARQ協(xié)議。或許很多朋友都沒有聽說過這個協(xié)議。相對TCP IP協(xié)議來說,這個協(xié)議的確偏冷門了一點。但是沒關(guān)系,下面我們就來具體認識一下。
回退n幀(go-back-n)GBN,以及選擇性重傳(selective repeat)ARQ,兩種協(xié)議是滑動窗口技術(shù)與請求重發(fā)技術(shù)的結(jié)合,由于窗口尺寸開到足夠大時,幀在線路上可以連續(xù)地流動,因此又稱其為連續(xù)ARQ協(xié)議。 連續(xù)重發(fā)請求ARQ方案是指發(fā)送方可以連續(xù)發(fā)送一系列信息幀,即不用等前一幀被確認便可繼續(xù)發(fā)送下一幀,效率大大提高。但在這種重發(fā)請求方案中,需要在發(fā)送方設(shè)置一個較大的緩沖存儲空間(稱作重發(fā)表),用以存放若干待確認的信息幀。當(dāng)發(fā)送方收到對某信息幀的確認幀后,便可從重發(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ā)送確認幀來降低發(fā)送端發(fā)送數(shù)據(jù)幀的速率。
關(guān)于連續(xù)ARQ協(xié)議特別要注意的地方就是對出錯幀和不按序到達的幀的處理。
對出錯幀的處理:
CRC檢驗器自動將其丟棄,協(xié)議沒有其他動作。但為了不白白浪費時間,可以規(guī)定,如果一個幀重傳多少次都一直出錯,那么就不要再繼續(xù)重傳下去,而是報告上層軟件,指出通信線路不可用。
對不按序到達的幀的處理(這個幀并無傳輸差錯):
如果接收端沒有數(shù)據(jù)幀要發(fā)送,接收端丟棄這個幀,同時向發(fā)送端重復(fù)發(fā)送已經(jīng)發(fā)送過的最后一個確認幀。
如果接收端有數(shù)據(jù)幀要發(fā)送,接收端可以在下面要發(fā)送的自己的數(shù)據(jù)幀中,把確認信息捎帶發(fā)送給對方。這個確認信息就是期望收到對方的某個編號的數(shù)據(jù)幀。
接收端也可以每隔一段時間,向發(fā)送端重復(fù)發(fā)送已經(jīng)發(fā)送過的最后一個確認幀。