Linux 監控tcp連接數及狀態


一、查看哪些IP連接本機

netstat -an

二、查看TCP連接數

查看tcp連接數狀態 
 

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 



統計8080端口上有多少個TCP連接,命令: 
 

netstat -ant |grep 80|wc -l 



TCP連接中有多少個連接狀態是ESTABLISHED,命令: 
 

netstat -ant |grep 80|grep ESTABLISHED|wc -l 



TCP連接中有多少個連接狀態是CLOSE_WAIT 

netstat -ant |grep 80|grep CLOSE_WAIT|wc -l 



TCP連接中有多少個連接狀態是TIME_WAIT 

netstat -ant |grep 80|grep TIME_WAIT|wc -l 



使用awk來完成統計信息,命令如下 
 

netstat -ant |grep 80|awk '{++S[$NF]} END {for (a in S) print a, S[a]}'

TCP連接狀態詳解 

  • 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: 沒有任何連接狀態
  • SYN_RECV表示正在等待處理的請求數;
  • ESTABLISHED表示正常數據傳輸狀態;
  • TIME_WAIT表示處理完畢,等待超時結束的請求數。

4、如發現系統存在大量TIME_WAIT狀態的連接,通過調整內核參數解決

vim /etc/sysctl.conf
編輯文件,加入以下內容:
  1.  
    net.ipv4.tcp_syncookies = 1
  2.  
    net.ipv4.tcp_tw_reuse = 1
  3.  
    net.ipv4.tcp_tw_recycle = 1
  4.  
    net.ipv4.tcp_fin_timeout = 30

然后執行

/sbin/sysctl -p 

讓參數生效。

附上TIME_WAIT狀態的意義:

  • net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;
  • net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
  • net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
  • net.ipv4.tcp_fin_timeout 修改系統默認的TIMEOUT時間

5、客戶端與服務器端建立TCP/IP連接后關閉SOCKET后,服務器端連接的端口狀態為TIME_WAIT是不是所有執行主動關閉的socket都會進入TIME_WAIT狀態呢?有沒有什么情況使主動關閉的socket直接進入CLOSED狀態呢?

主動關閉的一方在發送最后一個ack后,就會進入TIME_WAIT狀態停留2MSL(max segment lifetime)時間,這個是TCP/IP必不可少的,也就是“解決”不了的。也就是TCP/IP設計者本來是這么設計的。

主要有兩個原因:

  • 1、防止上一次連接中的包,迷路后重新出現,影響新連接(經過2MSL,上一次連接中所有的重復包都會消失)
  • 2、可靠的關閉TCP連接在主動關閉方發送的最后一個 ack(fin) ,有可能丟失,這時被動方會重新發fin, 如果這時主動方處於CLOSED狀態 ,就會響應rst而不是ack。所以主動方要處於TIME_WAIT狀態,而不能是CLOSED 。TIME_WAIT並不會占用很大資源的,除非受到攻擊。還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM