netstat - ネットワーク接続状態を確認する
にメンテナンス済み
netstat
コマンドは、コマンドプロンプト上で使用できるネットワーク診断コマンドの一つで、
現在のネットワーク接続状態やポートの使用状況、ルーティングテーブルなどを表示するために使用します。
具体的な使用例としては、不正なネットワーク接続の有無を確認したり、
特定のポートが使用されているかを調べたり、ネットワークトラブルの原因を特定したりするなどがあります。
また、netstat
コマンドを使用することで、現在の PC でどのプログラムがネットワーク通信を行っているのか、
どのポートで待ち受けているのかを確認することができます。
本記事では、netstat
コマンドの基本的な使い方から応用的な使い方、そしてトラブルシューティング方法までを詳しく解説していきます。
netstat
コマンドの基本的な使い方
netstat
コマンドの基本的な使い方は以下の通りです。
netstat
オプションを指定せずにコマンド単体で実行すると、現在確立されている TCP 接続のみが表示されます。
より詳細な情報を取得するには、以下のようにオプションを指定します。
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p プロトコル] [-r] [-s] [-t] [-x] [間隔]
基本的な実行例
まず、オプションなしでnetstat
コマンドを実行してみましょう。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat アクティブな接続
プロトコルローカル アドレス外部アドレス状態
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED
TCP192.168.1.100:54322XXX.XXX.XXX.XXX:80ESTABLISHED
TCP192.168.1.100:54323XXX.XXX.XXX.XXX:443ESTABLISHED
C:\users\user>
この出力では、現在確立されている TCP 接続のみが表示されます。
出力結果の「状態」列には、TCP接続の状態が表示されます。主な状態として、ESTABLISHED(接続確立)、LISTENING(接続待ち)、TIME_WAIT(接続終了処理中)などがあります。
netstat
コマンドの主要オプション
netstat
コマンドには多くのオプションがありますが、実務でよく使用されるものを中心に解説します。
すべての接続を表示する -a
オプション
-a
オプションを使用すると、すべてのアクティブな接続と、待ち受け状態(LISTENING)のポートも含めて表示されます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -a アクティブな接続
プロトコルローカル アドレス外部アドレス状態
TCP0.0.0.0:800.0.0.0:0LISTENING
TCP0.0.0.0:4430.0.0.0:0LISTENING
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED
UDP0.0.0.0:123:
C:\users\user>
-a
オプションを使うことで、どのポートで接続を待ち受けているかを確認できます。
Webサーバーやデータベースサーバーが正しく起動しているか確認する際、netstat -a
で該当するポート(例:80、443、3306など)がLISTENING状態になっているかをチェックできます。
名前解決を行わない -n
オプション
-n
オプションを使用すると、アドレスやポート番号を名前に変換せず、数値のまま表示します。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -n アクティブな接続
プロトコルローカル アドレス外部アドレス状態
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED
TCP192.168.1.100:54322XXX.XXX.XXX.XXX:80ESTABLISHED
C:\users\user>
名前解決を行わないため、実行速度が大幅に向上します。特に多数の接続がある場合に有効です。
プロセス ID を表示する -o
オプション
-o
オプションを使用すると、各接続に関連するプロセス ID(PID)が表示されます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -o アクティブな接続
プロトコルローカル アドレス外部アドレス状態PID
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
TCP192.168.1.100:54322XXX.XXX.XXX.XXX:80ESTABLISHED8920
C:\users\user>
プロセス ID がわかれば、タスクマネージャーでどのプログラムが通信を行っているかを特定できます。
表示されたPIDをタスクマネージャーで確認することで、不審な通信を行っているプログラムを特定できます。セキュリティ監視に役立ちます。
実行可能ファイルを表示する -b
オプション
-b
オプションを使用すると、各接続やリスニングポートを作成した実行可能ファイル名が表示されます。
-b
オプションを使用するには、コマンドプロンプトを管理者として実行する必要があります。
- □ ×
管理者: 管理者: コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -b アクティブな接続
プロトコルローカル アドレス外部アドレス状態
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED
[chrome.exe]
TCP0.0.0.0:800.0.0.0:0LISTENING
[httpd.exe]
C:\users\user>
このオプションは、どのプログラムがネットワークを使用しているかを直接確認できるため、非常に便利です。
統計情報を表示する -s
オプション
-s
オプションを使用すると、プロトコルごとの統計情報が表示されます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -s IPv4 統計
受信したパケット数 = 245832
受信したヘッダー エラー = 0
受信したアドレス エラー = 12
転送されたデータグラム = 0
TCP v4 の統計
アクティブ オープン = 3567
パッシブ オープン = 892
接続失敗 = 45
接続リセット = 234
C:\users\user>
統計情報は、ネットワークパフォーマンスの分析やトラブルシューティングに役立ちます。
ルーティングテーブルを表示する -r
オプション
-r
オプションを使用すると、IP ルーティングテーブルが表示されます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -r IPv4 ルート テーブル
アクティブなルート:
ネットワーク宛先ネットマスクゲートウェイインターフェイスメトリック
0.0.0.00.0.0.0192.168.1.1192.168.1.10025
192.168.1.0255.255.255.0リンク上192.168.1.100281
192.168.1.100255.255.255.255リンク上192.168.1.100281
C:\users\user>
ルーティングテーブルを確認することで、ネットワークパケットがどのように転送されるかを理解できます。
よく使うオプションの組み合わせ
実務では、複数のオプションを組み合わせて使用することが一般的です。
-ano
オプションの組み合わせ
最もよく使われる組み合わせの一つがnetstat -ano
です。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano アクティブな接続
プロトコルローカル アドレス外部アドレス状態PID
TCP0.0.0.0:800.0.0.0:0LISTENING1234
TCP0.0.0.0:4430.0.0.0:0LISTENING1234
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
UDP0.0.0.0:53:2896
C:\users\user>
このコマンドは、以下の情報を一度に取得できます:
- すべての接続(
-a
)
- 名前解決なし(
-n
)で高速表示
- プロセス ID(
-o
)でプログラムを特定可能
ネットワーク関連のトラブルが発生した際、まずnetstat -ano
を実行して全体像を把握するのが効果的です。
-abon
オプションの組み合わせ
管理者権限で実行する場合、-abon
の組み合わせが非常に有用です。
- □ ×
管理者: 管理者: コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -abon アクティブな接続
プロトコルローカル アドレス外部アドレス状態PID
TCP0.0.0.0:800.0.0.0:0LISTENING1234
[httpd.exe]
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
[chrome.exe]
C:\users\user>
このコマンドでは、プロセス ID と実行ファイル名の両方が表示されるため、より詳細な情報が得られます。
継続的な監視
netstat
コマンドに数値を指定すると、その秒数ごとに情報を更新し続けます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano 5 アクティブな接続
プロトコルローカル アドレス外部アドレス状態PID
TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
(5秒後に自動更新)
C:\users\user>
継続的な監視を停止するには、Ctrl + C キーを押してください。
実用的な使用例
特定のポートを使用しているプロセスを特定
特定のポート番号(例:8080)を使用しているプロセスを調べる場合は、findstr
コマンドと組み合わせます。
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano | findstr :8080 TCP0.0.0.0:80800.0.0.0:0LISTENING5432
C:\users\user>
このコマンドで PID が判明したら、タスクマネージャーやタスクキルコマンドでプロセスを特定・終了できます。
ESTABLISHED 状態の接続のみを表示
確立されている接続のみを確認したい場合:
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano | findstr ESTABLISHED TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
TCP192.168.1.100:54322XXX.XXX.XXX.XXX:80ESTABLISHED8920
C:\users\user>
LISTENING 状態のポートのみを表示
待ち受けているポートのみを確認したい場合:
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano | findstr LISTENING TCP0.0.0.0:800.0.0.0:0LISTENING1234
TCP0.0.0.0:4430.0.0.0:0LISTENING1234
TCP0.0.0.0:33060.0.0.0:0LISTENING2345
C:\users\user>
Webサーバーやデータベースサーバーを起動した後、netstat -ano | findstr LISTENING
で該当ポートが開いているか確認する習慣をつけると良いでしょう。
トラブルシューティング事例
ポート競合の確認
「ポートが既に使用されています」というエラーが発生した場合、netstat
でどのプロセスがそのポートを使用しているかを確認できます。
例えば、ポート 80 で Web サーバーを起動しようとしてエラーが出た場合:
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano | findstr :80 TCP0.0.0.0:800.0.0.0:0LISTENING3456
C:\users\user>
PID 3456 のプロセスがポート 80 を使用していることがわかります。
不審な外部接続の確認
セキュリティ上の懸念がある場合、確立されている外部への接続を確認します:
- □ ×
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2025 Ribbit App Development All rights reserved.
C:\users\user>
netstat -ano | findstr ESTABLISHED TCP192.168.1.100:54321XXX.XXX.XXX.XXX:443ESTABLISHED4512
TCP192.168.1.100:54322XXX.XXX.XXX.XXX:8080ESTABLISHED7890
C:\users\user>
見覚えのない IP アドレスへの接続がある場合、該当する PID のプロセスを確認し、必要に応じて対処します。
身に覚えのない外部IPアドレスへの接続を発見した場合、すぐにそのプロセスを特定し、セキュリティソフトでスキャンすることをお勧めします。マルウェアの可能性があります。
主要な接続状態の説明
netstat
の出力に表示される主な TCP 接続状態を理解しておくことが重要です。
状態 | 説明 |
---|
LISTENING | 接続待ち受け状態。サーバーがクライアントからの接続を待機 |
ESTABLISHED | 接続が確立されている状態。通信が可能 |
TIME_WAIT | 接続終了後の待機状態。完全に切断される前の状態 |
CLOSE_WAIT | 相手側からの接続終了待ち |
SYN_SENT | 接続要求を送信した状態 |
SYN_RECEIVED | 接続要求を受信した状態 |
FIN_WAIT_1 | 接続終了処理中(第 1 段階) |
FIN_WAIT_2 | 接続終了処理中(第 2 段階) |
CLOSED | 接続が完全に閉じられた状態 |
TIME_WAIT状態が多数表示される場合、短時間に多くの接続が開いて閉じられていることを示します。これは正常な動作の場合もありますが、異常に多い場合はネットワーク設定の見直しが必要かもしれません。
まとめ
本記事では、netstat
コマンドの基本的な使い方から応用的な使い方まで解説しました。
主なポイント:
netstat
はネットワーク接続状態を確認する基本的なコマンド
-a
オプションですべての接続を表示
-n
オプションで名前解決をスキップして高速化
-o
オプションでプロセス ID を表示
-b
オプション(管理者権限)で実行ファイル名を表示
findstr
との組み合わせで特定のポートや状態をフィルタリング可能
netstat
コマンドは、ネットワークトラブルシューティングやセキュリティ監視の基礎となる重要なツールです。
日常的に使用して、ネットワーク状態を把握する習慣をつけることをお勧めします。
関連コマンド
練習問題
#コマンドプロンプト
#バッチファイル
#ネットワーク
#トラブルシューティング
#セキュリティ