2017-02-10 可靠數據傳輸原理、可靠數據傳輸協議、自動重傳請求協議、停等協議、冗餘分組、比特交替協議、滑動窗口協議

2017-02-10 可靠數據傳輸原理、可靠數據傳輸協議、自動重傳請求協議、停等協議、冗餘分組、比特交替協議、滑動窗口協議

《計算機網絡-自頂向下方法》(原書第6版)


3.4 可靠數據傳輸原理

    可靠數據傳輸協議(reliable data transfer protocol)。由於可靠數據傳輸協議的下層協議也許是不可靠的,因此這是一項困難的任務。

    單向數據傳輸(unidirectional data transfer)即數據傳輸是從發送端到接收端的。

    雙向數據傳輸(bidirectional data transfer)(即全雙工數據傳輸


3.4.1 構造可靠數據傳輸協議

    先假定發送的分組按其發送的順序被接收,且不丟失分組

    1:經完全可靠信道的可靠數據傳輸

        首先我們考慮最簡單的情況,即底層信道是完全可靠的。

        有限狀態機(Finite-State Machine,FSM)

    2:經具有比特差錯信道的可靠數據傳輸

        肯定確認(positive acknowledgment)

        否認確認(negative acknowledgment)

        這些控制報文使得接收方可以讓發送方知道哪些內容被正確接收,哪些內容接收有誤並因此需要重複。在計算機網絡環境中,基於這樣重傳機制的可靠數據傳輸協議稱爲自動重傳請求(Automatic Repeat reQuest,ARQ)協議,這就需要差錯檢測、接收方反饋、重傳三個功能。

    停等(stop-and-wait)協議:要等到上一個分組得到正確接收的確認後才能處理下一個分組。它存在一個致命的缺陷。尤其是我們沒有考慮到ACK或NAK分組受損的可能性。

    考慮處理受損ACK和NAK的3種可能性

        第一種:接收方對受損的ACK或NAK繼續做錯誤反饋,由於發出的錯誤反饋可能再次受損,這樣就有可能進入死循環。

        第二種:增加足夠的檢驗和比特,使發送方不僅可以檢測差錯,還可以恢復差錯。對於會產生差錯但不丟失分組的信道,這就可以直接解決問題。

        第三種:當接收方收到含糊不清的ACK或NAK分組時,只需重傳當前數據分組即可。這種方法在發送方到接收方的信道中引入了冗餘分組(duplicate packet)。冗餘分組的根本困難在於接收方不知道他上次所發送的ACK或NAK是否被髮送方正確的收到。因此他無法事先知道接收到的分組是新的還是一次重傳。

        對於第三種情況,解決這個新問題的的簡單方法是在數據分組中添加一新字段,讓發送方對其數據分組編號,即將發送數據分組的序號(sequence number)放在該字段。

    3.經具有比特差錯的丟包信道的可靠數據傳輸

        冗餘數據分組(duplicate data packet)

        從發送方的觀點來看,重傳是一種萬能靈藥。發送方不知道是一個數據分組丟失,還是一個ACK丟失,或者只是該分組或ACK過度延時。在所有這些情況下,動作是同樣的:重傳。

        因爲分組序號在0和1之間交替,因此rdt3.0有時被稱爲比特交替協議(alternating-bit protocol)



Pasted Graphic 1.tiff


3.4.2 流水線可靠數據傳輸協議

流水線(pipelining)流水線技術對可靠數據傳輸協議帶來如下影響:

    1:必須增加序號範圍,因爲每個輸送中的分組(不計算重傳的)必須有一個唯一的序號,而且也許有多個在輸送中未確認的報文。

    2:協議的發送方和接收方兩端必須緩存多個分組。發送方最低限度應當能緩衝那些已發送但是沒有確認的分組。如下討論,接收方或許也需要緩存那些已正確接收的分組。

    3:所需序號範圍和對緩存的要求取決於數據傳輸協議如何處理丟失、損壞及延時過大的分組。解決流水線差錯恢復有兩種基本方法是:回退N步(Go-Back-N,GBN)和選擇重傳(Selective Repeat,SR)。


3.4.3 回退N步

    窗口長度(window size),滑動窗口協議(sliding-window protocol)

    序號空間可被看作是一個長度爲2的k次方的環,其中序號2的k次方減1緊接着序號0,TCP有一個32比特的序號字段,其中的TCP序號是按字節流中的字節進行計數的,而不是按分組計數。

    基於事件的編程(event-based programming)


3.4.4 選擇重傳

    GBN中單個分組的差錯就能夠引起GBN重傳大量分組,許多分組根本沒有必要重傳。


1:可靠數據傳輸協議(reliable data transfer protocol)、2:單向數據傳輸(unidirectional data transfer)、3:雙向數據傳輸(bidirectional data transfer)、4:有限狀態機(Finite-State Machine,FSM)、5:肯定確認(positive acknowledgment)、6:否認確認(negative acknowledgment)、7:自動重傳請求(Automatic Repeat reQuest,ARQ)協議、8:停等(stop-and-wait)協議、9:冗餘分組(duplicate packet)、10:分組的序號(sequence number)、11:比特交替協議(alternating-bit protocol)、12:流水線(pipelining)、13:窗口長度(window size)、14:滑動窗口協議(sliding-window protocol)、15:基於事件的編程(event-based programming)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章