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 がわかれば、タスクマネージャーでどのプログラムが通信を行っているかを特定できます。

プロセス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状態について

TIME_WAIT状態が多数表示される場合、短時間に多くの接続が開いて閉じられていることを示します。これは正常な動作の場合もありますが、異常に多い場合はネットワーク設定の見直しが必要かもしれません。

まとめ

本記事では、netstatコマンドの基本的な使い方から応用的な使い方まで解説しました。

主なポイント:

  • netstatはネットワーク接続状態を確認する基本的なコマンド
  • -aオプションですべての接続を表示
  • -nオプションで名前解決をスキップして高速化
  • -oオプションでプロセス ID を表示
  • -bオプション(管理者権限)で実行ファイル名を表示
  • findstrとの組み合わせで特定のポートや状態をフィルタリング可能

netstatコマンドは、ネットワークトラブルシューティングやセキュリティ監視の基礎となる重要なツールです。 日常的に使用して、ネットワーク状態を把握する習慣をつけることをお勧めします。

関連コマンド

練習問題

練習問題

現在のコンピューターで待ち受け状態(LISTENING)のポートを含むすべての接続を表示するために使用するコマンドとして、最も適切なものを選択してください。

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #ネットワーク #トラブルシューティング #セキュリティ