您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么進行TCP可靠傳輸的實現,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
一.以字節為單位的滑動窗口
在TCP里,接收端(B)會給發送端(A)報一個窗口的大小,叫Advertised window。
1.在沒有收到B的確認情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在
未收到確認之前都必須暫時保留,以便在超時重傳時使用。
2.發送窗口里面的序號表示允許發送的序號。顯然,窗口越大,發送方就可以在收到對方確認之前連續
發送更多數據,因而可能獲得更高的傳輸效率。但接收方必須來得及處理這些收到的數據。
3.發送窗口后沿的后面部分表示已發送且已收到確認。這些數據顯然不需要再保留了。
4.發送窗口前沿的前面部分表示不允許發送的,應為接收方都沒有為這部分數據保留臨時存放的緩存空間。
5.發送窗口后沿的變化情況有兩種:不動(沒有收到新的確認)和前移(收到了新的確認)
6.發送窗口前沿的變化情況有兩種:不斷向前移或可能不動(沒收到新的確認)
二.超時重傳時間的選擇
TCP的發送方在規定時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念很簡單,但重傳時間的選擇
確是TCP最復雜的問題之一。TCP采用了一種自適應算法,它記錄一個報文段發出的時間,以及收到相應的確認的時間
這兩個時間之差就是報文段的往返時間RTT。TCP保留了RTT的一個加權平均往返時間。超時重傳時間RTO略大于加權平均往返時間。
三:選擇確認SACK
如果收到的報文段無差錯,只是未按序號,中間還缺少一些序號的數據,那么能否設法只傳送缺少的數據而不重傳已經正確到達接收方的數據?
答案是可以的,選擇確認就是一種可行的處理方法。
如果要使用選項確認SACK,那么在建立TCP連接時,就要在TCP首部的選項中加上“允許SACK”的選項,而雙方必須都事先商定好。如果使用選擇確認,
那么原來首部中的“確認號字段”的用法仍然不變。SACK文檔并沒有明確發送方應當怎么響應SACK.因此大多數的實現還是重傳所有未被確認的數據塊。
四:TCP的流量控制
一般說來,我們總是希望數據傳輸的更快一些,但如果發送方把數據發送的過快,接收方就可能來不及接收,這會造成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
五:TCP的擁塞控制
在計算機網絡中的鏈路容量,交換節點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能
就要變壞。這種情況就叫做擁塞。
擁塞控制方法:
1.慢開始和擁塞避免
2.快重傳和快恢復
3.隨機早期檢測
上述內容就是怎么進行TCP可靠傳輸的實現,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。