挑戰408——一週網咯——運輸層(2)

在不可靠的傳輸網絡上實現可靠通信

我們知道,IP層之間的交付時盡最大努力傳輸的。所以TCP必須採用適當的措施和方式才能保證TCP層之間的可靠傳輸。可靠傳輸協議,就是當出現差錯的時候重傳出現差錯的數據。當接收方來不及處理接收的數據的時候就適當放低發送速度

停止等待協議

停止等待,顧名思義,就是在發送完一個分組之後就停止發送分組,等待對方的確認。於是在這個的基礎上有三種可能。

  1. 正常發送,並確認
    在這裏插入圖片描述
  2. 發送的報文丟失
    這種情況,一般停止等待協議會在報文發送之前,設立一個 計時器,當計時器結束後仍然沒有收到B發來的確認報文,就可以認爲發送的報文丟失了,於是進行重傳。
    在這裏插入圖片描述
  3. 對方的確認報文並沒有丟失,只是遲到了
    這個時候,A接收到確認報文,並丟棄。
    在這裏插入圖片描述
    如果A總是重傳分組,且總是收不到對方的確認,就可以認爲此時網絡線路太差,不能通信。

連續的ARQ協議

剛剛上述所說的,當報文丟失或者發送方未收到確認的時候,就自動重傳丟失的報文,這種協議稱爲自動請求重傳協議,簡稱ARQ協議
但是如果每發送一次報文都要等待計時器的計時後纔可以發送下一個,這樣效率太低。
在這裏插入圖片描述
如果一次性發送方發送多個報文,而不用每發一次就等待下來一個確認,這樣信道上就一直有數據傳輸,傳輸的速率更快。(類比計算機組成原理中的指令流水線就很好理解)。
在這裏插入圖片描述
這種採用流水線傳輸的協議,稱爲連續的ARQ協議

連續的ARQ協議

即使採用一次性發送多個報文的方式,也不能無限制一次性發送多少個報文。發送窗口,就是一次性可以連續發送多少個報文而不用等待確認。例如下圖中,位於發送窗口的5個分組都可以同時發送:
在這裏插入圖片描述
當發送方收到確認後,就把發送窗口往前挪一個分組的位置。
在這裏插入圖片描述
當5個分組都收到確認的時候,窗口到了6-10之間。於是重複上述操作。
一般的,接收方會只發送最後收到的分組的確認(上訴例子中是對5的確認),表明5之前的所有報文都正確接收了。這樣的確認方式稱爲累計確認
這個時候考慮這樣的情況,假如之前的5個分組都發出去了,但是其中的3分組丟失了,這樣根據累計確認的規則,發送方返回2的確認,也就是表明3-5這三個分組可能都沒有收到。這個時候,只好把後面3個分組再重傳一次。這種重傳叫做get-backN。即退回來重傳已經發過的N個分組(即使分組4,分組5已經收到,只是3沒有收到)。

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