計(jì)算機(jī)網(wǎng)絡(luò)系列博文——目錄
流水線可靠數(shù)據(jù)傳輸協(xié)議
停等協(xié)議的效率極低,發(fā)送方的理論效率不到鏈路物理上限的千分之一
流水線
允許發(fā)送方發(fā)送多個(gè)分組而無(wú)需等待確認(rèn)
流水線技術(shù):
- 分組編號(hào) 每個(gè)輸送中的邏輯分組(即不計(jì)重傳)必須有唯一序號(hào)
- 分組緩存 發(fā)送方和接收方必須緩存多個(gè)分組
- 差錯(cuò)恢復(fù) 包括回退N步和選擇重傳兩種基本方法
滑動(dòng)窗口協(xié)議
- 用于實(shí)現(xiàn)流水線機(jī)制的技術(shù)
窗口
- 允許使用的序列號(hào)范圍
- 對(duì)發(fā)送方,已被發(fā)送但未被確認(rèn)的分組的許可序號(hào)范圍以及可用序號(hào)的范圍
- 窗口長(zhǎng)度為N:最多有N個(gè)等待確認(rèn)的消息
滑動(dòng)窗口
- 隨著協(xié)議的運(yùn)行,窗口在序列號(hào)空間內(nèi)向前滑動(dòng)
重傳機(jī)制
- 根據(jù)重傳機(jī)制的不同,有回退N步和選擇重傳兩者實(shí)現(xiàn)
回退N步(Go-Back-N,GBN)
以回退N步作為差錯(cuò)恢復(fù)機(jī)制的滑動(dòng)窗口協(xié)議
分組序號(hào)
- 基序號(hào) 最早的未確認(rèn)分組的序號(hào)
- 下一個(gè)序號(hào) 下一個(gè)待發(fā)送分組的序號(hào),即最小的未使用序號(hào)
累積確認(rèn) 對(duì)序號(hào)n的ACK代表接收方已經(jīng)正確接收序號(hào)不超過(guò)n的所有分組
發(fā)送方行為
- 上層調(diào)用 若窗口未滿,產(chǎn)生分組并發(fā)送之,同時(shí)更新相應(yīng)狀態(tài);若窗口已滿,暫不發(fā)送(緩存數(shù)據(jù),通知上層,同步機(jī)制等方式)
- 收到ACK
- 超時(shí)事件 若出現(xiàn)超時(shí),重傳所有已發(fā)送且未確認(rèn)的分組
接收方行為
對(duì)按序到達(dá)的分組,接收并發(fā)送ACK;對(duì)失序分組,直接丟棄,并重新確認(rèn)序列號(hào)最大的、按序到達(dá)的分組
特點(diǎn)
接收方只需要記住一個(gè)待接收分組序號(hào)
接收方?jīng)]有分組緩存
回退N步的問(wèn)題 單個(gè)分組的差錯(cuò)能引起大量分組的重傳
狀態(tài)機(jī)

發(fā)送方.png

接收方.png
選擇重傳(Selective Repeat,SR)
選擇重傳協(xié)議讓發(fā)送方僅重傳那些它懷疑在接收方出錯(cuò)的分組,以避免不必要的重傳。
新機(jī)制
- 不再使用累積確認(rèn),ACK只確認(rèn)特定分組。
- 接收方設(shè)置緩存,緩存亂序到達(dá)的分組
- 發(fā)送方只重傳那些沒(méi)收到ACK的分組,為每個(gè)分組設(shè)置定時(shí)器
發(fā)送方行為
- 從上層收到數(shù)據(jù) 檢查下一個(gè)可用于該分組的序號(hào),若序號(hào)位于發(fā)送方窗口內(nèi),則打包數(shù)據(jù)并發(fā)送。否則暫不發(fā)送(緩存,通知上層,同步機(jī)制等待)
- 分組超時(shí) 每個(gè)已發(fā)送未確認(rèn)分組都有一個(gè)邏輯定時(shí)器,一定時(shí)間內(nèi)未收到該分組的ACK則重傳之
- 收到分組i的ACK 若i在窗口內(nèi),將該分組標(biāo)記為已確認(rèn)。若i=窗口基序號(hào),則窗口前移。若窗口前移了且有序號(hào)落在窗口內(nèi)的未發(fā)生分組,則發(fā)送這些分組。
接收方行為
- 確認(rèn)正確接收的分組。若該分組失序,則將之緩存直至所有該分組之前的分組都被接收,再將一批連續(xù)的分組按序交付上層。若該分組已被正確接收(說(shuō)明對(duì)該分組的ACK丟失或損壞了),仍要發(fā)送一個(gè)ACK。
狀態(tài)機(jī)

發(fā)送方.png

接收方.png
序列號(hào)空間大小限制
問(wèn)題:序列號(hào)空間大小與窗口
尺寸需滿足什么關(guān)系?
NS+NR<=2k
底層信道具有分組重排序的可能
即分組通過(guò)鏈路網(wǎng)絡(luò)傳播時(shí),分組序列的接收順序和分組序列的發(fā)送順序可能不一致。
具有分組重排序可能性的信道,可視為信道具有緩存分組,并在將來(lái)任意時(shí)刻釋放所緩存的分組的可能。
實(shí)際應(yīng)用中,通常假定分組在底層信道中存活時(shí)間不會(huì)超過(guò)某個(gè)固定值(如3分鐘)。