TCP協議保證資料傳輸可靠性的機制

2021-09-12 14:05:02 字數 2234 閱讀 6568

tcp協議保證資料傳輸可靠性的機制(一)

1、確認應答機制

1.1原理:

傳送方與接收方傳輸資料時,為了保證資料一定會傳送給接受方,tcp協議規定接受方接收到資料後需要給傳送方乙個接受到資料的通知,若是傳送方沒有接收到接受方的確認報文,傳送方認為資料沒有傳送到,就會重新傳送資料。

1.2序列號:tcp將每個位元組的資料都進行了編號

因為網路傳輸資料是不能保證傳送順序的,即使是客戶端有序的傳送資料,伺服器端接受到的資料也有可能無序,因此為了保證有序,tcp的包頭中儲存傳送資料的序列號,告訴接受端讀取資料的順序

1.3確認序列號:

確認序號是傳送方傳送資料最高序號加1,作用是對已經接收到的資料進行確認,並告知對方下次傳送資料的位置

2、超時重傳機制:

確認應答機制中主機a給主機b傳送資料後,資料可能會在傳送途中丟失,資料無法到達主機b,為了保證資料的可靠性,tcp中引用了超時重傳機制。

2.1原理:

tcp每傳送乙個報文段,就會對這個報文段設定一次計時器,只要計時器設定的重傳時間到,但傳送端還沒有收到接收端發來的確認,此時就會重傳此報文段。

2.2傳送方未接收到資料有兩種情況:

2.2.1傳送方傳送的資料在傳送途中丟失

這種情況下,傳送方在一段時間後重新傳送就行

2.2.2接受方接收到資料後,傳送的確認資料在傳送途中丟失

因此,傳送方重新傳送的資料就會重複,tcp協議需要能夠識別出哪些包是重複的,並且把重複的丟棄掉,這時前面提到的序列號就可以很容易做到去重的效果

2.3超時重傳的時間確認:

最理想的狀態下找到乙個最小的時間,保證」確認應答一定能在這個事件內返回「,但是這個時間的長短會隨著網路環境的不同,是有差異的。如果事件設定的太長,會影響整體的傳輸效率;如果設定的事件過短,有可能會頻繁傳送重複的包。

為了保證在任何環境下都有比較高效效能的通訊,因此tcp會動態的計算這個最大超時時間

超時以500ms為乙個單位進行控制,每次判定超時重發的超時時間都是500ms的整數倍

如果重發一次後,仍然得不到應答,等待2*500ms後再進行重傳

如果仍然得不到應答,等待4*500ms進行重傳,依次類推,以指數形式遞增

累計到一定的重傳次數,tcp認為網路或者對端主機出現異常,強制關閉連線

3、流量控制

接收端處理資料是有限的,如果傳送的太快,導致接收端的緩衝區被充滿,這個時候如果傳送端繼續傳送,就會造成丟包,繼而引起丟包重傳等一系列的連鎖反映,因此tcp支援根據接收端的處理能力來決定傳送端的速度,這個機制就叫做流量控制(flow control)

接收端將自己可以接收的緩衝區大小放入 tcp 首部中的 「視窗大小」 字段, 通過ack端通知傳送端;

視窗大小欄位越大, 說明網路的吞吐量越高;

接收端一旦發現自己的緩衝區快滿了, 就會將視窗大小設定成乙個更小的值通知給傳送端;

傳送端接受到這個視窗之後, 就會減慢自己的傳送速度;

如果接收端緩衝區滿了, 就會將視窗置為0; 這時傳送方不再傳送資料, 但是需要定期傳送乙個視窗探測資料段, 使接收端把視窗大小告訴傳送端

4、擁塞控制

tcp通過滑動視窗,能夠高效可靠的傳送大量資料,但是如果剛開始就傳送大量的資料,就會產生一些問題。由於網路中有大量的計算機,可能當前網路狀態就已經比較擁堵,在不清楚網路狀態的情況下,貿然傳送大量的資料可能會使得網路更加擁堵,使得資料傳送不了。因此,為解決此問題,tcp引入了慢啟動機制,先傳送少量的資料,探探路,摸清當前的網路狀態,在決定按照多大的速度傳送傳輸資料。

此處引入擁塞視窗,在資料剛開始傳送時先定義擁塞視窗的大小是1,每次接收乙個ack應答,擁塞視窗變為原來的2倍,每次傳送數包的時候,將擁塞視窗和接受端主機反饋的視窗大小做對比,取較小的值作為實際傳送的視窗大小

像上面的擁塞視窗增長速度是指數級別的,「慢啟動」指初始時慢,但是增長速度非常快

tcp連線管理

tcp報頭介紹

TCP協議 如何保證傳輸可靠性

tcp協議保證資料傳輸可靠性的方式主要有 校驗和 序列號 確認應答 超時重傳 連線管理 流量控制 擁塞控制 計算方式 在資料傳輸的過程中,將傳送的資料段都當做乙個16位的整數。將這些整數加起來。並且前面的進製不能丟棄,補在後面,最後取反,得到校驗和。傳送方 在傳送資料之前計算檢驗和,並進行校驗和的填...

TCP 保證傳輸可靠性

tcp協議保證資料傳輸可靠性的方式主要有 計算方式 在資料傳輸的過程中,將傳送的資料段都當做乙個16位的整數。將這些整數加起來。並且前面的進製不能丟棄,補在後面,最後取反,得到校驗和。傳送方 在傳送資料之前計算檢驗和,並進行校驗和的填充。接收方 收到資料後,對資料以同樣的方式進行計算,求出校驗和,與...

TCP協議如何保證傳輸的可靠性

tcp提供一種面向連線的 可靠的位元組流服務。面向連線 意味著兩個使用tcp的應用 通常是乙個客戶和乙個伺服器 在彼此交換資料之前必須先建立乙個tcp連線。在乙個tcp連線中,僅有兩方進行彼此通訊。廣播和多播不能用於tcp。tcp通過下列方式來提供可靠性 1 應用資料被分割成tcp認為最適合傳送的資...