Linux ---- 查看当前TCP连接数
一、查看哪些IP連接本機
netstat -an
二、查看TCP連接數(shù)
1)統(tǒng)計80端口連接數(shù)
netstat -nat|grep -i "80"|wc -l
2)統(tǒng)計httpd協(xié)議連接數(shù)
ps -ef|grep httpd|wc -l
3)、統(tǒng)計已連接上的,狀態(tài)為“established
netstat -na|grep ESTABLISHED|wc -l
4)、查出哪個IP地址連接最多,將其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
---------------------------------------------------------------------------------------------
TCP連接狀態(tài)詳解
LISTEN: 偵聽來自遠方的TCP端口的連接請求
SYN-SENT: 再發(fā)送連接請求后等待匹配的連接請求
SYN-RECEIVED:再收到和發(fā)送一個連接請求后等待對方對連接請求的確認
ESTABLISHED: 代表一個打開的連接
FIN-WAIT-1: 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
FIN-WAIT-2: 從遠程TCP等待連接中斷請求
CLOSE-WAIT: 等待從本地用戶發(fā)來的連接中斷請求
CLOSING: 等待遠程TCP對連接中斷的確認
LAST-ACK: 等待原來的發(fā)向遠程TCP的連接中斷請求的確認
TIME-WAIT: 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
CLOSED: 沒有任何連接狀態(tài)
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回結(jié)果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數(shù);ESTABLISHED表示正常數(shù)據(jù)傳輸狀態(tài);TIME_WAIT表示處理完畢,等待超時結(jié)束的請求數(shù)。
狀態(tài):描述
CLOSED:無連接是活動 的或正在進行
LISTEN:服務(wù)器在等待進入呼叫
SYN_RECV:一個連接請求已經(jīng)到達,等待確認
SYN_SENT:應(yīng)用已經(jīng)開始,打開一個連接
ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
FIN_WAIT1:應(yīng)用說它已經(jīng)完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關(guān)閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
如發(fā)現(xiàn)系統(tǒng)存在大量TIME_WAIT狀態(tài)的連接,通過調(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ù)生效。
net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當(dāng)出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關(guān)閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關(guān)閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關(guān)閉。
net.ipv4.tcp_fin_timeout 修改系統(tǒng)默認的 TIMEOUT 時間
下面附上TIME_WAIT狀態(tài)的意義:
客戶端與服務(wù)器端建立TCP/IP連接后關(guān)閉SOCKET后,服務(wù)器端連接的端口
狀態(tài)為TIME_WAIT
是不是所有執(zhí)行主動關(guān)閉的socket都會進入TIME_WAIT狀態(tài)呢?
有沒有什么情況使主動關(guān)閉的socket直接進入CLOSED狀態(tài)呢?
主動關(guān)閉的一方在發(fā)送最后一個 ack 后
就會進入 TIME_WAIT 狀態(tài) 停留2MSL(max segment lifetime)時間
這個是TCP/IP必不可少的,也就是“解決”不了的。
也就是TCP/IP設(shè)計者本來是這么設(shè)計的
主要有兩個原因
1。防止上一次連接中的包,迷路后重新出現(xiàn),影響新連接
(經(jīng)過2MSL,上一次連接中所有的重復(fù)包都會消失)
2。可靠的關(guān)閉TCP連接
在主動關(guān)閉方發(fā)送的最后一個 ack(fin) ,有可能丟失,這時被動方會重新發(fā)
fin, 如果這時主動方處于 CLOSED 狀態(tài) ,就會響應(yīng) rst 而不是 ack。所以
主動方要處于 TIME_WAIT 狀態(tài),而不能是 CLOSED 。
TIME_WAIT 并不會占用很大資源的,除非受到攻擊。
還有,如果一方 send 或 recv 超時,就會直接進入 CLOSED 狀態(tài)
感謝 :https://www.cnblogs.com/felixzh/p/7737160.html
總結(jié)
以上是生活随笔為你收集整理的Linux ---- 查看当前TCP连接数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matplotlib之Bar Chart
- 下一篇: DOS界面的个性化定制