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