netstat檢視linux伺服器網絡連接配接狀态
維護linux 伺服器時,要經常檢視伺服器的網絡連接配接狀态,netstat 是一個非常優秀的工具,通過netstat 可以顯示網絡連接配接、路由表和網絡接口資訊,可以讓使用者得知目前都有哪些網絡連接配接正在運作。
netstat -[rn] <==與路由有關的參數
netstat -[antulpc] <==與網路介面有關的參數參數:
與路由 (route) 有關的參數說明:
-r :列出路由表(route table),功能如同 route 這個指令;
-n :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n
與網路介面有關的參數:
-a :列出所有的連線狀态,包括 tcp/udp/unix socket 等;
-t :僅列出 TCP 封包的連線;
-u :僅列出 UDP 封包的連線;
-l :僅列出有在 Listen (監聽) 的服務之網路狀态;
-p :列出 PID 與 Program 的檔名;
-c :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀态的顯示;
-v :顯示正在進行的工作。
下面這個語句是一個非常好的檢視TCP 連接配接狀态的語句:
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
以下是各種狀态的描述
CLOSED:無連接配接是活動的或正在進行
ESTABLISED:已建立連線的狀态;
SYN_SENT:發出主動連線 (SYN 标志) 的連線封包;
SYN_RECV:接收到一個要求連線的主動連線封包;
FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
FIN_WAIT2:該連線已挂斷,但正在等待對方主機回應斷線确認的封包;
TIME_WAIT:該連線已挂斷,但 socket 還在網路上等待結束;
LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉