3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制
文章目錄
- 0.思維導圖
- 1.什么是流量控制?
- 2.什么是可靠傳輸機制?
- 3.什么是滑動窗口機制?
- 4.可靠傳輸、流量控制、滑動窗口之間的關(guān)系
- 5.停止-等待協(xié)議
- (1)為什么要有停止-等待協(xié)議?
- (2)研究停止等待協(xié)議的前提
- (3)停止-等待協(xié)議有幾種應用情況?
- 1?? 無差錯情況
- 2?? 有差錯情況
- ① 數(shù)據(jù)幀丟失或檢測到幀出錯
- ② ACK確認幀丟失
- ② ACK確認幀遲到超時
- (4)停止等待協(xié)議性能分析
- 6.多幀滑動窗口與后退N幀協(xié)議(GBN)
- (1)后退N幀協(xié)議(GBN)的滑動窗口
- (2)GBN發(fā)送方響應的三件事
- 1?? 上層的調(diào)用
- 2?? 收到一個ACK
- 3?? 超時事件
- (3)GBN接受方要做的事
- (4)一張圖了解GBN發(fā)送方和接受方之間的傳輸過程
- (5)GBN滑動窗口的限制
- (6)GBN重點知識
- (7)GBN性能分析
- 7.多幀滑動窗口與選擇重傳協(xié)議(SR)
- (1)SR的滑動窗口圖
- (2)SR發(fā)送方必須響應的三件事
- 1?? 上層的調(diào)用
- 2?? 收到一個ACK確認幀
- 3?? 超時處理
- (3)SR接受方要做的事
- (4)一張圖了解SR發(fā)送方和接受方之間的傳輸過程
- (5)SR滑動窗口的大小限制
- (6)SR重點知識
0.思維導圖
1.什么是流量控制?
- 流量控制是數(shù)據(jù)鏈路層的一種功能,流量控制對數(shù)據(jù)鏈路上的幀的發(fā)送速率進行控制,以使接收方有足夠的緩沖空間來接受每個幀
- 流量控制的基本方法是由接收方控制發(fā)送方發(fā)送數(shù)據(jù)的速率
- 常見的流量控制方式有兩種:停止-等待協(xié)議、滑動窗口協(xié)議
2.什么是可靠傳輸機制?
-
可靠傳輸機制是為了使數(shù)據(jù)可以正確穩(wěn)定的傳輸和接收而制定的規(guī)則。
-
數(shù)據(jù)鏈路層的可靠傳輸通常使用確認和超時重傳兩種機制來完成。
-
確認是一種無數(shù)據(jù)的控制幀,這種控制幀使得接收方可以讓發(fā)送方知道哪些內(nèi)容被正確接收。有些情況下為了提高傳輸效率,將確認捎帶在一個回復幀中,稱為捎帶確認。
-
超時重傳是指發(fā)送方在發(fā)送某一個數(shù)據(jù)幀以后就開始一個計時器,在一定時間內(nèi)如果沒有得到發(fā)送的數(shù)據(jù)幀的確認幀,那么就重新發(fā)送該數(shù)據(jù)幀,直到發(fā)送成功為止。
-
自動重傳請求(Auto Repeat reQuest,ARQ),通過接收方請求發(fā)送方重傳出錯的數(shù)據(jù)幀來恢復出錯的幀,是通信中用于處理信道所帶來差錯的方法之一。
-
傳統(tǒng)自動重傳請求分為三種,即停等式(Stop-and-Wait)ARQ、后退N幀(Go-Back-N)ARQ以及選擇性重傳(Selective Repeat)ARQ。后兩種協(xié)議是滑動窗口技術(shù)與請求重發(fā)技術(shù)的結(jié)合,由于窗口尺寸開到足夠大,幀在線路上可以連續(xù)地流動,因此又稱為連續(xù)ARQ協(xié)議。
3.什么是滑動窗口機制?
- 滑動窗口協(xié)議的基本原理就是在任意時刻,發(fā)送方都維持了一個連續(xù)的允許發(fā)送的幀的序號,稱為發(fā)送窗口;同時,接收方也維持了一個連續(xù)的允許接收的幀的序號,稱為接收窗口。
- 發(fā)送窗口和接收窗口的序號的上下界不一定要一樣,甚至大小也可以不同。
- 不同的滑動窗口協(xié)議窗口大小一般不同。
- 發(fā)送方窗口內(nèi)的序列號代表了那些已經(jīng)被發(fā)送,但是還沒有被確認的幀,或者是那些可以被發(fā)送的幀。
-
在發(fā)送端,每收到一個確認幀,發(fā)送窗口就向前滑動一個幀的位置,當發(fā)送窗口內(nèi)沒有可以發(fā)送的幀(即窗口內(nèi)的幀全部是已發(fā)送但未收到確認的幀),發(fā)送方就會停止發(fā)送,直到收到接受方發(fā)送的確認幀使窗口移動,窗口內(nèi)有可以發(fā)送的幀,之后才開始繼續(xù)發(fā)送。
-
在接受端,當收到數(shù)據(jù)幀后,將窗口向前移一個位置,并發(fā)回確認幀,若收到的數(shù)據(jù)幀落在接受窗口之外則一律丟棄。
-
滑動窗口有以下重要特性:
只有接受窗口向前滑動時(同時接受方發(fā)送確認幀),發(fā)送窗口才有可能(只有發(fā)送方收到確認幀才是一定)向前滑動。
從滑動窗口的概念看,停止-等待協(xié)議、后退N幀協(xié)議和選擇重傳協(xié)議只有在發(fā)送窗口大小和接收窗口大小有所差別。
停止-等待協(xié)議:發(fā)送窗口大小=1,接受窗口大小=1;
后退N幀協(xié)議:發(fā)送窗口大小>1,接受窗口大小=1;
選擇重傳協(xié)議:發(fā)送窗口大小>1,接受窗口大小>1;
當接受窗口的大小為1時,可保證幀的有序接受。
4.可靠傳輸、流量控制、滑動窗口之間的關(guān)系
5.停止-等待協(xié)議
- 停止-等待協(xié)議也稱為單幀滑動窗口與停止-等待協(xié)議
- 當發(fā)送窗口和接收窗口的大小固定為1時,滑動窗口協(xié)議退化為停等協(xié)議(stop-and-wait)。
- 該協(xié)議規(guī)定發(fā)送方每發(fā)送一幀后就要停下來,等待接收方已正確接收的確認(acknowledgement)返回后才能繼續(xù)發(fā)送下一幀。
- 由于接收方需要判斷接收到的幀是新發(fā)的幀還是重新發(fā)送的幀,因此發(fā)送方要為每一個幀加一個序號。
- 由于停等協(xié)議規(guī)定只有一幀完全發(fā)送成功后才能發(fā)送新的幀,因而只用一比特來編號就夠了。
(1)為什么要有停止-等待協(xié)議?
(2)研究停止等待協(xié)議的前提
- 雖然現(xiàn)在常用全雙工通信方式,但是為了討論方便,我們僅考慮一方發(fā)送數(shù)據(jù)(發(fā)送方),一方接收數(shù)據(jù)。
(3)停止-等待協(xié)議有幾種應用情況?
- 兩種:無差錯和有差錯
1?? 無差錯情況
2?? 有差錯情況
① 數(shù)據(jù)幀丟失或檢測到幀出錯
② ACK確認幀丟失
② ACK確認幀遲到超時
(4)停止等待協(xié)議性能分析
- 關(guān)于信道利用率可參考我之前的:https://blog.csdn.net/weixin_43914604/article/details/104541219
- 發(fā)送方從開始發(fā)送數(shù)據(jù)到收到第一個確認幀ACK為止,這段時間稱為一個發(fā)送周期
- 信道利用率=發(fā)送時間/發(fā)送周期
- 由于停等協(xié)議要為每一個幀進行確認后才繼續(xù)發(fā)送下一幀,大大降低了信道利用率,因此又提出了后退n幀協(xié)議(GBN)和選擇重傳協(xié)議(SR)。
6.多幀滑動窗口與后退N幀協(xié)議(GBN)
- 后退n協(xié)議中,發(fā)送方在發(fā)完一個數(shù)據(jù)幀后,不停下來等待應答幀,而是連續(xù)發(fā)送若干個數(shù)據(jù)幀,即使在連續(xù)發(fā)送過程中收到了接收方發(fā)來的應答幀,也可以繼續(xù)發(fā)送。且發(fā)送方在每發(fā)送完一個數(shù)據(jù)幀時都要設(shè)置超時定時器。只要在所設(shè)置的超時時間內(nèi)仍未收到確認幀,就要重發(fā)相應的數(shù)據(jù)幀。
- 如:當發(fā)送方發(fā)送了N個幀后,若發(fā)現(xiàn)該N幀的前一個幀在計時器超時后仍未返回其確認信息,則該幀被判為出錯或丟失,此時發(fā)送方就不得不重新發(fā)送出錯幀及其后的N幀。
- 從這里不難看出,后退n協(xié)議一方面因連續(xù)發(fā)送數(shù)據(jù)幀而提高了效率,但另一方面,在重傳時又必須把原來已正確傳送過的數(shù)據(jù)幀進行重傳(僅因這些數(shù)據(jù)幀之前有一個數(shù)據(jù)幀出了錯),這種做法又使傳送效率降低。
- 由此可見,若傳輸信道的傳輸質(zhì)量很差因而誤碼率較大時,連續(xù)測協(xié)議不一定優(yōu)于停止等待協(xié)議。此協(xié)議中的發(fā)送窗口的大小為k,接收窗口仍是1。
(1)后退N幀協(xié)議(GBN)的滑動窗口
(2)GBN發(fā)送方響應的三件事
1?? 上層的調(diào)用
- 上層要發(fā)送數(shù)據(jù)時,發(fā)送方先檢查發(fā)送窗口是否已滿,如果未滿,則產(chǎn)生一個幀并將其發(fā)送;如果窗口己滿,發(fā)送方只需將數(shù)據(jù)返回給上層,暗示上層窗口已滿。上層等一 會再發(fā)送。 ( 實際實現(xiàn)中,發(fā)送方可以緩存這些數(shù)據(jù),窗口不滿時再發(fā)送幀)。
- 配合下圖加深理解
2?? 收到一個ACK
- GBN協(xié)議中,對n號幀的確認采用·累積確認·的方式,標明接收方已經(jīng)收到n號幀和它之前的全部幀。
3?? 超時事件
- 協(xié)議的名字為后退N幀/回退N幀,來源于出現(xiàn)丟失和時延過長幀時發(fā)送方的行為。
- 就像在停等協(xié)議中一樣,定時器將再次用于恢復數(shù)據(jù)幀或確認幀的丟失。
- 如果出現(xiàn)超時,發(fā)送方重傳所有已發(fā)送但未被確認的幀。
(3)GBN接受方要做的事
(4)一張圖了解GBN發(fā)送方和接受方之間的傳輸過程
(5)GBN滑動窗口的限制
(6)GBN重點知識
- 來道題目熟悉一下知識
- 因為接收端可以累積確認,所以只要看最大的確認幀就行,所以接下來發(fā)送方要重發(fā)的幀數(shù)為4
(7)GBN性能分析
7.多幀滑動窗口與選擇重傳協(xié)議(SR)
- 在后退n協(xié)議中,接收方若發(fā)現(xiàn)錯誤幀就不再接收后續(xù)的幀,即使是正確到達的幀,這顯然是一種浪費。由此誕生了SR(SELECTICE REPEAT)。
- SR工作原理:當接收方發(fā)現(xiàn)某幀出錯后,其后繼續(xù)送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩沖區(qū)中,同時要求發(fā)送方重新傳送出錯的那一幀。一旦收到重新傳來的幀后,就可以將已存于緩沖區(qū)中的其余幀一并按正確的順序遞交上一層。
- 顯然,選擇重發(fā)減少了浪費,但要求接收方有足夠大的緩沖區(qū)空間。
(1)SR的滑動窗口圖
(2)SR發(fā)送方必須響應的三件事
1?? 上層的調(diào)用
- 從上層收到數(shù)據(jù)后,SR發(fā)送方檢查下一個可用于該幀的序號,如果序號位于發(fā)送窗口內(nèi),則發(fā)送數(shù)據(jù)幀;否則就像GBN一樣,要么將數(shù)據(jù)緩存,要么返回給上層之后再傳輸。
2?? 收到一個ACK確認幀
-
如果收到ACK,加入該幀序號在窗口內(nèi),則SR發(fā)送方將那個被確認的幀標記為已接收。如果該幀序號是窗口的下界(最左邊第-一個窗口對應的序號),則窗口向前移動到具有最小序號的未確認幀處。如果窗口移動了并且有序號在窗口內(nèi)的未發(fā)送幀,則發(fā)送這些幀。
-
圖解此過程
3?? 超時處理
- 每個幀都有自己的定時器,一個超時事件發(fā)生后只重傳一個幀。
(3)SR接受方要做的事
-
SR接收方將確認-一個正確接收的幀而不管其是否按序。失序的幀將被緩存,并返回給發(fā)送方一個該幀的確認幀[收誰確認誰],直到所有幀(即序號更小的幀)皆被收到為止,這時才可以將一-批幀按序交付給 上層,然后向前移動滑動窗口。
-
圖解此過程
(4)一張圖了解SR發(fā)送方和接受方之間的傳輸過程
(5)SR滑動窗口的大小限制
(6)SR重點知識
- 一道小例題加深理解
參考:https://www.bilibili.com/video/av70228743?p=25
總結(jié)
以上是生活随笔為你收集整理的3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.1.5 操作系统之线程概念与多线程模
- 下一篇: 2.3.1 进程的同步与互斥