TCP协议连接的11种状态浅谈
生活随笔
收集整理的這篇文章主要介紹了
TCP协议连接的11种状态浅谈
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
了解TCP的協議可以在很大程度上幫助我們分析服務器當前的TCP連接狀態,同時也是排查一些網絡故障的基礎,首先來看一下TCP協議的三次握手與四次斷開。 TCP協議三次握手 ? 1.客戶端首先發起連接,也就是第一次握手,處于SYN_SENT狀態。 2.服務器端收到SYS 數包,立即發送ACK 應答,并發送自己的SYN(第二次握手);狀態被置為SYN_RECEIVED。 3.客戶端接收到服務器端的應答,將自己置于ESTABLISHED,表示已經準備就緒,同時發出ACK 應答(第三次握手)。 4.服務器端接收到應答,立即將自己置于ESTABLISHED 狀態,開始發送數據。 數據傳輸keepalive ? 中間的這段時間可以稱之為連接保持階段,既服務器端與數據段正在傳輸數據。 TCP協議四次揮手 ? 1.客戶端接收完數據后,發送FIN,同時將自己置于FIN_WAIT_1 狀態,等待服務器端的應答。 2.服務器端收到關閉請求,將自己置于CLOSE_WAIT,等待本地用戶(進程)的關閉命令。同時發送應答告訴客戶端可以關閉,并且自己也向客戶端請求關閉,發出后將自己從CLOSE_WAIT 變遷到LAST_ACK 狀態,等待客戶端應答后由本地用戶(進程)執行關閉操作。 3.客戶端在接到服務的應答后,將自己的狀態置于FIN_WAIT_2,等到服務器段發出FIN( 關閉請求), 當接收到服務器端發來的FIN 之后, 將自己置于TIME_WAIT(因為是客戶端發起的關閉所以是TIME_WAIT,如果是服務器端發起的關閉,那么我們看到的將是CLOSE_WAIT。CLOSE_WAIT 是我們在瀏覽網頁時經常看到的狀態,因為網頁傳輸完成后通常由服務器發起關閉命令),等待一定的時間以確保服務器接收到應答。 TCP協議的11種狀態 ? LISTEN:等待從任何遠端TCP 和端口的連接請求。 SYN_SENT:發送完一個連接請求后等待一個匹配的連接請求。 SYN_RECEIVED:發送連接請求并且接收到匹配的連接請求以后等待連接請求確認。 ESTABLISHED:表示一個打開的連接,接收到的數據可以被投遞給用戶。連接的數據傳輸階段的正常狀態。 FIN_WAIT_1:等待遠端TCP 的連接終止請求,或者等待之前發送的連接終止請求的確認。 FIN_WAIT_2:等待遠端TCP 的連接終止請求。 CLOSE_WAIT:等待本地用戶的連接終止請求。 CLOSING:等待遠端TCP 的連接終止請求確認。 LAST_ACK:等待先前發送給遠端TCP 的連接終止請求的確認(包括它字節的連接終止請求的確認) TIME_WAIT:等待足夠的時間過去以確保遠端TCP 接收到它的連接終止請求的確認。 CLOSED:不在連接狀態(這是為方便描述假想的狀態,實際不存在) 寫在最后 ? 熟悉掌握TCP/IP協議是作為一名出色的網絡工程師必備的技能,等有時間我也要好好溫習下這門功課了,因為不管是在平時管理網絡當中,還是在處理系統錯誤的過程中,掌握這些協議真的是很有用。 原創文章首發自阿布的博客,轉載請注明,本文地址:http://www.abuve.com/294.html
轉載于:https://blog.51cto.com/abuve/611468
總結
以上是生活随笔為你收集整理的TCP协议连接的11种状态浅谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公司A、公司B、公司C……
- 下一篇: VC中BSTR和CString的使用