【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★
文章目錄
- 一、 選擇重傳協(xié)議 ( SR ) 引入
- 二、 選擇重傳協(xié)議 ( SR ) 幀分類
- 三、 發(fā)送方 事件 ( 確認(rèn)幀、超時(shí)事件 )
- 四、 接收方 事件 ( 接收幀 )
- 五、 滑動(dòng)窗口長度
- 五、 選擇重傳協(xié)議 SR 重點(diǎn)
- 六、 選擇重傳協(xié)議 SR 計(jì)算示例
一、 選擇重傳協(xié)議 ( SR ) 引入
后退 NNN 幀協(xié)議 ( GBN ) 弊端 : 累計(jì)確認(rèn) 機(jī)制 , 導(dǎo)致的批量重傳 , 這些重傳的幀 , 可能已經(jīng)傳輸成功 , 就是因?yàn)橹暗膸鲥e(cuò) , 導(dǎo)致傳輸成功的幀被丟棄 ;
上述弊端 解決方案 : 設(shè)置 單個(gè)幀確認(rèn)機(jī)制 , 加大 接收窗口 , 設(shè)置接收緩存 , 可處理亂序到達(dá)的幀 ;
二、 選擇重傳協(xié)議 ( SR ) 幀分類
發(fā)送方 幀 分類 :
① 發(fā)送窗口外 , 發(fā)送完畢 , 被確認(rèn)的幀 ; 滑動(dòng)窗口已經(jīng)劃過的位置 ;
② 發(fā)送窗口內(nèi) , 發(fā)送完畢 , 被確認(rèn)的幀 ;
③ 發(fā)送窗口內(nèi) , 發(fā)送完畢 , 等待確認(rèn)的幀 ; 此時(shí)該數(shù)據(jù)幀需要被緩存 ;
④ 發(fā)送窗口內(nèi) , 還能發(fā)送的幀 ;
⑤ 發(fā)送窗口外 , 還不能發(fā)送的幀 ; 滑動(dòng)窗口還沒有滑到的位置 ;
接收方 幀 分類 :
① 接收窗口外 , 已經(jīng)成功接收的幀 ;
② 接收窗口內(nèi) , 希望收到 , 但是未收到的幀 ;
③ 接收窗口內(nèi) , 希望收到 , 剛收到的幀 ;
④ 接收窗口內(nèi) , 不希望收到 , 卻提前收到的幀 , 已經(jīng)緩存下來 ;
⑤ 接收窗口內(nèi) , 等待接收的幀 ;
三、 發(fā)送方 事件 ( 確認(rèn)幀、超時(shí)事件 )
上層調(diào)用事件 : 上層發(fā)送數(shù)據(jù)時(shí) , 先檢查 發(fā)送窗口 ;
① 如果 發(fā)送窗口 未滿 : 則 生成 數(shù)據(jù)幀 , 發(fā)送數(shù)據(jù) ;
② 如果 發(fā)送窗口 已滿 : 發(fā)送方將該信息通知上層 , 讓 上層 延遲發(fā)送 ;
ACKACKACK 確認(rèn)幀 事件 : 逐一確認(rèn) ;
① 接收確認(rèn)幀 : 接收方收到 ACK 確認(rèn)幀 ;
② 標(biāo)記已接收 : 發(fā)送窗口 內(nèi) 將該 幀序號 對應(yīng)的幀 標(biāo)記為 已接收 ;
③ 移動(dòng)發(fā)送窗口 : 如果 該 幀序號 是 發(fā)送窗口 的下界 ( 最左側(cè)窗口 ) , 將 發(fā)送窗口 移動(dòng)到 最小序號的 沒有確認(rèn) 的幀位置 ; 可能移動(dòng) 一個(gè)位置 , 也可能移動(dòng)多個(gè)位置 ;
④ 發(fā)送未發(fā)送幀 : 發(fā)送窗口 移動(dòng)完畢后 , 如果發(fā)現(xiàn) 該 發(fā)送窗口 中有沒有發(fā)送的幀 , 就將這些幀發(fā)送出去 ;
超時(shí)事件 : 每個(gè)幀 都有 自己的定時(shí)器 , 如果 某個(gè) 幀出現(xiàn)了定時(shí)器超時(shí)事件 , 重傳該單個(gè)幀 ;
四、 接收方 事件 ( 接收幀 )
接收方 事件 :
① 接收正確幀 : 接收方 接收 正確的幀 , 不管其幀的順序 ;
② 失序處理 : 失序的幀 , 將會被緩存起來 , 并向 發(fā)送方 發(fā)送該 失序幀 的 ACK 確認(rèn)幀 ;
③ 移動(dòng)接收窗口 : 如果 接收到的 幀序號 是 接收窗口 的下界 ( 最左側(cè)窗口 ) , 將成功接收到的連續(xù)數(shù)據(jù)交付給上層 , 將 接收窗口 移動(dòng)到 最小序號的 沒有接收到 的幀位置 ; 可能移動(dòng) 一個(gè)位置 , 也可能移動(dòng)多個(gè)位置 ;
五、 滑動(dòng)窗口長度
發(fā)送窗口 與 接收窗口 大小相等 , 便于流量控制 ;
使用 nnn 比特 對 幀進(jìn)行編號 , 發(fā)送窗口的尺寸 WTW_TWT? 和 接收窗口尺寸 WRW_RWR?滿足如下公式要求 :
WT=WR=2n?1W_T = W_R = 2^{n - 1}WT?=WR?=2n?1
五、 選擇重傳協(xié)議 SR 重點(diǎn)
選擇重傳協(xié)議 SR 重點(diǎn) :
① 數(shù)據(jù)幀 逐一確認(rèn) , 接收方收到一個(gè)幀 , 就會單獨(dú)發(fā)送該幀的確認(rèn)幀 ;
② 重傳 出錯(cuò) 的 單個(gè)幀 ;
③ 接收方 有緩存 ;
④ 滑動(dòng)窗口大小 : WT=WR=2n?1W_T = W_R = 2^{n - 1}WT?=WR?=2n?1 ;
六、 選擇重傳協(xié)議 SR 計(jì)算示例
數(shù)據(jù)鏈路層 使用 選擇重傳協(xié)議 SR , 發(fā)送方發(fā)送了 0,1,2,30 , 1, 2,30,1,2,3 幀 , 當(dāng)前時(shí)刻 , 收到了 111 號確認(rèn)幀 , 0,20, 20,2 號幀出現(xiàn)超時(shí) , 則需要重發(fā)哪些幀 ???
SR 協(xié)議是收到一幀 , 確認(rèn)一幀 ;
111 號幀 已經(jīng)確認(rèn) , 不用重發(fā) ;
0,20 , 20,2 幀 超時(shí) , 必須重發(fā) ;
333 號幀 等待確認(rèn) , 當(dāng)前時(shí)刻不用管 , 如果超時(shí) , 就需要重發(fā) , 當(dāng)前沒有超時(shí) , 等待即可 ;
因此最終只需要重發(fā) 0,20 , 20,2 數(shù)據(jù)幀 ;
總結(jié)
以上是生活随笔為你收集整理的【计算机网络】数据链路层 : 选择重传协议 SR ( 帧分类 | “发送方“ 确认帧、超时事件 | “接受方“ 接收帧机制 | 滑动窗口长度 | 计算示例 )★的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络】数据链路层 : 流量控制
- 下一篇: 【计算机网络】数据链路层 : 信道划分