TCP(Transmission Control Protocol) 傳輸控制協議。服務器
是面向鏈接的,可靠的,基於字節流的傳輸層協議。網絡
一.鏈接創建 spa
TCP是傳輸層協議,使用三次握手協議創建鏈接操作系統
二.確認機制blog
TCP將每一個字節的數據都進行了編號, 即爲序列號。io
每個ACK都帶有對應的確認序列號, 意思是告訴發送者, 我已經收到了哪些數據; 下一次你要從哪裏開始發. class
三.重傳機制服務器端
Linux中(BSD Unix和Windows也是如此), 超時以500ms爲一個單位進行控制, 每次斷定超時重發的超時時間都是500ms的整數倍. im
若是重發一次以後, 仍然得不到應答, 等待 2*500ms 後再進行重傳. 若是仍然得不到應答, 等待 4*500ms 進行重傳.
依次類推, 以指數形式遞增. 累計到必定的重傳次數, TCP認爲網絡異常或者對端主機出現異常, 強制關閉鏈接.數據
四.滑動窗口
窗口大小指的是無需等待確認應答就能夠繼續發送數據的最大值.
操做系統內核爲了維護這個滑動窗口, 須要開闢發送緩衝區來記錄當前還有哪些數據沒有應答 。只有ACK確認應答過的數據, 才能從緩衝區刪掉.
五.擁塞控制機制
發送開始的時候, 定義擁塞窗口大小爲1;
每次收到一個ACK應答, 擁塞窗口加1;
每次發送數據包的時候, 將擁塞窗口和接收端主機反饋的窗口大小作比較, 取較小的值做爲實際發送的窗口
當TCP開始啓動的時候, 慢啓動閾值等於窗口最大值
在每次超時重發的時候, 慢啓動閾值會變成原來的一半, 同時擁塞窗口置回1
擁塞控制, 歸根結底是TCP協議想盡量快的把數據傳輸給對方, 可是又要避免給網絡形成太大壓力的折中方案.