流水線技術允許傳送方在收到ack之前連續傳送多個分組:
(1)必須增加序號範圍,因為每個輸送中的分組(不計算重傳的)必須有乙個唯一的序號,而且也許有多個在輸送中未確認的報文。
(2)協議的傳送方和接收方要能快取多個分組。傳送方至少要能快取那些已傳送但沒有確認的分組,接收方可能要快取那些已正確接收的分組。
(3)所需序號範圍和對緩衝的要求取決於資料傳輸協議如何處理丟失、損壞及延時過大的分組。解決流水線的差錯恢復有兩種滑動視窗協議:回退n步(go-back- n,gbn) 和選擇重傳(selective repeat,sr) 。
回退n步(gbn)協議
在流水線中未確認的分組數不能超過最大允許數(視窗長度n<2^k)
基序號(base) 定義為最早的未確認分組的序號,將下乙個序號(nextseqnum) 定義為最小的未使用序號(下乙個待發分組的序號)
如果視窗已滿,傳送方會快取上層應用發來的資料,或使用同步機制(如乙個訊號量或標誌)僅當視窗不滿時才允許上層應用傳送資料。
對序號為n的分組的確認採取累積確認的方式, 接受方傳送擁有最高序列號的、已被正確接收的分組的ack,表明自己已正確接收到序號≤n的所有分組。
亂序到達的分組直接丟棄(接收方無需快取)重新確認序列號最大的、按序到達的分組,因此可能產生重複ack。
只有乙個計時器,base每次增加1,如果base==nextseqnum,就停止計時器,否則重啟計時器。
如果出現超時,傳送方重傳所有已傳送但還未被確認過的所有分組。
缺點:單個分組的差錯就能夠引起gbn重傳大批分組,許多分組根本沒有必要重傳。隨著通道差錯率的增加,流水線可能會被這些不必要重傳的分組所充斥。
選擇重傳(selective repeat, sr)
傳送方視窗和接受方視窗之和必須小於2^k
傳送方:
從上層收到資料:當從上層接收到資料後,傳送方檢查下乙個可用於該分組的序號。如果序號位於傳送方的視窗內,則將資料打包並傳送;否則就像在gbn 中一樣,要麼將資料快取,要麼將其返回給上層以便以後傳輸。
重傳:每個分組必須擁有其自己的邏輯定時器,超時發生後只能傳送乙個分組,並重啟該定時器
收到ack :如果收到ack,倘若該分組序號在視窗內,則傳送方將那個被確認的分組標記為己接收;如果該分組的序號等於傳送視窗基序號send_base, 則send_base向前移動到具有最小序號的未確認分組處;如果視窗移動了並且有序號落在視窗內的未傳送分組,則傳送這些分組。
快取機制:接收方將確認乙個正確接收的分組而不管其是否按序。失序的分組將被快取直到所有丟失分組(序號更小的分組)皆被收到為止
接受方:
序號在[rcv_base, rcv_base + n-1] 內的分組被正確接收:如果該分組以前沒收到過,則快取該分組。如果該分組的序號等於接收視窗的基序號rcv_base,則該分組以及以前快取過的所有連續分組交付給上層。
序號在[rev_base-n, rev_base-1]內的分組被正確接收:雖然該分組是接收方以前已確認過的分組,也必須傳送ack
其他情況:忽略該分組。
計算機網路 傳輸層
為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...
計算機網路(傳輸層)
網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...
計算機網路 傳輸層
運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...