計算機網路之八:TCP協議(2) TCP可靠傳輸的實現

百聯達發表於2018-09-20

一.以位元組為單位的滑動視窗

在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.隨機早期檢測

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2214613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章