您好,登錄后才能下訂單哦!
小編給大家分享一下TCP的可靠傳輸原理是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
TCP下面的IP層是盡最大努力的交付,是不可靠的,所以TCP需要靠自己去完成可靠傳輸。下面,我們先從簡單的停止等待協議來講解可靠傳輸的如何實現的。需要注意可靠傳輸的幾個特點:不丟失、不重復、按序到達。
注意,TCP并不使用停止等待協議來實現可靠傳輸。
停止等待協議
傳輸層的數據傳輸單元稱為段。下面,為了方便,都稱為分組。
停止等待協議的原理非常簡單,發送一個分組后就停止繼續發送,等待收到上一個分組的確認后,再繼續發送后面的分組。
下面通過幾個不同情況來分析:
無差錯情況
無差錯情況非常簡單,如下圖。每發送完一個分組后,就停止發送,等待收到該分組的確認后,再繼續發送后面的分組。
出現差錯
出現差錯分兩種情況,第一種是發送的分組沒有交付成功到目的地址,另一種情況是傳送的數據包有差錯。通過圖例,我們來分析兩種情況
首先來看看B的操作:A發送M1分組,該分組如果是錯誤的,B收到后會丟棄該數分組,然后什么也不做(不會通知A收到了錯誤分組)。如果B沒有收到M1分組,那么它什么也不知道,也不會去做任何動作。
接下來看A是如何做的:A發完分組后,遲遲收不到B對M1分組的確認后,當等待的時間超時了,那么就需要重新發送該M1分組。要實現超時重傳,就需要設置一個超時計時器,當發送的一個分組在超時時間前收到了確認,那么就重置超時計時器,否則的話就需要重傳分組。
有幾點是需要注意的:
A在發送完一個分組后,必須還要保存該分組的副本,以便超時重傳。當收到這個分組的確認后,就可以丟棄該分組的副本了。
需要給每一個分組做編號,這樣才知道是各個分組的到達情況。
超時時間應該設置的比平均傳輸時間稍長一些,以免引起不必要的重傳。
確認丟失和確認遲到
除了分組在傳送過程中會出現差錯,在返回確認的時候,也會出現差錯——確認丟失和確認遲到。
首先看確認丟失情況,A的分組B收到了,并給A發送了確認,但該確認丟失了,A沒有收到。因為A沒有收到M1的確認,那么等待超過超時后,就會向B重傳M1。這個時候B收到了重復的分組M1,需要做兩個操作:
將重復的分組M1丟棄
向A發送M1的確認。因為既然A重傳了M1,就表示A沒有收到M1的分組。所以B需要繼續發送對M1的確認。
再來看另一種情況,對M1的分組確認遲到了(超過超時時間后才收到)。A在收到重復的確認后,會丟棄,其他什么也不做。
通過上述的超時重傳機制,就可以實現在不可靠的網絡傳輸上實現可靠的傳輸。
信道利用率
上述的停止等待協議簡單,但它有一個非常大的缺點——信道的利用率太低。在等待收到確認的這段時間,信道是完全空閑的,十分浪費。
為了提高信道利用率,可以使用流水線傳輸,流水線傳輸可以連續發送多個分組,這樣就可以大大提高信道利用率了。
采用流水線傳輸的協議有連續ARQ協議和窗口滑動協議。而TCP就是采用滑動窗口協議來完成可靠傳輸的。
看完了這篇文章,相信你對TCP的可靠傳輸原理是什么有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。