首頁 > php教程 > PHP开发 > 主體

netstat詳解

高洛峰
發布: 2016-12-15 09:43:52
原創
1602 人瀏覽過

http://www.now163.net/2011/04/460.html  Netstat指令詳解/ 發現大量的TIME_WAIT解決方法

============================= 壓測時的netstat監控


 

查看並發狀態 

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

這條語句回傳結果如下

LAST_ACK 5

SYN_RECV 30 
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求 數;ESTABLISHED表示正常數據傳輸狀態;TIME_WAIT表示處理完畢,等待超時結束的請求數。

 

查看mysql連接

#netstat -anp | grep mysql | wc -l

netstat -n | awk '/^tcp/ {++state in$ state) print key,"t",state[key]}' 

會得到類似下面的結果,具體數字會有所不同:

LAST_ACK 1

SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 285335797975 月TIME_WAIT 1669
狀態:描述
CLOSED:無連線是活動的或正在進行
LISTEN:伺服器在等待進入呼叫
SYN_RECV:一個連線要求已經到達,等待確認
SYN_SENT:應用程式已經開始,開啟一個連線
資料傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉

也就是說,這條指令可以把目前系統的網路連線狀態分類加總。

 

查看TIME_WAIT連線數
netstat -ae|grep "TIME_WAIT" |wc -l 

netstat -n | awk '/^tcp/ {++state[$NF]} ENDENDfor(key in state) print key,"t",state[key]}' 

查找較多time_wait連接

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20






netstat + awk 查詢連接數兩種方法,意義相同
1:netstat -pnt | awk '/^tcp/{print $5}' | cut -d: -f 1 | sort -n |uniq - c

2:netstat -pnt | awk '/^tcp/{s=split($5,N,":");A[N[s-1]]++} END{ for (k in A) print k ,A[k]}'


 

Netstat用於顯示與IP、TCP、UDP和ICMP協定相關的統計數據,一般用於檢驗本機各連接埠的網路連線情況。


netstat -ntlp

netstat -anp | grep 3306

netstat -an

netstat -ae |grep mysqlnet

netstat -an

netstat -ae |grep mysqlnet

狀態

netstat -lp 標識正在監聽的網路服務

netstat -rn  檢查路由表

netstat -s 查看各種網路協定運行的統計資訊

netstat -tln 用來查看linuxux的連接埠使用情況--ip -an

 

Linux查看連接埠與服務 

  # netstat -tulpn 

  或是

『   -a或–all 顯示所有連線中的Socket 。


  -A或– 列出此網路類型連線中的相關位址。

  -c或–continuous 持續列出網路狀態。

  -C或–cache 顯示路由器設定的快取資訊。


  -e或–extend 顯示網路其他相關資訊。

  -F或–fib 顯示FIB。

  -g或–groups 顯示多重廣播功能群組組員名單。

  -h或–help 線上幫助。

  -i或–interfaces 顯示網路介面資訊表單。

  -l或–listening 顯示監控中的伺服器的Socket。

  -M或–masquerade 顯示偽裝的網路連線。

  -n或–numeric 直接使用IP位址,而不透過網域名稱伺服器。

  -N或–netlink或–symbolic 顯示網路硬體週邊設備的符號連線名稱。

  -o或–timers 顯示計時器。

  -p或–programs 顯示正在使用Socket的程式識別碼和程式名稱。

  -r或–route 顯示Routing Table。

  -s或–statistice 顯示網路工作資訊統計表。

  -t或–tcp 顯示TCP傳輸協定的連線狀況。

  -u或–udp 顯示UDP傳輸協定的連線狀況。

  -v或–verbose 顯示指令執行程序。

  -V或–version 顯示版本資訊。

  -w或–raw 顯示RAW傳輸協定的連線狀況。

  -x或–unix 此參數的效果和指定”-A unix”參數相同。

  –ip或–inet 此參數的效果與指定」-A inet」參數相同

------------------------- ----------

 

服務端,連接埠的狀態變化

先在本機(IP位址為:192.168.1.10)設定FTP服務,然後在其它電腦(IP位址為:192.168.1.1)存取FTP服務,從TCPView看看連接埠的狀態變化。

下面黑體字顯示的是從TCPView中截取的部分。

1、LISTENING狀態

FTP服務啟動後首先處於偵聽(LISTENING)狀態。

State顯示是LISTENING時表示處於偵聽狀態,就是說該連接埠是開放的,等待連接,但還沒有連接。 就像你房子的門已經敞開的,但還沒有人進來。

從TCPView可以看出本機開放FTP的情況。它的意思是:程式inetinfo.exe開放了21個端口,FTP預設的端口為21,可見在本機開放了FTP服務。目前正處於偵聽狀態。

inetinfo.exe:1260 TCP 0.0.0.0:21 0.0.0.0:0 LISTENING 

2、ESTABLISHED狀態

現在從192.168.1.1這台計算機訪問一下192.168.1.10的FTP服務。在本機的TCPView可以看出連接埠狀態變成ESTABLISHED。

ESTABLISHED的意思是建立連結。表示兩台機器正在通訊 。

下面顯示的是本機的FTP服務正在被192.168.1.1這台電腦存取。

inetinfo.exe:1260 TCP 192.168.1.10:21 192.168.1.1:3009 ESTABLISHED 

注意:處於ESTABLISHED狀態的連線一定要格外注意,因為它也許不是個正常連線。後面我們要講到這個問題。

3、 TIME_WAIT狀態

現在從192.168.1.1這台電腦結束存取192.168.1.10的FTP服務。在本機的TCPView可以看出連接埠狀態變成TIME_WAIT。 

TIME_WAIT的意思是結束了這次連線。說明21埠曾經有過訪問,但訪問結束了。

[System Process]:0 TCP 192.168.1.10:21 192.168.1.1:3009 TIME_WAIT 

4、小技巧

a、可以telnet一個開放的端口,來觀察該端口的變化。例如看1025埠是開放的,在指令狀態(如圖1運作cmd)運作:

telnet 192.168.1.10 1025

b、從本機也可以測試,只不過顯示的是本機連本機 

b、從本機也可以測試,只不過顯示的是本機連本機 

c、在Tcpview中雙擊連接可看出程式的位置,右鍵點選該連接,選擇End Process即可結束該連接

 客戶端,連接埠的狀態變化

 

🎜🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板