■ はじめに
ネットワーク統計や状態を確認するために利用できる netstat コマンドについて扱う。
【1】netstat
* ホストのネットワーク状態などの表示
【2】使用上の注意
* UDPについては、状態は表示されない => そもそも、UDPは状態が存在しないので
【3】オプション
オプション | 意味 | 備考 |
---|---|---|
-a | 全て(All)の接続を表示 | |
-t | IPアドレスなど数値のみに抑制する | |
-l | LISTENを表示 | |
-n | ポートを表示 | |
-r | ルーティング・テーブルを表示 | |
-o | タイマーを表示 | --timers |
-p | プロセスIDを表示 |
【4】コマンド例
例1:
netstat -nato Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State Timer tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN off (0.00/0/0) tcp 0 0 192.XXX.XXX.XXX:33012 XXX.XXX.XXX.XXX:80 ESTABLISHED off (0.00/0/0) tcp 0 0 192.XXX.XXX.XXX:45650 XXX.XXX.XXX.XXX:80 TIME_WAIT timewait (42.75/0/0) tcp 1 0 192.XXX.XXX.XXX:35368 XXX.XXX.XXX.XXX:80 CLOSE_WAIT off (0.00/0/0)
例2:ポート「8080」のみ表示
Linuxの場合
netstat -a | grep ":8080"
Windowsの場合
netstat -a | find ":8080"
例3:ルーティング・テーブルの確認
# 「route -e」コマンドとほぼ同様 netstat -r
例4:使用ポートが動作しているかを調べる
sudo netstat -anp | grep "LISTEN " | grep 【ポート番号】
例5:TIME_WAIT
# TIME_WAITの待ち時間状況を確認する (「-nato」 = 納豆?) sudo netstat -nato | grep TIME_WAIT # TIME_WAITの数を確認する netstat -an | grep TIME_WAIT | wc -l # wc -l : 指定した行数を表示する
【5】出力について
状態
http://www.atmarkit.co.jp/ait/articles/0207/20/news003.html
状態 | 説明 |
---|---|
ESTABLISHED | 確立して通信している状態 |
LISTENING | 待ち受け状態(リッスン状態) |
TIME_WAIT | 終了待ち状態 |
SYN_SENT | サーバに対して、通信開始の要求(SYN:Synchronize)を送信したが、まだそれに対する応答(ACK:Acknowledgement)を受け取っていない状態。相手が無応答のときもこの状態になる。ACKを受け取るとESTABLISHEDへ遷移する |
SYN_RECEIVED | クライアントからSYN要求を受け取った直後の状態。SYNに対するACKを送信するとESTABLISHEDへ遷移する |
CLOSE_WAIT | 相手からのFINを受け取った状態。アプリケーションが終了すると、FINを送信してからLAST_ACKへ遷移する |
参考文献
http://www.atmarkit.co.jp/ait/articles/0207/20/news003.html
http://www.atmarkit.co.jp/fnetwork/netcom/netcom05/netcom01.html
TIME_WAIT
https://qiita.com/kuni-nakaji/items/c07004c7d9e5bb683bc2
-o (--timers) オプション
https://qiita.com/thatsdone/items/f89a774c93bffdb5d46a
関連記事
ネットワーク系コマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/07/27/214633