新聞中心
Linux下如何查看TCP連接數(shù)?Linux中查看TCP連接數(shù)的方法非常簡(jiǎn)單,只需要幾個(gè)命令即可,下面一起來(lái)看一下Linux下查看TCP連接數(shù)具體方法。

創(chuàng)新互聯(lián)是一家專業(yè)提供梅江企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為梅江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
一、查看哪些IP連接本機(jī)
netstat -an
二、查看TCP連接數(shù)
查看tcp連接數(shù)狀態(tài)
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
統(tǒng)計(jì)8080端口上有多少個(gè)TCP連接,命令:
netstat -ant |grep 80|wc -l
TCP連接中有多少個(gè)連接狀態(tài)是ESTABLISHED,命令:
netstat -ant |grep 80|grep ESTABLISHED|wc -l
TCP連接中有多少個(gè)連接狀態(tài)是CLOSE_WAIT
netstat -ant |grep 80|grep CLOSE_WAIT|wc -l
TCP連接中有多少個(gè)連接狀態(tài)是TIME_WAIT
netstat -ant |grep 80|grep TIME_WAIT|wc -l
使用awk來(lái)完成統(tǒng)計(jì)信息,命令如下
netstat -ant |grep 80|awk '{++S[$NF]} END {for (a in S) print a, S[a]}'
TCP連接狀態(tài)詳解
-
LISTEN: 偵聽(tīng)來(lái)自遠(yuǎn)方的TCP端口的連接請(qǐng)求
-
SYN-SENT: 再發(fā)送連接請(qǐng)求后等待匹配的連接請(qǐng)求
-
SYN-RECEIVED:再收到和發(fā)送一個(gè)連接請(qǐng)求后等待對(duì)方對(duì)連接請(qǐng)求的確認(rèn)
-
ESTABLISHED: 代表一個(gè)打開(kāi)的連接
-
FIN-WAIT-1: 等待遠(yuǎn)程TCP連接中斷請(qǐng)求,或先前的連接中斷請(qǐng)求的確認(rèn)
-
FIN-WAIT-2: 從遠(yuǎn)程TCP等待連接中斷請(qǐng)求
-
CLOSE-WAIT: 等待從本地用戶發(fā)來(lái)的連接中斷請(qǐng)求
-
CLOSING: 等待遠(yuǎn)程TCP對(duì)連接中斷的確認(rèn)
-
LAST-ACK: 等待原來(lái)的發(fā)向遠(yuǎn)程TCP的連接中斷請(qǐng)求的確認(rèn)
-
TIME-WAIT: 等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請(qǐng)求的確認(rèn)
-
CLOSED: 沒(méi)有任何連接狀態(tài)
-
SYN_RECV表示正在等待處理的請(qǐng)求數(shù);
-
ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);
-
TIME_WAIT表示處理完畢,等待超時(shí)結(jié)束的請(qǐng)求數(shù)。
4、如發(fā)現(xiàn)系統(tǒng)存在大量TIME_WAIT狀態(tài)的連接,通過(guò)調(diào)整內(nèi)核參數(shù)解決
vim /etc/sysctl.conf
編輯文件,加入以下內(nèi)容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后執(zhí)行
/sbin/sysctl -p
讓參數(shù)生效。
附上TIME_WAIT狀態(tài)的意義:
-
net.ipv4.tcp_syncookies = 1 表示開(kāi)啟SYN cookies。當(dāng)出現(xiàn)SYN等待隊(duì)列溢出時(shí),啟用cookies來(lái)處理,可防范少量SYN攻擊,默認(rèn)為0,表示關(guān)閉;
-
net.ipv4.tcp_tw_reuse = 1 表示開(kāi)啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉;
-
net.ipv4.tcp_tw_recycle = 1 表示開(kāi)啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0,表示關(guān)閉。
-
net.ipv4.tcp_fin_timeout 修改系統(tǒng)默認(rèn)的TIMEOUT時(shí)間
5、客戶端與服務(wù)器端建立TCP/IP連接后關(guān)閉SOCKET后,服務(wù)器端連接的端口狀態(tài)為TIME_WAIT是不是所有執(zhí)行主動(dòng)關(guān)閉的socket都會(huì)進(jìn)入TIME_WAIT狀態(tài)呢?有沒(méi)有什么情況使主動(dòng)關(guān)閉的socket直接進(jìn)入CLOSED狀態(tài)呢?
主動(dòng)關(guān)閉的一方在發(fā)送最后一個(gè)ack后,就會(huì)進(jìn)入TIME_WAIT狀態(tài)停留2MSL(max segment lifetime)時(shí)間,這個(gè)是TCP/IP必不可少的,也就是“解決”不了的。也就是TCP/IP設(shè)計(jì)者本來(lái)是這么設(shè)計(jì)的。
主要有兩個(gè)原因:
-
1、防止上一次連接中的包,迷路后重新出現(xiàn),影響新連接(經(jīng)過(guò)2MSL,上一次連接中所有的重復(fù)包都會(huì)消失)
-
2、可靠的關(guān)閉TCP連接在主動(dòng)關(guān)閉方發(fā)送的最后一個(gè) ack(fin) ,有可能丟失,這時(shí)被動(dòng)方會(huì)重新發(fā)fin, 如果這時(shí)主動(dòng)方處于CLOSED狀態(tài) ,就會(huì)響應(yīng)rst而不是ack。所以主動(dòng)方要處于TIME_WAIT狀態(tài),而不能是CLOSED 。TIME_WAIT并不會(huì)占用很大資源的,除非受到攻擊。還有,如果一方 send 或 recv 超時(shí),就會(huì)直接進(jìn)入 CLOSED 狀態(tài)。
分享標(biāo)題:Linux下查看TCP連接數(shù)具體方法
文章出自:http://www.5511xx.com/article/dhcehos.html


咨詢
建站咨詢
