考試範圍:
- 第八章:8.1、8.2(X-ON / X-OFF)、8.3、8.4(GO-BACK-n: SLIDING WINDOW)、8.5(8.4、8.5都很重要喔)
- 第九章:9.1、9.2(很重要喔)、9.3、9.4(到100BaseTX)
- 第十章:10.1(後半部,講Layer 1 2 3)、10.2、10.3(到透明式橋接器)、10.7(階層式繞送到路徑資訊協定)
- 第十一章:11.1、11.2(到DNS)
第八章 流量控制
在電腦網路的世界裡面,傳送訊息必須要有「開始」、「停止」等控制用的訊號,才知道電腦何時可以傳輸檔案、何時要停止傳輸檔案。本章8.2介紹字元導向(僅以bit傳送控制訊號)的簡單控制訊號X-ON/X-OFF,僅用於簡單的小範圍資料控制;8.3的頁框導向更適合應用於網路環境,無限制協定(Unrestricted Protocol)與停止並等待協定(Stop-and-Wait Protocol)是一切應用的基本;而8.4的Go-Back-n(回到n協定)與8.5的Selective Repeat(選擇性重複)傳輸則是更進階的兩種應用。在學習Go-Back-n或是Selective Repeat時,除了他們傳送方式需要記住之外,要特別注意錯誤的處理方式。
8.2 控制訊號 Singaling
用訊號來控制傳輸的方式有分成軟體與硬體:
1. 硬體:DTE(電腦)-DCE(數據機)流量控制
在EIA-232介面當中,用來告知電腦傳送或是接收準備就緒的狀態。這是使用特定的兩條線DTR與DSR來操作的。
2. 軟體:X-ON/X-OFF
軟體的操作則是將控制訊號夾雜在傳送的資料裡面,稱為in-band signaling。
ASCII中定義了兩個特殊的控制字元作為流量控制:DC3→X-OFF、DC1→X-ON
「接收端必須提早傳送X-OFF」:因為網路傳輸之間有時間差,接收端如果等到緩衝區(儲存資料的地方)已經達到極限才送出X-OFF,這麼等X-OFF到達發送端的這段時間內,接收端收到的資料會遺失。接收端在緩衝區達到「臨界點」時傳送X-OFF。
用途:(因為作業有寫過,老師應該不會考)
- 程式凍結:包含X-OFF的程式,會導致螢幕被鎖住
- 螢幕凍結:用X-ON與X-OFF控制超出螢幕大小的資料,以方便瀏覽。
8.3 頁框導向控制
網路中的協定是以頁框傳送的,因此所謂的頁框導向,就是將控制訊號包含在頁框當中傳送。相對於頁框導向,字元導向就是以字元(byte)表示的控制訊號。
無限制協定 Unrestricted Protocol
假定接收者可以不斷地接收資料,這可能是因為
- 緩衝區(Buffer)無限大
- Buffer的資料很快就能處理掉,不會累積
無限制協定的優缺點:
通常用於等速傳輸,也就是影音資料即時傳送。
停止並等待協定 Stop-and-Wait Protocol
步驟:
- 送方:送出封包
- 收方:檢查收到的封包
- 收方:回送確認訊號(acknowledgment)
- 送方:收到確認訊號
- 送方:送出下一個訊號
優點:能檢查錯誤
缺點:
- 如果回送的確認訊號遺失或損壞,導致送方收不到確認訊號,就不會送下一個資料
- 等待的時間效益差
兩種協定的效率計算
簡單來說,無限制協定比較快,停止並等待協定比較慢
8.4、8.5 滑動窗戶協定:Go-Back-n、Selective Repeat(選擇性重複)
滑動窗戶協定是現今網路傳輸的主流模式,特色是在於他的「窗戶(window)」。滑動窗戶協定將送方的資料分成三種類型:
- 窗戶之上:已經傳送、且收到確認訊號
- 窗戶之中:已經傳送、未收到確認訊號。在特定條件下,窗戶中的資料會重送
- 窗戶之下:未傳送的資料
滑動(Sliding):當窗戶中的頁框收到確認之後,便將該頁框移到窗戶之上,再將窗戶之下的頁框移入窗戶之中。因此感覺就像是窗戶不斷地向下移動。
窗戶的大小:
- 窗戶大小無限制→Unrestricted Protocol:全部資料都一口氣傳送
- 窗戶大小為1個頁框→Stop-and-Wait Protocol:傳送一個、確認一個,再傳送下一個頁框
- 居於以上兩種之間的,便是接下來要討論的Go-Back-n與Selective Repeat
頁框格式:
- 來源位址
- 目的位置
- 頁框編號:從0開始,Go-Back-n的上限為2k-1,Selective Repeat為2k-1
- k的意思是頁框編號的長度,k=3 → _ _ _
- 在滑動窗戶協定之下,頁框編號是用循環的方式處理,例如編號假如為0~7,那麼頁框依順序編號則為0 1 2 3...6 7 0 1 2...
- 超過上限的頁框編號方式,在頁框傳送發生錯誤的情況下會造成誤判。
- ACK (acknowledged縮寫):piggybacking(肩負式)確認訊號
- 肩負式:收方將確認訊號夾雜在給送方的頁框當中以節省空間
- 頁框類型:「資料(data)」、「確認訊號(ACK)」或是「錯誤確認訊號(NAK, negative acknowledgment,老師翻成"反確認")」
- 錯誤確認訊號:當某一頁框毀損或遺失時,便送出該頁框編號的NAK
- 資料
- CRC:循環檢查碼,偵錯技術
Go-Back-n特色
- 頁框編號在於0~2k-1之間:在滑動窗戶協定之下,頁框編號是用循環的方式處理,例如編號假如為0~7,那麼頁框依順序編號則為0 1 2 3...6 7 0 1 2...。
- 為什麼最多為2k-1?請參考課本365頁的圖,因為在2k的情況下發生錯誤,會造成誤判。Selective Repeat也可以用同樣的方法,得知上限為2k-1
- 接收方必須按照順序接收資料,如果跳脫順序(收到非預期的頁框編號),則捨棄該收到的頁框,並針對預期的頁框發出NAK,表示頁框接收順序錯誤,必須從預期頁框開始重送。
- 同上,頁框損毀的情況也是
- 跳躍式的發送確認訊號:收方確定(使用CRC)一群頁框是完整之後,則只要傳送收到的最後一個頁框的ACK即可。因為Go-Back-n的處理是照順序,所以最後一個頁框沒問題的話,就表示前面的也是沒問題的。
- 採用肩負式確認
- 未決頁框(outstanding frame)會在緩衝區內
- 倒數計時器:送方的頁框中會夾帶倒數計時器,過期的頁框則需要重送,以避免無止盡的等待。
- Go-Back-n因為是照順序的,所以窗戶內第一個過時的頁框必定是最上面的頁框,如果第一個頁框錯誤,則以下的頁框便得全部重送
- 總結以上,所謂的Go-Back-n,是指「發生錯誤,則回到第n個頁框,重新送出」
- Go-Back-n適合在不容易發生傳輸錯誤的網路中使用,如果傳輸錯誤比例提高,則效率會大打折扣
Selective Repeat:
- 與Go-Back-n最大差別的地方,在於Selective Repeat可以不按照順序接收資料。因此他與Go-Back-n的相異處都是以此為出發點的。
- 收方窗戶(緩衝區):收方的窗戶,將接收到的頁框分成三種:
已確認可處理 |
窗戶:預期收到的頁框
(可以不用按照順序) |
尚未準備接收的頁框
(未出世的) |
- 窗戶內的頁框可不按照順序接收
- 窗戶滑動條件:確認完一個頁框,且該頁框之前的頁框都已經確認完畢的話,則連該頁框之前的所有頁框都移到窗戶之上,而窗戶整個向下移動
- 等待之前的頁框湊齊才將整批頁框確認成可處理。處理是指該頁框已經離開緩衝區,可讓使用者進行操作。
- 保持順序:每當收到不照順序的頁框,則針對預期的頁框送出NAK,盡可能讓收到的頁框能夠保持順序
- 倒數計時器:只重送單一逾時頁框,與Go-Back逾時就要整批重送的方式不同
- 確認訊號只送出確認可處理的整批開頭的頁框:
- 因為Selective Repeat不按照順序,如果只是對最近收到的頁框作ACK,則在該頁框之前的未收到頁框便會造成混亂。
- 這種方法比收到一個頁框就ACK一個更有效率
- 窗戶大小限制:2k-1,是Go-Back-n的一半
隨意地寫,隨意地看吧。
(more...)
Comments