1. 程式人生 > >TCP協議總結

TCP協議總結

半連接 超過 大小 數據包 帶來 維護 nbsp p地址 問題:

TCP協議是有連接且可靠的傳輸層協議。所以一切都是圍繞面向連接和可靠展開的。

面向連接:

連接的建立:三次握手,標誌位的變化,及狀態變化。發送端狀態變化SYN_SENT-->ESTABLISHED;接收端狀態變化Listen-->SYN_RCVD-->ESTABLISHED。

引入的問題:SYN_FLOOD攻擊,偽裝IP地址向服務器端發送大量SYN,服務器端維護一個半連接隊列,耗盡其資源(服務器端要等待1+2+4+8+16+32=63s才會將這個請求移出隊列)。解決方法?

連接的保持:保活定時器。保持定時器(防止窗口更新報文丟失,窗口關閉時開啟計時,超時後連續三次主動探測接收端的窗口大小)。

連接的關閉:四次揮手。發送端狀態切換FIN_WAIT1-->FIN_WAIT_2(半關閉狀態,為何要有半關閉)-->TIME_WAIT(2MSL);接收端狀態切換CLOSE_WAIT-->LAST_ACK-->CLOSED

可靠:

ACK:確認報文保證不丟包。SACK

超時重傳:超過RTO沒有收到ACK就會重傳。

校驗和:其實UDP也有。檢驗和是一種比較弱的檢驗方法,其實二層已經做了CRC檢測,TCP的檢驗和有點冗余。

流量控制:滑動窗口,但又帶來了新的問題-網絡中小數據包太多,導致有效載荷太小了,導致SWS,收發兩端引入解決的方案,及Nagle算法。

擁塞控制:有四個算法分別在不同時期使用-慢開始(如何維護一個擁塞窗口cwnd),擁塞避免,快速重傳和快速恢復。

TCP協議總結