TCP狀態(tài)轉(zhuǎn)移圖:
netstat -apn | grep client 查看客戶端網(wǎng)絡(luò)連接狀態(tài)
netstat -apn | grep port 查看端口的網(wǎng)絡(luò)連接狀態(tài)
TCP狀態(tài)時序圖:
結(jié)合三次握手、四次揮手 理解記憶。
1. 主動發(fā)起連接請求端:CLOSE -- 發(fā)送SYN -- SEND_SYN -- 接收 ACK、SYN -- SEND_SYN -- 發(fā)送 ACK -- ESTABLISHED(數(shù)據(jù)通信態(tài))
2. 主動關(guān)閉連接請求端:ESTABLISHED(數(shù)據(jù)通信態(tài)) -- 發(fā)送 FIN -- FIN_WAIT_1 -- 接收ACK -- FIN_WAIT_2(半關(guān)閉)
-- 接收對端發(fā)送 FIN -- FIN_WAIT_2(半關(guān)閉)-- 回發(fā)ACK -- TIME_WAIT(只有主動關(guān)閉連接方,會經(jīng)歷該狀態(tài))
-- 等 2MSL時長 -- CLOSE
3. 被動接收連接請求端:CLOSE -- LISTEN -- 接收 SYN -- LISTEN -- 發(fā)送 ACK、SYN -- SYN_RCVD -- 接收ACK -- ESTABLISHED(數(shù)據(jù)通信態(tài))
4. 被動關(guān)閉連接請求端:ESTABLISHED(數(shù)據(jù)通信態(tài)) -- 接收 FIN -- ESTABLISHED(數(shù)據(jù)通信態(tài)) -- 發(fā)送ACK
-- CLOSE_WAIT (說明對端【主動關(guān)閉連接端】處于半關(guān)閉狀態(tài)) -- 發(fā)送FIN -- LAST_ACK -- 接收ACK -- CLOSE
重點記憶: ESTABLISHED、FIN_WAIT_2<-->CLOSE_WAIT、TIME_WAIT(2MSL)
2MSL時長:
一定出現(xiàn)在【主動關(guān)閉連接請求端】 --- 對應 TIME_WAIT 狀態(tài)。
保證,最后一個 ACK 能成功被對端接收。(等待期間,對端沒收到我發(fā)的ACK,對端會再次發(fā)送FIN請求。)
二、半關(guān)閉及shutdown函數(shù)端口復用:
int opt = 1; // 設(shè)置端口復用。
setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
半關(guān)閉:
通信雙方中,只有一端關(guān)閉通信。 --- FIN_WAIT_2
close(cfd);
shutdown(int fd, int how);
how: SHUT_RD 關(guān)讀端
SHUT_WR 關(guān)寫端
SHUT_RDWR 關(guān)讀寫
注:shutdown在關(guān)閉多個文件描述符應用的文件時,采用全關(guān)閉方法。close,只關(guān)閉一個。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當前文章:Linux網(wǎng)絡(luò)編程之TCP狀態(tài)轉(zhuǎn)移-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://muchs.cn/article12/dsiigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、企業(yè)建站、軟件開發(fā)、品牌網(wǎng)站設(shè)計、小程序開發(fā)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容