1. 程式人生 > >2017-02-11 構造可靠資料傳輸協議、滑動視窗協議、位元交替協議、回退N步協議、選擇重傳協議

2017-02-11 構造可靠資料傳輸協議、滑動視窗協議、位元交替協議、回退N步協議、選擇重傳協議

2017-02-11構造可靠資料傳輸協議、滑動視窗協議、位元交替協議、回退N步協議、選擇重傳協議

1:冗餘資料分組(duplicate data packet)、2:倒計數定時器(countdown timer)、3:位元交替協議(alternating-bit protocol)、4:回退N步(Go-Back-N,GBN)、5:N常被稱為視窗長度(window size)、6:滑動視窗協議(slidingwindow protocol

3.4.1:傳輸層-》可靠資料傳輸原理-》構造可靠資料傳輸協議-》經具有位元差錯的丟包通道的可靠資料傳輸:rdt 3.0

    我們讓傳送方負責監測和恢復丟包工作

    冗餘資料分組(duplicate data packet)

    倒計數定時器(countdown timer)

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

Pasted Graphic.tiff

3.4.2 流水線可靠資料傳輸協議-回退N步(Go-Back-N,GBN)

    基序號(base)定義為最早的未確認分組的序號。

    下一個序號(nextseqnum)定義為最小的未使用序號,即下一個代發分組的序號。

        則[0,base-1]為已經發送並且確認的分組

        [base,nextseqnum-1]已經發送但是沒有確認的分組

        [nextseqnum,base+N-1]能用於那些要被立即傳送的分組大於或等於base+N的序號是不能使用的,直到當前流水線中未被確認的分組得到確認為止。

Pasted Graphic 1.tiff

    N常被稱為視窗長度(window size

    GBN協議也常被稱為滑動視窗協議(slidingwindow protocol

序號空間可被看作是一個長度為2k次方的環,其中序號2的k次方減1緊接著序號0,TCP有一個32位元的序號欄位,其中的TCP序號是按位元組流中的位元組進行計數的,而不是按分組計數。

Pasted Graphic 2.tiff

Pasted Graphic 3.tiff

3.4.4 選擇重傳

Pasted Graphic 4.tiff

    SR傳送方的事件與動作

        1.從上層收到資料。當從上層接收到資料後,SR傳送方檢查下一個可用於該分組的序號。如果序號位於傳送方的視窗內,則將資料打包併發送;否則就像在GBN中一樣,要麼將資料快取,要麼將其返回給上層以便以後傳輸。

        2:超時。定時器再次被用來防止丟失分組。然後,每個分組必須擁有其自己的邏輯定時器,因為超時發生後只能傳送一個分組。可以使用單個硬體定時器模擬多個邏輯定時器的操作。

        3.收到ACK。如果收到ACK,倘若該分組序號在視窗內,則SR傳送方將那個被確認的分組標記為已接收。如果該分組的序號等於send_base,則視窗基序號向前移動到具有最小序號的未確認分組處。如果視窗移動了並且有序號落在視窗內的未傳送分組,則傳送這些分組。

    SR接收方的事件與動作

        1.序號在[rcv_base,rcv_base+N-1]內的分組被正確接收。在此情況下,收到的分組落在接收方的視窗內,一個選擇ACK被回送給傳送方。如果該分組以前沒收到過,則快取該分組。如果該分組的序號等於接收視窗的基序號,則該分組以及以前快取的序號連續的分組交付給上層。然後,接收視窗按向前移動分組的編號向上交付這些分組。

        2.序號在[rcv_base-N,rcv_base-1]內的分組被正確收到。在此情況下,必須產生一個ACK,即使該分組是接收方以前已確認過的分組。

        3.其他情況。或略該分組。

        其中上述的2是非常重要的,對於哪些分組已經被正確接收,哪些沒有,傳送方和接收方並不總是能看到相同的結果。對SR協議而言,這就意味著傳送方和接收方的視窗並不總是一致。

    由於序號可以被重複使用,知道傳送方“確信”任何先前傳送的序號為x的分組都不在網路中為止。通過假定一個分組在網路中“存活”時間不會超過某個固定最大時間量來做到這一點。

    視窗長度必須小於或等於序號空間大小的一半,否則可能發生這種情況,某個分組不能確認是重傳還是初次傳輸。

可靠資料傳輸機制及其用途的總結

    檢驗和:用於檢測在一個傳輸分組中的位元錯誤

    定時器:用於超時/重傳一個分組,可能因為該分組(或其ACK)在通道中丟失了。由於當一個分組延時但未丟失(過早超時),或當一個分組已經被接收方收到但從接收方到傳送方的ACK丟失時,可能產生超時事件,所以接收方可能會收到一個分組的多個冗餘副本。

    序號:用於為從傳送方流向接收方的資料分組按順序編號。所接收分組的序號空間的空隙可使接收方檢測出丟失的分組。具有相同序號的分組可使接收方檢測出一個分組的冗餘副本。

    確認:接收方用於告訴傳送方一個分組或一組分組已經被正確滴接收到了。確認報文通常攜帶著被確認的分組或多個分組的序號。確認可以是逐個的或累積的,著取決於協議。

    否定確認:接收方用於告訴傳送方某個分組未被正確地接收。否定確認報文通常攜帶著未被正確接收到分組的序號。

    視窗、流水線:傳送方也許被限制僅傳送那些序號落在一個指定範圍內的分組。通過允許一次傳送多個分組但未被確認,傳送方的利用率可以在停等操作模式的基礎上得到增加。我們很快會看到,視窗長度可根據接收方接收的快取報文的能力、網路中的擁塞程度或兩者情況來進行設定。