【Linux】【Windows】 netstat コマンド

■ はじめに

ネットワーク統計や状態を確認するために利用できる
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