粉絲不過W
數據鏈路層的流量控制
較高的發送速度 & 較低的接收能力的不匹配,會造成傳輸出錯,因此流量控制也是數據鏈路層的一項重要工作
數據鏈路層的流量控制:點對點
傳輸層的流量控制:端到端
數據鏈略層流量控制手段:接收方收不下就不回覆確認
傳輸層流量控制手段:接收端給發送端一個窗口公告
控制流量的方法
停止-等待協議:
每發送完一個幀就停止發送,等待對方的確認,在收到確認後再發送下一個幀
停止-等待協議:發送窗口大小 = 1 , 接收窗口大小 = 1
後退N幀協議( GBN ):發送窗口大小 > 1,接收窗口大小 = 1
選擇重傳協議( SR ):發送窗口大小 > 1,接收窗口大小 > 1
可靠傳輸,滑動窗口,流量控制
可靠傳輸:發送端發啥,接收端收啥
流量控制:控制發送速率,使接收方有足夠的緩衝空間來接收每一個幀
停止-等待協議
除了比特出差錯,底層信道還會出現丟包問題,實現流量控制
丟包:物理線路故障、設備故障、病毒攻擊、路由信息錯誤等原因,會導致數據包的丟失
停止 - 等待:每發送完一個分組就停止發送,等待對方確認,在收到確認後再發送下一個分組
應用情況:無差錯情況 & 有差錯情況
停等協議——無差錯情況
每發送1個數據幀就停止並等待,因此用1bt來編號就夠
停等協議——有差錯情況:
ACK丟失:
ACK遲到:
停等協議性能分析:
利用率低
信道利用率:
發送方在一個發送週期內,有效地發送數據所需要的時間佔整個發送週期的比率
信道吞吐率 = 信道利用率 * 發送方的發送速率
選擇重傳協議( selective repeat )
滑動窗口:
SR發送方必須響應:
上層的調用:
從上層收到數據後,SR發送方 檢査下一個可用於該幀的序號,如 序號位於發送窗口內,則發送數據幀;否則就像GBN一樣,要麼將數據緩存,要麼返回給上層之後再傳輸
收到了一個ACK:
如 收到ACK,加入該幀序號在窗口內,則SR發送方將那個被確認的幀 標記爲已接收。如 該幀序號是窗口的下界( 最左邊第一個窗口對應的序號 ),則窗口向前移動到具有最小序號的未確認幀處。如果窗口移動了,且有序號在窗口內的未發送幀,則發送這些幀
超時事件:
每個幀都有自己的定時器,一個超時事件發生後,重傳一個幀
SR接收方:
來者不拒( 窗口內的幀 )
SR接收方將確認一個正確接收的幀,而不管其是否按序,失序的幀將被緩存,並返回給發送方一個該幀的確認幀( 收誰確認誰 ),直到所有幀( 即序號更小的幀 )都被收到爲止,這時纔可以將一批幀按序交付給上層,然後向前移動滑動窗口
如 收到了窗口序號外( 小於窗ロ下界 )的幀,就返回一個ACK其他情況,就忽略該幀
滑動窗口長度:
發送窗口最好 = 接收窗口
後退N幀協議( GBN )
流水線技術:
發送窗口:發送方維持一組連續的允許發送的幀的序號
接收窗口: 接收方維持一組連續的允許接收幀的序號
GBN發送方必須響應:
. 上層的調用
上層要發送數據時,發送方先檢査發送窗口是否已滿,如 未滿,則產生一個幀並將其發送;
如 窗口已滿,發送方只需將數據返回給上層,暗示上層窗口已滿
上層等一會再發送 ( 實際實現中,發送方可以緩存這些數據,窗口不滿時再發送幀 )
收到了一個ACK
GBN協議中,對n號幀的確認採用累積確認的方式,標明接收方已經收到n號幀 和 它之前的全部幀
超時事件
協議的名字:後退N幀 / 回退N幀,來源於出現丟失、時延過長幀時發送方的行爲。像在停等協議中一樣定時器將再次用於恢復數據幀、確認幀的丟失。如 超時,發送方重傳 所有已發送未被確認的幀
GBN接收方:
如 正確收到n號幀,且按序,那 接收方爲n幀發送一個ACK,並將該幀中的數據部分交付給上層
其餘情況都丟棄幀,併爲最近按序接收的幀重新發送ACK。接收方無需緩存任何失序幀,只需要維護一個信息:expectedseqnum(下一個按序接收的幀序號)
出現超時:發送方重傳 所有發送但沒有被確認的幀