【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)
文章目錄
- 一. 流量控制
- ① 必要性
- ② 數(shù)據(jù)鏈路層 VS 傳輸層
- ③ 定義
- ④ 方法
- 1)停止等待協(xié)議
- 2)滑動窗口協(xié)議
- 關(guān)系:
- 包括:
- 3)協(xié)議對比
- 二. 停止-等待協(xié)議
- 必要性
- 應(yīng)用情況
- ① 無差錯情況
- ② 有差錯情況
- 1)數(shù)據(jù)幀丟失,或檢測到幀出錯。
- 2)ACK丟失
- 3)ACK遲到
- ③ 性能分析
- 結(jié)論
- 解析圖
- 信道利用率 && 信道吞吐率
- 1)定義
- 2)例題
- 三. 后退N幀協(xié)議(GBN)
- ① GBN的滑動窗口
- ② GBN發(fā)送方要做的三件事
- ③ GBN接收方要做的事
- ④ 運行圖
- ⑤ 滑動窗口長度
- ⑥ GBN重點總結(jié)
- ⑦ 例題
- ⑧ 性能分析
- 四. 選擇重傳協(xié)議(SR)
- ① 滑動窗口
- ② SR發(fā)送方必須響應(yīng)的三件事
- ③ SR接受方要做的事
- ④ 運行圖
- ⑤ 滑動窗口長度
- 公式:WtmaxWtmaxWtmax = WrmaxWrmaxWrmax = 2n-1
- 限制原因:
- ⑥ SR協(xié)議重點 && 例題
- 重點
- 例題
- ⑦ 思維導(dǎo)圖
ppt來源:王道考研B站教程
一. 流量控制
① 必要性
較高的發(fā)送速度和較低的接收能力不匹配的話,會造成傳輸出錯
② 數(shù)據(jù)鏈路層 VS 傳輸層
| 數(shù)據(jù)鏈路層 | 點對點 | 收不下就不回復(fù)確認(rèn) |
| 傳輸層 | 端到端 | 給發(fā)送端一個窗口公告 |
③ 定義
控制發(fā)送速率,使接收方有足夠的緩沖空間來接收每一個幀。
④ 方法
1)停止等待協(xié)議
2)滑動窗口協(xié)議
關(guān)系:
解決了流量控制,以及可靠傳輸(通過發(fā)送方自動重傳)
包括:
- 后退N幀協(xié)議(GBN)
- 選擇重傳協(xié)議(SR)
3)協(xié)議對比
也就是說,其實停等協(xié)議也可以看成是一種滑動窗口協(xié)議。
二. 停止-等待協(xié)議
下簡稱”停等協(xié)議“
必要性
- 底層信道會出現(xiàn)丟包問題。
- 流量控制
應(yīng)用情況
① 無差錯情況
0幀、1幀為編號。ACK為確認(rèn)幀。(acknowledgement frame)
注意:幀編號可以重復(fù)利用,比如此處0,1就是不斷給新幀重復(fù)使用的。
② 有差錯情況
停等協(xié)議的有差錯情況,都是基于超時計時器來進(jìn)行處理的。
讓我們在第一種差錯情況中對超時計時器進(jìn)行更多的介紹。
1)數(shù)據(jù)幀丟失,或檢測到幀出錯。
- 數(shù)據(jù)幀丟失:即接收端并沒有接收到數(shù)據(jù)幀。
- 檢測到幀出錯:接收端接收到了數(shù)據(jù)幀,但是檢測到數(shù)據(jù)幀出錯了。
這兩種都產(chǎn)生一樣的結(jié)果:接收端不返回ACK。
下圖中,感嘆號部分的原因為:
- 保留副本:可能需要重新發(fā)送這個幀(由于之前丟失或出錯)。
- 必須編號:防止重復(fù)。
2)ACK丟失
描述:接收端接收到數(shù)據(jù)了,但是發(fā)送給發(fā)送端的ACK丟失了的情況。
解決流程:
i) 由于沒有回收到ACK,觸發(fā)了超時計時器,發(fā)送端重新發(fā)送當(dāng)前數(shù)據(jù)幀。
ii) 接收端再次收到當(dāng)前數(shù)據(jù)幀,由于我們有編號,于是判斷這是重復(fù)幀,丟棄重復(fù)幀,并且再次傳ACK。
iii) 發(fā)送端接收到ACK,錯誤解決。(當(dāng)然,如果又丟失則繼續(xù)這個流程)
3)ACK遲到
描述:接收端接收到數(shù)據(jù)了,但是ACK遲到了,觸發(fā)了超時計時器的情況。
解決流程:
i) ACK遲到導(dǎo)致觸發(fā)超時計時器,發(fā)送端重傳數(shù)據(jù)幀。
ii) 接收端收到重復(fù)數(shù)據(jù)幀,丟棄重復(fù)幀,并重傳ACK。
iii) 發(fā)送端在某刻終于收到遲到ACK,由于編號重復(fù),丟棄遲到ACK。
③ 性能分析
結(jié)論
簡單,信道利用率太低。
解析圖
可見一個周期中,RTT占了很大的比例。
信道利用率 && 信道吞吐率
1)定義
2)例題
- RTT = 雙向傳播事延 = 2 * 30ms
- 此處TD = L / 4kb/s,TA題干未給,不計。(見解析圖中的公式變量。)
三. 后退N幀協(xié)議(GBN)
GBN:Go Back N
首先來一個GBN協(xié)議與前面的停等協(xié)議的對比圖吧!
| 停等協(xié)議 | GBN協(xié)議 |
由停等協(xié)議到GBN協(xié)議,有兩個前提:
- 必須增加序號范圍
- 發(fā)送方要緩存多個分組
① GBN的滑動窗口
傳送幀分為三個部分:
- 發(fā)完被確認(rèn)的幀
- 還能發(fā)送的幀(即正在發(fā)送窗口里的幀)
- 還不能發(fā)的幀
② GBN發(fā)送方要做的三件事
簡單來說,就是:
- 與上層的交流:上層發(fā)送數(shù)據(jù),發(fā)送方如果窗口滿,則退還數(shù)據(jù)給上層。(實際可以緩存數(shù)據(jù))
- 對ACK采取累計確認(rèn)方式。
這里要舉個例子:發(fā)送0、1、2,只返回ack1,則說明:0,1都收到,重傳2。而非只收到1。 - 超時事情處理:重傳所有已發(fā)但未確認(rèn)幀。
舉個例子:發(fā)送0、1、2、3,返回ack1,超時后重傳2、3。
(之后的SR協(xié)議就是對此處進(jìn)行了優(yōu)化。)
③ GBN接收方要做的事
下圖簡而言之就是:
- 正確按序收到n號幀后,發(fā)送ack N(累計確認(rèn)),上傳數(shù)據(jù)給上層。
- 維護(hù)Expected_Seq_Num。
舉個例子:發(fā)0、1、2、3,接收到0、2、3,則發(fā)ack0,expectedseqnum=1(期待接收幀是1)
這里提了一下緩存失序幀,其實就是為SR協(xié)議引一下,因為SR協(xié)議會緩存失序幀。
④ 運行圖
圖中需要注意:
- 接收3、4、5后,都丟棄,并且發(fā)送的都是ACK 1。
- 超時計時器:超時后,重傳所有已發(fā)未確認(rèn)幀,結(jié)合expectedseqnum=2來維護(hù)運行。
⑤ 滑動窗口長度
- 采取n比特對幀編號的情況:發(fā)送窗口尺寸W滿足:1 ≤ W ≤ 2n2 ^ n2n-1
- 原因:尺寸過大會導(dǎo)致接收方無法區(qū)分新幀與舊幀。
如果不太了解為啥無法區(qū)分,可以到SR協(xié)議部分再看看解析。
⑥ GBN重點總結(jié)
這里直接看圖就好
⑦ 例題
做這道題需要的知識點:
- 累計確認(rèn)
- GBN的重發(fā)機(jī)制
解析:由于收到了3號幀的確認(rèn),也就是ACK 3,那么由累計確認(rèn)機(jī)制可知:0、1、2、3號幀都成功傳送。因此,只有4、5、6、7號幀需要重發(fā)。所以選C.4。
⑧ 性能分析
i) 優(yōu)點:連續(xù)發(fā)送數(shù)據(jù)幀 => 提高信道利用率。
ii) 缺點:重傳時要把已經(jīng)正確傳輸?shù)臄?shù)據(jù)幀重傳 => 傳送效率降低。
最后來一個GBN的思維導(dǎo)圖
四. 選擇重傳協(xié)議(SR)
SR:Selective Repeat
對于之前的GBN協(xié)議,我們了解其弊端:批量重傳。
而為了解決這一弊端,我們有一個解決方法:
單個確認(rèn),加大接收窗口,設(shè)置接收緩存,支持亂序(緩存亂序到達(dá)幀)
由此引出SR協(xié)議
① 滑動窗口
與GBN協(xié)議不同在于:
- 見接收方窗口的紫色部分6,新增緩存功能。
- 見發(fā)送方窗口的綠色部分3,支持亂序確認(rèn),也就是重傳時可以傳2,4而省略3。
- 下界:位于發(fā)送方窗口的最小序號位,下圖中為2號幀。
② SR發(fā)送方必須響應(yīng)的三件事
- 上層調(diào)用同GBN,不贅述。
- ACK:與GBN不同,并非累計確認(rèn)。具體可見圖中解釋。
舉個例子:
發(fā)0、1、2、3、4,收到ACK1 、2、3,那么說明0、4并沒有被正確接收。并且由于0是下界,因此不能移動窗口。于是重傳0、4,如果只返回ACK0,那么窗口移動,下界變成4。 - 超時事件:一個超時事件對應(yīng)一個幀的重傳
③ SR接受方要做的事
分成三類。
- 接受亂序,緩存失序幀。如下圖的6號幀
- 比下界序號還小的幀,返A(chǔ)CK。(下圖5號幀前的01234,只是重新確認(rèn)已發(fā))
- 其他情況:忽略。
移動滑動窗口的情況:下界幀成功返回ACK。
④ 運行圖
- 2幀丟失后,3幀緩存,發(fā)送ACK3 (GBN則返A(chǔ)CK2)
- 2幀超時后,重傳2幀。(GBN則返2345)
- 移動窗口:重傳2幀后,2-5都成功了,移動下界到6。
⑤ 滑動窗口長度
公式:WtmaxWtmaxWtmax = WrmaxWrmaxWrmax = 2n-1
限制原因:
同GBN,會導(dǎo)致接收方無法區(qū)分新幀與舊幀。
見圖左,與圖右流程:
- 共同點:最后都是接受0號幀
- 不同點:左邊是重傳(舊幀),右邊不是重傳(新幀)
解決方法:按公式給窗口長度,就不會出現(xiàn)這種二義性錯誤。
⑥ SR協(xié)議重點 && 例題
重點
直接見下圖
例題
考察知識:
- SR協(xié)議的重傳機(jī)制
解析:
- 1號幀已經(jīng)確認(rèn),不需要重傳
- 0、2號幀超時,需要重傳
- 3號幀,沒超時,先不處理。
因此,最終只需要重傳0、2號幀,答案選A.2。
⑦ 思維導(dǎo)圖
終于補(bǔ)完這一小節(jié)的內(nèi)容了= =,一篇博客拖了好久。
要抓緊寫完三四章的內(nèi)容了!
總結(jié)
以上是生活随笔為你收集整理的【学习笔记】数据链路层——流量控制:停止等待协议、后退N帧协议(GBN)、选择重传协议(SR)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 粒子动画_python-盒
- 下一篇: 一组数字中算出最相近的组合_据说在金字塔