計算機網路中可靠傳輸的3種機制

2021-10-04 20:37:56 字數 2814 閱讀 8560

​ 傳送方給接收方傳送資料分組,接收方收到後對其進行差錯檢測。若沒有誤碼,則接收該資料分組,並給傳送方傳送確認分組,簡稱為ack。傳送方收到對所傳送資料分組的確認分組後,才能傳送下乙個資料分組。若檢測到誤碼,則丟棄該分組,並給傳送方傳送否認分組,簡稱為nak,傳送方收到對所傳送資料分組的否認分組後,立刻重傳該資料分組。傳送方傳送乙個資料分組後,並不能立刻將該分組從快取中刪除,只有在收到針對該資料分組的確認分組後,才能將其從快取中刪除,並傳送下乙個分組。

​ 若傳送分組在傳輸的過程中丟失了,接收方收不到資料分組,就不會傳送ack或nak,傳送方就會一直處於等待接收方ack或nak的狀態。

​ 為解決該問題,可在傳送方傳送完乙個資料分組時,啟動乙個超時計時器。若到了超時計時器所設定的重傳時間而傳送方仍收不到接收方的任何ack或nak,則重傳原來的資料分組,即超時重傳

​ 一般將重傳時間設為略大於從傳送方到接收方的平均往返時間。

​ 既然傳送方傳送的資料分組可能丟失,那麼接收方傳送的確認或否認分組也就有可能丟失,從而造成傳送方對之前所傳送資料分組的超時重傳。假設該重傳的資料分組正確到達了接收方,則接收方如何判斷該資料分組是否是乙個重複的分組呢?

​ 為避免分組重複這種錯誤,必須給每個資料分組帶上序號。對於停止-等待協議,由於每傳送乙個資料分組就停止等待,只要保證每傳送乙個新的資料分組,其傳送序號與上次傳送的資料分組的序號不同就可以了,因此用乙個位元來編號足夠了。

​ 接收方丟棄重複的資料分組,並給傳送方傳送針對該資料分組的確認分組,以免傳送方對該資料分組的再次超時重傳。傳送方收到針對0號資料分組的確認分組,就可以傳送下乙個資料分組了,其序號為1。

​ 既然資料分組需要編號,確認分組是否需要編號呢?傳送方傳送0號資料分組,接收方正確接收後給傳送方傳送確認分組。由於某些原因,該確認分組遲到了。這會導致傳送方對0號資料分組的超時重傳。在重傳的0號資料分組的傳輸過程中,傳送方收到了遲到的確認分組,於是傳送1號資料分組。接收方收到重傳的0號資料分組後,發現這是乙個重複的資料分組,將其丟棄。並針對該資料分組,給傳送方傳送確認分組,以免傳送方再次超時重傳該資料分組。那麼問題來了,傳送方如何知道這是對0號資料分組的重複確認還是對1號資料分組的確認呢? 如果對確認分組也進行編號,就可以使傳送方避免這種誤判。

​ 停止-等待協議的通道利用率

​ 當往返時延rtt遠大於資料幀傳送時延時(如使用衛星鏈路), 通道利用率非常低。若出現重傳,則對於傳送有用的資料資訊來說,通道利用率還要降低。為了克服停止-等待協議通道利用率很低的缺點,就產生了另外兩種協議,即後退n幀協議gbn和選擇重傳協議sr。

​ 傳送視窗尺寸wt的取值範圍是1 < wt <= 2^n - 1,其中,n是構成分組序號的位元數量。wt = 1 停止-等待協議;wt > 2^n - 1,接收方無法分辨新舊資料分組。

​ 傳送方可在未收到接收方確認分組的情況下,將序號落在傳送視窗內的多個資料分組全部傳送出去;傳送方只有收到對以傳送資料分組的確認時,傳送視窗才能向前相應滑動;傳送方收到多個重複確認時,可在重傳計時器超時前盡早開始重傳,由具體實現決定;傳送方傳送視窗內某個已傳送的資料分組產生超時重發時,其後續在傳送視窗內且已傳送的資料分組也必須全部重傳。

​ 接收方的接收視窗尺寸wr的取值範圍是wr = 1,因此接收方只能按序接收資料分組;接收方只接收序號落在接收視窗內且無誤碼的資料分組,並且將接收視窗向前滑動乙個位置,與此同時給傳送方發回相應的確認分組。為了減少開銷,接收方不一定每收到乙個按序到達且無誤碼的資料分組就給傳送方發回乙個確認分組,而是可以在連續收到好幾個按序到達且無誤碼的資料分組後,才針對最後乙個資料分組傳送確認分組,稱為累計確認;或者可以在自己有資料分組要傳送時才對之前按序接收且無誤碼的資料分組進行捎帶確認。接收方收到未按序到達的資料分組,除丟棄外,還要對最近按序接收的資料分組進行確認。

​ 回退n幀協議的接收視窗尺寸wr只能等於1,因此接收方只能按序接收正確到達的資料分組。乙個資料分組的誤碼就會導致其後續多個資料分組不能被接收方按序接收而丟棄。這會造成傳送方對這些資料分組的超時重傳,這是對通訊資源的極大浪費。

​ 選擇重傳協議是指為了進一步提高效能,可設法只重傳出現誤碼的資料分組。因此,接收視窗的尺寸應大於1,以便接收方先收下失序到達但無誤碼且序號落在接收視窗內的那些資料分組,等到所缺分組收齊後再一併送給上層。

傳送視窗尺寸wr的取值範圍為1 < wt <= 2^(n - 1),其中,n是構成分組序號的位元數量。

​ 傳送方可在未收到接收方確認分組的情況下,將序號落在傳送視窗內的多個資料分組全部傳送出去;傳送方只有按序收到對已傳送資料分組的確認時,傳送視窗才能向前相應滑動;若收到未按序到達的確認分組時,對其進行記錄,以防止其相應資料分組的超時重發,但傳送視窗不能向前滑動。

接收視窗尺寸wr的取值範圍是1 < wr <= wt

​ 接收方可接收未按序到達但沒有誤碼且序號落在接收視窗內的資料分組;為了使傳送方僅重傳出現差錯的分組,接收方不能再採用累積確認,而需要對每個正確接收到的資料分組進行逐一確認。接收方只有在按序接收資料分組後,接收視窗才能向前相應滑動。

參考

b站:計算機網路微課堂

計算機網路3 可靠傳輸

title 計算機網路3 可靠傳輸 mathjax true date 2020 03 19 13 33 04 categories 計算機網路 tags 計算機網路 keywords 計算機網路 不可靠傳輸,voice over ip dns rpc dhcp?16位源埠,16位目標埠,16位ud...

計算機網路 網路傳輸

在計算機網路中,用的最多的就數tcp和udp。兩者的作用都是供網路進行傳輸的協議,而兩者在原理上又有所不同。簡而言之,tcp是面向連線的資料流傳輸,而udp是非面向連線的 不可靠的傳輸方式。物理層 中繼器 集線器所在層。通過媒介傳輸bit資料,確定電氣 機械等規範。資料鏈路層 網橋 交換機所在層。將...

計算機網路 TCP如何保證可靠傳輸

tcp 協議如何保證可靠傳輸?1 資料被分割成資料塊。2 tcp 給傳送的每 個包編號,接收 對包排序,把有序資料傳給應 層。3 校驗和 保持 部和資料的檢驗和。如果收到報文段的檢驗和有錯,將丟棄且不確認收到該報 段。4 接收端丟棄重複資料。5 流量控制 利 滑動窗 實現,只允許傳送 接收端緩衝區 ...