TCP如何保證傳輸可靠性

2022-06-25 17:54:10 字數 1141 閱讀 3117

資料傳輸的可靠性主要可以分為以下幾個方面:

校驗和將資料段分為多個16位的整數,進行相加

前面的進製補在後面,最後取反,得到校驗和

傳送方在傳送資料前計算校驗和,接收方收到資料後以同樣的方式計算

若校驗和不一致,則資料傳輸一定有誤

累積確認(ack)和序列號(seq)

在進行tcp傳輸時,根據位元組對報文段進行編號,作為頭部seq欄位的值

每次接收方收到資料後,都會返回確認應答,若返回ack(n),則說明序列號小於n的報文段都已經被成功接收,並表示期望下乙個報文段的序列號為n

同時,接收方可以根據序列號對報文段進行排序,去除具有相同序列號的資料

超時重傳

傳送方在傳送完資料後,若在設定的時間內沒有收到ack應答,就重新傳送剛剛的資料

(若傳送方收到的ack最大值為n,則從序列號為n的資料開始 進行重新傳輸)

流量控制

如果傳送方的傳送速度太快,可能會導致接收方的接收緩衝區很快被填滿

之後到達接收方的資料都會丟包,這樣就會引起大量的超時重傳

因此,在tcp報文段的頭部維護乙個名為「receive window」的字段

用於表示接收方的接收緩衝區的剩餘大小

接收方在返回ack應答時,將自己的即時視窗大小填入,連同ack報文一起傳送過去

傳送方根據視窗大小的值,調整自己的傳送速度

如果傳送方收到ack後,發現receive window值為0,就會停止傳送資料

並定期向接收方傳送視窗探測資料段,詢問接收方的視窗大小

擁塞控制

如果在網路擁堵的情況下,傳送方仍然傳送大量資料,就會加劇網路的擁堵,造成大量的丟包

因此,tcp引入了慢啟動的機制

傳送方維護乙個擁塞視窗(cwnd),用於限制傳送速率(cwnd越大,每次可傳送的資料量越大)

剛開始傳輸時,讓cwnd從1個mss開始,以指數級的速度增長

同時設定乙個閾值,當cwnd超過閾值時,轉變為線性增長

還有以下2種情況會馬上調整cwnd的大小

傳送方接收到3個冗餘的ack(n):設定閾值為當前cwnd的一半,進入快速恢復模式(快速重傳序列號大於等於n的資料)

傳送方等待ack超時:說明網路嚴重擁堵,設定閾值為當前cwnd的一半,並重新開始慢啟動

TCP如何保證可靠性傳輸

校驗和 在資料傳輸的過程中,將傳送的資料段都當做乙個16位的整數。將這些整數加起來。並且前面的進製不能丟棄,補在後面繼續相加,最後取反,得到校驗和。傳送方 在傳送資料之前計算檢驗和,並進行校驗和的填充。接收方 收到資料後,對資料以同樣的方式進行計算,求出校驗和,與傳送方的進行比對。注意 如果接收方比...

TCP如何保證傳輸可靠性

網路層 ip 出現很多問題,比如丟包 亂序 重複等。tcp怎麼確保可靠性呢?1 應用資料被分割成tcp認為最合適傳送的資料塊 2 當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。3 當tcp收到發自tcp連線另一端的資料,它將傳送乙個...

TCP 保證傳輸可靠性

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