计算机网络(十一)-数据链路层-流量控制
一.流量控制
1.1 較高的發送速度和較低的接收能力的不匹配,因此流量控制也是數據鏈路層的一項重要工作。
1.2 數據鏈路層的流量控制是點對點的,而傳輸層的流量控制是端到端的。
1.3 數據鏈路層流量控制手段:接收方收不下就不回復確認。
傳輸層流量控制手段:接收端給發送端一個窗口公告。
1.4 流量控制的方法
- 停止-等待協議:每發完一個幀就停止發送,等待對方的確認,在收到確認后再發送下一幀。發送窗口大小為1,接收窗口大小為1(滑動窗口的特例)。
- 滑動窗口協議(窗口大小固定)
-后退N幀協議(GBN):發送窗口大小大于1,接收窗口大小為1;
-選擇重傳協議(SR):發送窗口大小大于1,接收窗口大小大于1;
1.5.可靠傳輸、滑動窗口、流量控制區別
- 可靠傳輸:發送端發送,接收端就接收。
- 流量控制:控制發送速率,使接收方有足夠的緩沖空間來接收每一幀。
- 滑動窗口解決:
-流量控制:收不下數據,就不發送確認幀。
-可靠傳輸:發送方自動重傳。
二.停止-等待協議
2.1 數據幀丟失或檢測到幀出錯
- 超時計時器:每次發送一個幀就啟動一個計時器。
- 超時計時器設置的重傳時間應當比幀傳輸的平均RTT更長。
- 超時重傳:發送完一個幀后,還需要保存該幀的一個副本,以備超時重傳。
- 數據幀和確認幀必須編號。根據編號可以判斷是否重復。
2.2 確認幀丟失
2.3 確認幀遲到(ACK遲到)
2.4 該協議信道利用率較低
- 發送方在一個發送周期內,有效的發送數據所需的時間占整個發送周期的比率。
2.5 停等協議的弊端
信道利用率低,可以采用流水線技術,提高利用率。
- 必須增加序號范圍;
- 發送發需要緩存多個分組。
三. 后退N幀協議
3.1 GBN發送方需要響應的三件事
- 上層的調用:
上層要發送數據時,發送方先檢查發送窗口是否已滿,如果未滿,則產生一個幀并將其發送;如果窗口已滿,發送發只需將數據返回給上層,暗示上層窗口已滿。上層等一會再發送。(實際中,發送發可以緩存這些數據,窗口不滿時在發送幀)。 - 收到了一個ACK:
GBN協議中,對n號幀的確認采用累積確認的方式,標明接收方已經收到n號幀和它之前的全部幀。以最大序號確認為準,則之前的不管是否發送確認,都表明已經確認收到了。 - 超時事件:
協議的名字為后退N幀/回退N幀,來源于出現丟失和延長幀時發送方的行為。就像在停等協議中一樣,定時器將再次用于恢復數據幀或確認幀的丟失。如果出現超時,發送方重傳所有已發送但未被確認的幀。
3.2 GBN 接收方要做的事
- 如果正確收到n號幀,并且按序,那么接收方為n幀發送一個確認ACK,并將該幀中的數據部分交付給上層。
- 其余情況都丟掉,并為最近按序接收的幀重新發送ACK。接收方無需緩存任何失序幀,只要維護一個信息exepectedseqnum(下一個按序接收的幀序號)。
3.3 滑動窗口長度
若采用n個比特對幀編號,那么發送窗口的尺寸W1應滿足:1<=W1<=2n-1。因為發送窗口尺寸過大,就會使得接收方無法區分新幀和舊幀。
3.4 GBN協議重點
- 累積確認(也稱捎帶確認)。
- 接收方只按序接受幀,不按序無情丟棄。
- 確認序列號最大的、按序到達的幀。
- 發送窗口最大為2n-1,接收窗口大小為1。
3.5 GBN 協議性能分析
- 提高了信道利用率;
- 在重傳時必須把原來已經正確傳送的數據幀重傳,使傳遞效率降低。
四.選擇重傳協議SR
4.1 只重傳出錯幀:設置單個確認(逐一確認幀),同時加大接收窗口,設置接收緩存,緩存亂序到達的幀。
4.2 選擇重傳協議中的滑動窗口
4.3 SR必須響應的三件事
-
上層調用
從上層收到數據后,SR發送方檢查下一個可用于該幀的序號,如果序號位于發送窗口內,則發送數據幀;否則就像GBN一樣,要么將數據緩存,要么返回給上層之后再傳輸。 -
收到了一個ACK
如果收到ACK,加入該幀序號在窗口內,則SR發送方將那個被確認的幀標記為已接收。如果該幀序號是窗口的下界(最左邊第一個窗口對應的序號),則窗口向前移動到具有最小序號的未確認幀處。如果窗口移動了并且有序號在窗口內的未發送幀,則發送這些幀。
-
超時事件
每個幀都有自己的定時器,一個超時事件發生后只重傳一個幀。
4.4 SR接收方要做的事
SR接收方將確認一個正確接收的幀而不管其是否按序。失序的幀將被緩存,并返回給發送方一個該幀的確認幀,直到所有幀(序號更小的幀)皆被收到為止,這時才可以將一批幀按序交付給上層,然后向前移動滑動窗口。
4.5 運行中的SR
假設接收窗口和發送窗口大小為4.
4.6 滑動窗口長度
- 如何區分新舊幀:
- 發送窗口等于接收窗口
- W發送窗口max=W接收窗口max=2n-1 n為窗口長度可以用幾位二進制編碼的二進制位數。
4.7 SR協議重點
- 對數據幀逐一確認,收到一個確認一個;
- 只重傳出錯幀
- 接收方有緩存
- W發送窗口max=W接收窗口max=2n-1
總結
以上是生活随笔為你收集整理的计算机网络(十一)-数据链路层-流量控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【操作系统复习】中断和异常
- 下一篇: 流式处理和批处理的区别