停止等待協議真的百分百的可靠嗎?

時間 2021-10-23 09:21:26

1樓:lele

在《可靠傳輸概述》中簡單了解了什麼是可靠傳輸,這裡來介紹實現可靠傳輸的第一種方法——停止-等待協議。

傳送方給接收方傳送資料分組(DATA),

接收方收到後對其進行差錯檢測,若沒有誤碼,則接收該資料分組,並給傳送方傳送確認分組(ACK)

傳送方收到對傳送的資料分組(DATA)所對應的確認分組(ACK)後,才能傳送下乙個資料分組(DATA),假設這個DATA在傳輸過程中出現了誤碼

接收方收到後對其進行差錯檢測,發現了誤碼,則丟棄該資料分組,並給傳送方傳送否認分組(NAK)

由此可知,傳送方每傳送完乙個資料分組DATA後,就要停止傳送DATA,等待ACK到達之後才能傳送下乙個DATA

如果傳送方傳送的第乙個DATA在傳輸過程中丟失了,又會出現什麼情況?

(對於資料鏈路層,點對點通道而言,不太容易出現這樣的情況,但對多個網路,通過多個路由器,互連到複雜網際網路環境而言,這種情況是會經常出現的)

接收方收不到資料分組,就不會傳送ACK或NAK,如果不採取其他措施,傳送方就會一直處於等待接收方ACK或NAK的狀態

為了解決該問題,可以在傳送方傳送完乙個資料分組時,啟動乙個超時計時器,若到了超時計時器所設定的重傳時間,而傳送方仍收不到接收方的任何ACK或者NAK,則重傳原來的DATA,這就是超時重傳

一般可將超時重傳時間選為略大於「從傳送方到接收方的平均往返時間」

傳送方超時重傳DATA後,接收方給傳送方傳送ACK,接收方收到ACK後,給傳送方傳送下乙個DATA,接收方給傳送方回覆ACK

傳送方傳送的DATA可能丟失,那麼接收方傳送的ACK也可能丟失

假設傳送方傳送了DATA,接收方正確接收該分組後,給傳送方傳送ACK,但該ACK在傳輸過程中丟失了,這必然導致傳送方對之前傳送的DATA超時重傳,假設這個超時重傳的DATA也正確到達了接收方,那麼接收方該如何判斷,該DATA是否為重複的DATA呢?

為了避免分組重複這種傳輸錯誤,必須給每個分組帶上序號

對於停止-等待協議,由於每傳送乙個DATA就停止等待,只要保證每傳送乙個新的DATA,其傳送序號與上次傳送的DATA序號不同就可以了,因此,用乙個位元來編號就可以了(0或1)

例如,這個給DATA新增1個位元的序號,根據DATA的序號,接收方就能判斷,接收到的分組是否為重複的。

接收方丟棄重複的DATA,並給傳送方傳送該DATA的ACK,一面傳送方再對DATA的超時重傳。當接收到ACK,傳送方就可以傳送下乙個DATA了,接收方返回ACK

既然DATA需要編號,那麼ACK是否也要編號呢?

傳送方給接收方傳送DATA0,接收方正確接收後返回ACK,由於某些原因,ACK有所延誤,導致傳送方重傳DATA0,而後傳送方收到延誤的ACK(對應DATA0),於是傳送方傳送DATA1,接收方接收到DATA0後,丟棄後面的重複分組DATA0,並針對該DATA0傳送ACK,以免傳送方再次超時重傳該DATA0。

這裡存在乙個對DATA0的重複確認ACK,但是傳送方又該如何知道呢?如果不採取措施,傳送方可能認為這是對DATA1的確認

如果給ACK編號,如果收到重複的ACK,就可以忽略,當接收到ACK1,就可以傳送下乙個DATA。

對於資料鏈路層點對點通道,往返時間比較固定,不會出現確認遲到的情況。如果只在資料鏈路層實現停止-等待協議,可以不用給ACK編號。

接收端檢測資料分組有誤碼時,將其丟棄並等待傳送方的超時重傳,但對於誤位元速率較高的點對點鏈路,為使傳送方盡早重傳,也可以給傳送方傳送NAK分組

為了讓接收方能夠判斷所受到的資料分組是否是重複的,需要給資料分組編號,由於停止-等待協議的停等特性,只需要1位元編號就可以了,即編號0或1

為了讓傳送方能夠判斷受到的ACK分組是否是重複的,需要給ACK分組編號,所用位元數量與資料分組所用位元數量一樣,資料鏈路層一般不會出現ACK分組遲到的情況,因此在資料鏈路層實現該協議可以不用給ACK分組編號

超時計時器設定的重傳時間應仔細選擇,一般可以將重傳時間選為略大於「從傳送方到接收方的平均往返時間」

假設收發雙發之間是一條直通通道,傳送方傳送完乙個資料分組後就停止傳送,並等待接收方對該分組的確認,接收到確認分組後,可以傳送下乙個資料分組

:傳送資料分組的時延(傳送時延)

RTT:收發雙發之間的往返時間

:傳送確認分組的時延

這裡略略了傳送方對確認分組的處理時延,忽略了接收方對資料分組的處理時延

當往返時延RTT遠大於資料幀傳送時延時(如衛星鏈路),通道利用率非常低

若出現重傳,則對於傳送有用的資料資訊來說,通道利用率還要降低

為了克服停止-等待協議通道利用率很低的缺點,就產生了另外兩個協議:後退N幀協議GBN和選擇重傳協議SR

2樓:朱寧

你先看看tcp的協議,讀懂tcp結構。不會出現你說的那個情況。前邊的得不到確認回執,後邊的不會發出同樣的,不是01交替這麼簡單。

如下圖這樣和打桌球一樣,不斷加1。還有你的乙個習慣不好,一般畫bit都是橫著畫每32bit一行,請參考RFC。

來自維基百科

平安人壽的守護百分百,值得買嗎

小喵咪 任何乙個保險產品都沒有虧不虧這一說,主要還是看自己需求吧。個人覺得平安人壽的守護百分百是值得購買的。保險產品如果自己不喜歡不代表這個保險差,而是沒有達個人所需而已。首先個人認為,守護百分百適合那些既想保障重疾,又想投資理財的小夥伴。適合那些一下子交不了太多錢,存款並不是太寬裕,又想要乙份保障...

戀愛中有必要要求男生百分百誠實嗎?

菊花俠村長 不要去要求,可以去引導 首先,說晚安後,又去打遊戲這個問題,如果你以這個問題去和他吵架,這樣是絕對錯誤的方式,這樣對方首先會評判標準,他為什麼會在說晚安後自己又去打遊戲,本身在對方角度覺得沒有問題,但是如果因為他覺得沒有問題的事情你們爭吵了,他就會覺得影響到雙方的感情了,那麼不解決這個根...

平安守護百分百有哪些優勢?值得購買嗎?

雞翅看世界 優勢是,可以在約定的年齡,比如說70歲,拿回已交的所有保費,一分不少,當然,也一分不多。在拿回保費後,後續保障依然有,但也只有,120種重疾賠1次,或者身故賠。重疾賠,或者身故賠,二選一。以上所謂 利益最大化 的前提是,到70歲,都沒有出險。如果70歲前出險,保費也是拿不回來的。如果我們...