netstat はネットワーク接続の状況を確認するコマンドです。あえて難しい言葉で説明をするとコマンドを実行したホストに存在するソケットの一覧を表示するコマンドです。
1. 基本的な使い方と結果の読み方
まずは netstat コマンドの出力結果の読み方について解説します。-ano がよく使われるオプションの組み合わせです。本記事の後半でその他のオプションについても説明しますが、大抵の場合 -ano オプションをつけていれば事足ります。
- -a はすべてのソケットを表示するオプションで、まだ接続待ち(LISTENING状態)のソケットも含めて表示します。
- -n はホスト名ではなく、IPアドレスで表示します。またはプロトコルではなくポート番号で表示されれます。名前解決しないので表示が速くなります。
- -o はPIDを表示するオプションです。PIDからどのプロセスがソケットを使っているかを確認することができます。
netstat -ano コマンドを実行すると下記のような結果になります。
>netstat -ano
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態 PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1288
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 192.168.1.7:139 0.0.0.0:0 LISTENING 4
TCP 192.168.1.7:55679 20.197.118.223:443 ESTABLISHED 3976
TCP 192.168.1.7:55807 20.121.118.190:443 ESTABLISHED 15128
<略>
それぞれの項目の意味は下表を参照してください。
No. | 項目 | 説明 |
---|---|---|
1 | プロトコル | プロトコルの種類を表示。TCPかUDPのどちらかになります。 |
2 | ローカル アドレス | netstat コマンドを実行したホストのIPアドレスとポート番号です。 |
3 | 外部アドレス | 通信先のホストのIPアドレスとポート番号です。 |
4 | 状態 | 通信の状態を表します。LISTENING や ESTABLISHED などがあります。 |
5 | PID | ソケットを利用しているプロセスのPIDです。 PIDから通信を行っているプロセスを特定することができます。 |
[補足]
- ローカルアドレスが 0.0.0.0 になっているものがあることに気づくと思います。これは特定のIPアドレスと紐づいていないことを示しています。
- 外部アドレスは通信先のIPアドレスを意味します。外部アドレスが 0.0.0.0 というのはまだ通信が始まっていことを示しています。この場合「状態」は LISTENING になります。
- LISTENING はプロセスが接続待ちをしている状態です。ESTABLISH は既に通信先のプロセスと接続が確率した状態です。
- PID はプロセスIDです。プロセスIDからどのアプリケーションが通信しているのかを特定することができます。PIDがどのアプリケーションと紐づいているかはタスクマネージャーから確認できます。
2. オプションと実行例
2.1. オプション
No. | オプション | 説明 |
---|---|---|
1 | f | ・外部アドレスをFQDNで表示 |
2 | n | ・外部アドレスをIPアドレスで表示。 ・プロトコル名ではなくポート番号で表示。 ・名前解決を行わないので表示が速くなる。 |
3 | a | ・通信開始していないソケットの情報も表示。 |
4 | p | ・プロトコルを指定(TCPまたはUDP)。 |
5 | o | ・プロセスIDを表示。 |
6 | v | ・サービス名または実行ファイル名 を表示。 |
7 | r | ・ルートテーブルを表示 ※route print コマンドと同じ |
8 | e | ・インターフェース統計情報を表示 |
9 | s | ・プロトコルごとの統計を表示 |
2.2. 実行例
オプションなしで実行した場合は下記のようになります。
- 外部アドレスがホスト名に変換される
- ポート番号ではなくプロトコルが表示される
- LISTENING状態のソケットは表示されない
CMD> netstat
プロトコル ローカル アドレス 外部アドレス 状態
TCP 192.168.1.7:63554 20.222.118.190:https ESTABLISHED
TCP 192.168.1.7:63616 104.244.22.66:https ESTABLISHED
TCP 192.168.1.7:63627 20.222.118.190:https ESTABLISHED
TCP 192.168.1.7:64073 ec2-44-237-153-204:https ESTABLISHED
<略>
f オプションをつけると外部アドレスがFQDN(ホスト名 +ドメイン名)で表示されます。
CMD> netstat -f
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 10.0.0.67:3389 fz98a436bd:.jkew112.example.jp:63693 ESTABLISHED
TCP 10.0.0.67:49204 instance-data.ap-northeast-1.compute.internal:http CLOSE_WAIT
<略>
n オプションをつけると外部アドレスが IPアドレス表示されます。またプロトコルではなくポート番号で表示されます。n はnumeric(数字)の頭文字です。
CMD> netstat -n
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 10.0.0.67:3389 152.163.21.32:63693 ESTABLISHED
TCP 10.0.0.67:49205 169.254.169.254:80 CLOSE_WAIT
a オプションをつけると接続待ちのポートを含めてすべてのポートが表示されます。a オプションを指定しない場合は接続中のポートのみ表示されます。a はallの略です。
CMD> netstat -a
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 0.0.0.0:135 web01:0 LISTENING
TCP 0.0.0.0:445 web01:0 LISTENING
<略>
TCP 10.0.0.67:3389 152.163.21.32:63693 ESTABLISHED
TCP 10.0.0.67:49196 instance-data:http CLOSE_WAIT
TCP [::]:135 web01:0 LISTENING
TCP [::]:445 web01:0 LISTENING
<略>
UDP 0.0.0.0:3389 *:*
UDP 0.0.0.0:5355 *:*
p オプションをつけるとプロトコルの指定ができます。
TCPを指定
CMD> netstat -ap tcp
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 0.0.0.0:135 web01:0 LISTENING
TCP 0.0.0.0:445 web01:0 LISTENING
TCP 10.0.0.67:3389 152.163.21.32:63693 ESTABLISHED
<略>
TCP 10.0.0.67:49196 instance-data:http CLOSE_WAIT
UDPを指定
CMD> netstat -ap udp
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
UDP 0.0.0.0:3389 *:*
UDP 0.0.0.0:5355 *:*
UDP 10.0.0.67:137 *:*
UDP 10.0.0.67:138 *:*
o オプションをつけるとプロセスIDが表示されます。
CMD> netstat -o
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態 PID
TCP 192.168.1.7:55679 20.198.118.190:https ESTABLISHED 3976
TCP 192.168.1.7:55807 20.198.118.190:https ESTABLISHED 15128
TCP 192.168.1.7:55819 20.198.119.84:https ESTABLISHED 3976
TCP 192.168.1.7:56504 104.22.68.131:https ESTABLISHED 14220
b オプションをつけるとサービス名または実行ファイル名(もしくは両方)が表示されます。
CMD> netstat -b
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 192.168.1.7:55679 20.198.118.190:https ESTABLISHED
WpnService
[svchost.exe]
TCP 192.168.1.7:55807 20.198.118.190:https ESTABLISHED
[OneDrive.exe]
TCP 192.168.1.7:55819 20.198.119.84:https ESTABLISHED
WpnService
[svchost.exe]
TCP 192.168.1.7:56504 104.22.68.131:https ESTABLISHED
[chrome.exe]
<略>
r オプションをつけるとルートテーブルが表示されます。
CMD> netstat -r
===========================================================================
IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.7 35
127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331
127.0.0.1 255.255.255.255 リンク上 127.0.0.1 331
<略>
==================
固定ルート:
なし
<略>
e オプションをつけるとインターフェース統計情報が表示されます。
CMD> netstat -e
インターフェイス統計
受信 送信
バイト 2221302200 1518570672
ユニキャスト パケット 39857288 5307772
ユニキャスト以外のパケット 229192 153260
破棄パケット 0 0
エラー パケット 0 0
不明なプロトコル パケット 0
s オプションをつけるとプロトコルごとの統計情報が表示されます。ここでは p オプションを併用して、tcpのみ表示しています
CMD> netstat -sp tcp
IPv4 の TCP 統計
アクティブ オープン = 111
パッシブ オープン数 = 4
失敗した接続試行数 = 2
リセットされた接続 = 3
現在の接続 = 2
受信したセグメント = 23018
送信したセグメント = 18959
再送信されたセグメント = 2
<以下略>
finstr コマンドを使って特定の状態の接続のみを表示することもできます。
※参考:【Windows】netstat で特定の状態の接続を表示する
3. プロセスIDの確認
プロセスIDはタスクマネージャーから確認できます。
以上。
コメント