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