TCP連線的坑總結
一. 關於半關閉和CLOSE_WAIT
客戶端主動關閉,傳送FIN包。服務端收到FIN,發出ACK,停留在CLOSE_WAIT狀態。這個狀態持續時間非常長,伺服器如果積攢大量的CLOSE_WAIT狀態socket,有可能耗盡資源。為什麼會產生這樣情況?有可能sockfd通過fork被子程式複製了一份,這樣該sockfd引用計數為2。在關閉socket時使用close()函式並沒有關掉該fd,僅僅是引用計數減1,所以服務端沒有向客戶端傳送FIN,這樣就造成了socket處於CLOSE_WAIT狀態。解決的辦法是:使用shutdown()函式。關於shutdown()函式用法參見:linux網路程式設計之shutdown() 與 close()函式詳解。
二. 關於FIN_WAIT2狀態
三. 關於TIME_WAIT狀態
相關文章
- 簡單總結nodejs處理tcp連線的核心流程NodeJSTCP
- 內連線、外連線總結
- tcp 連線TCP
- TCP的連線建立TCP
- TCP 連線管理TCP
- mysql 外連線總結MySql
- Oracle 左右連線總結Oracle
- tcp的半連線攻擊和全連線攻擊--TCP DEFER ACCEPTTCP
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- golang tcp連線池GolangTCP
- MySQL反連線的優化總結MySql優化
- 外連線的一些總結
- Oracle左右全連線總結Oracle
- 區分socket連線和tcp/ip連線TCP
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- Http 和TCP的關係,TCP長連線和短連線有什麼區別?HTTPTCP
- TCP連線——愛的傳聲筒TCP
- TCP連線注意事項TCP
- Oracle 內外連線 join 總結Oracle
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- TCP連結的建立和釋放TCP
- 用TCP連線分析TUXEDO的WS模式TCPUX模式
- 單機最大tcp連線數TCP
- Smack 開發總結(一)管理連線Mac
- 拔掉網線後, 原本的 TCP 連線還存在嗎?TCP
- 理解 TCP(三):連線的建立和釋放TCP
- TCP連線是如何建立和終止的?TCP
- 單機最大的TCP連線數及其修改TCP
- TCP/UDP對比總結TCPUDP
- tcp和udp使用總結TCPUDP
- Socket和TCP連線過程解析TCP
- 最多能建立多少個 TCP 連線?TCP
- Luat例項教程:tcp短連線TCP
- Windows TCP連線數限制解決WindowsTCP
- LINUX TCP連線最佳化LinuxTCP
- TCP 三次握手原理以及半連線和全連線TCP
- Libevent應用 (五) 連線監聽器,接收tcp連線TCP
- iOS 小坑總結iOS