在使用netstat發(fā)現(xiàn)有個(gè)State字段过蹂,于是腦補(bǔ)了下涮毫,發(fā)現(xiàn)水還是蠻深的畏铆,以前只了解三次握手争便、四次握手亏狰,并沒(méi)有了解其中的狀態(tài)稽犁,現(xiàn)在有幸能夠接觸熔号,大家可以直接Google搜索TCP狀態(tài)圖
依痊,會(huì)出現(xiàn)經(jīng)典的狀態(tài)圖蛙酪,如下:
image
我這里將對(duì)其進(jìn)行整理齐苛,方便大家理解,看圖前桂塞,先看下后面用到的術(shù)語(yǔ):
- S - 表示發(fā)送
- R - 表示接收
連接建立階段(三次握手)
CLOSED ESTABLISH
| |
|---------------- CLIENT ----------------|
| |
| SYN_SEND |
| | |
| | R: SYN ACK |
|------------->|------------------------>|
| S: SYN | S: ACK |
| | |
| |
| |
| |
|---------------- SERVER ----------------|
| |
| LISTEN SYN_RECV |
| | | |
| OPEN | R: SYN | R: ACK |
|------------->|------------->|--------->|
| | S: SYN ACK | |
| | | |
| | R: RST | |
| |<-------------| |
| | | |
- CLIENT - 客戶端
- SERVER - 服務(wù)端
- CLOSED - 關(guān)閉態(tài)
- ESTABLISH - 連接態(tài)
- LISTEN - 監(jiān)聽(tīng)?wèi)B(tài)(被動(dòng)打開(kāi))
- SYN_SEND - SYN發(fā)送態(tài)(已發(fā)送SYN)
- SYN_RECV - SYN接收態(tài)(已接收SYN凹蜂,并發(fā)送ACK)
- 三次握手: 客戶端發(fā)送SYN -> 服務(wù)端接收SYN,并發(fā)送SYN阁危、ACK --> 客戶端接收SYN玛痊、ACK,并發(fā)送ACK
- RST - 復(fù)位指令狂打,SYN_RECV在接收到RST可以回到LISTEN擂煞,主要用于處理異常連接,至于什么情況會(huì)出現(xiàn)RST菱父,可以點(diǎn)擊此傳送門
連接釋放階段(四次握手)
ESTABLISH CLOSED
| |
|--------------------- ACTIVE --------------------|
| |
| FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT |
| | | | |
| | R: ACK | R: FIN | 2MSL |
|------------->|----------->|--------->|--------->|
| S: FIN | | S: ACK | |
| | | | |
| | | | |
| | R: FIN ACK | |
| |---------------------->| |
| | S: ACK | |
| | | |
| | | |
| | CLOSING | |
| | R: FIN | R:ACK | |
| |----------->|--------->| |
| | S: ACK | | |
| |
| |
|-------------------- PASSIVE --------------------|
| |
| CLOSE_WAIT LAST_ACK |
| | | |
| R: FIN | | R: ACK |
|------------->|------------->|------------------>|
| S: ACK | S: FIN | |
| | | |
- ACTIVE - 主動(dòng)方
- PASSIVE - 被動(dòng)方
- CLOSED - 關(guān)閉態(tài)
- ESTABLISH - 連接態(tài)
- FIN_WAIT_1 - 主動(dòng)發(fā)送FIN
- CLOSE_WAIT - 收到FIN颈娜,并發(fā)送ACK
- FIN_WAIT_2 - 主動(dòng)發(fā)送FIN后,并接收到ACK
- LAST_ACK - 被動(dòng)方進(jìn)入CLOSE_WAIT后浙宜,再次發(fā)送FIN
- CLOSING - 當(dāng)發(fā)出FIN的時(shí)候同時(shí)收到FIN官辽,則進(jìn)入CLOSING態(tài)(同時(shí)關(guān)閉)
- TIME_WAIT - 等待結(jié)束態(tài)
- 2MSL - 2倍報(bào)文最大生存時(shí)間,為什么需要2倍粟瞬,因?yàn)楫?dāng)被動(dòng)方發(fā)現(xiàn)收不到ACK同仆,則會(huì)重發(fā)FIN,因此需要等待2倍MSL來(lái)預(yù)留需要再次發(fā)送ACK的時(shí)間
- 四次握手:主動(dòng)方發(fā)送FIN -> 被動(dòng)方接收FIN裙品,并發(fā)送ACK -> 被動(dòng)方發(fā)送FIN -> 主動(dòng)方接收FIN俗批,并發(fā)送ACK
其他
另外俗或,分享一篇文章《TCP 那些事》