轉載於:https://blog.csdn.net/liuchenxia8/article/details/80428157
TCP協議傳輸的特點主要就是面向字節流、傳輸可靠、面向連接。
TCP保證數據可靠傳輸的方式主要有以下六點:校驗和、確認應答與序列號、超時重傳、連接管理、流量控制、擁塞控制。
1、校驗和
在數據傳輸的過程中,將發送的數據段都當做一個16位的整數。將這些整數加起來。並且前面的進位不能丟棄,補在后面,最后取反,得到校驗和。發送方在發送數據之前計算校驗和,並進行校驗和的填充。接收方收到數據后,對數據以同樣的方式進行計算,求出校驗和,與發送方的進行比對。
注意:如果接收方比對校驗和與發送方不一致,那么數據一定傳輸有誤。但是如果接收方比對校驗和與發送方一致,數據不一定傳輸成功。
2、確認應答與序列號
序列號:TCP傳輸時將每個字節的數據都進行了編號,這就是序列號。
確認應答:TCP傳輸的過程中,每次接收方收到數據后,都會對傳輸方進行確認應答。也就是發送ACK報文。這個ACK報文當中帶有對應的確認序列號,告訴發送方,接收到了哪些數據,下一次的數據從哪里發。
序列號的作用不僅僅是應答的作用,有了序列號能夠將接收到的數據根據序列號排序,並且去掉重復序列號的數據。這也是TCP傳輸可靠性的保證之一。
3、超時重傳
簡單理解就是發送方在發送完數據后等待一個時間,時間到達沒有接受到ACK報文,那么對剛才發送的數據進行重新發送。由於TCP傳輸時保證能夠在任何環境下都有一個高性能的通信,因此這個最大超時時間(也就是等待時間)是動態計算的。
4、連接管理
連接管理就是三次握手和四次揮手的過程,保證可靠的連接,是保證可靠性的前提。
5、流量控制
接收端在接收到數據后,對其進行處理。如果發送端的發送速度太快,導致接收端的結束緩沖區很快的填充滿了。此時如果發送端仍舊發送數據,那么接下來發送的數據都會丟包,繼而導致丟包的一系列連鎖反應,超時重傳。而TCP根據接收端對數據的處理能力,決定發送端的發送速度,這個機制就是流量控制。
6、擁塞控制
TCP通過維護一個擁塞窗口來進行擁塞控制。網絡中沒有出現擁塞,擁塞窗口的值就可以再增大一些,以便把更多的數據發送出去。網絡出現擁塞,擁塞窗口的值就應該減小一些,以減少注入到網絡中的數據包數。