netstat - ネットワーク接続状態を確認する
netstatコマンドは、コマンドプロンプト上で使用できるネットワーク診断コマンドの一つで、
現在のネットワーク接続状態やポートの使用状況、ルーティングテーブルなどを表示するために使用します。
具体的な使用例としては、不正なネットワーク接続の有無を確認したり、 特定のポートが使用されているかを調べたり、ネットワークトラブルの原因を特定したりするなどがあります。
また、netstatコマンドを使用することで、現在の PC でどのプログラムがネットワーク通信を行っているのか、
どのポートで待ち受けているのかを確認することができます。
本記事では、netstatコマンドの基本的な使い方から応用的な使い方、そしてトラブルシューティング方法までを詳しく解説していきます。
目的別の早見表
まずは、よくある目的ごとのコマンドを確認しておきましょう。
| 目的 | コマンド |
|---|---|
| 待ち受け中のポートと PID を確認する | netstat -ano | findstr LISTENING |
| 特定のポート(例:8080)の使用者を探す | netstat -ano | findstr /c:":8080 " |
| 確立済みの通信を確認する | netstat -ano | findstr ESTABLISHED |
| 通信しているプログラム名も確認する | netstat -abno(管理者権限が必要) |
PID からプログラム名を調べるには、tasklist /fi "PID eq 1234" を使います。
netstatコマンドの基本的な使い方
netstatコマンドの基本的な使い方は以下の通りです。
netstat
オプションを指定せずにコマンド単体で実行すると、現在アクティブな TCP 接続のみが表示されます(待ち受け中のポートや UDP は表示されません)。
より詳細な情報を取得するには、以下のようにオプションを指定します。
netstat [-a] [-b] [-e] [-f] [-n] [-o] [-p プロトコル] [-q] [-r] [-s] [-t] [-x] [-y] [間隔]
基本的な実行例
まず、オプションなしでnetstatコマンドを実行してみましょう。
この出力では、アクティブな TCP 接続のみが表示されます。
出力結果の「状態」列には、TCP接続の状態が表示されます。主な状態として、ESTABLISHED(接続確立)、LISTENING(接続待ち)、TIME_WAIT(接続終了処理中)などがあります。
netstatコマンドの主要オプション
netstatコマンドには多くのオプションがありますが、実務でよく使用されるものを中心に解説します。
すべての接続を表示する -a オプション
-aオプションを使用すると、すべてのアクティブな接続と、待ち受け状態(LISTENING)のポートも含めて表示されます。

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
-aオプションを使うことで、どのポートで接続を待ち受けているかを確認できます。
Webサーバーやデータベースサーバーが正しく起動しているか確認する際、netstat -aで該当するポート(例:80、443、3306など)がLISTENING状態になっているかをチェックできます。
名前解決を行わない -n オプション
-nオプションを使用すると、アドレスやポート番号を名前に変換せず、数値のまま表示します。
名前解決を行わないため、実行速度が大幅に向上します。特に多数の接続がある場合に有効です。
プロセス ID を表示する -o オプション
-oオプションを使用すると、各接続に関連するプロセス ID(PID)が表示されます。
プロセス ID がわかれば、どのプログラムが通信を行っているかを特定できます。タスクマネージャーの「詳細」タブで PID 列を確認するか、tasklist /fi "PID eq 4512" を実行します。
表示されたPIDをtasklistやタスクマネージャーで確認することで、通信を行っているプログラムを特定できます。セキュリティ監視に役立ちます。
実行可能ファイルを表示する -b オプション
-bオプションを使用すると、各接続やリスニングポートを作成した実行可能ファイル名が表示されます。
-bオプションを使用するには、コマンドプロンプトを管理者として実行する必要があります。
このオプションは、どのプログラムがネットワークを使用しているかを直接確認できるため便利です。ただし、実行ファイル名の解決に時間がかかるため、出力が完了するまで数十秒かかることがあります。
統計情報を表示する -s オプション
-sオプションを使用すると、プロトコルごとの統計情報が表示されます。
統計情報は、ネットワークパフォーマンスの分析やトラブルシューティングに役立ちます。
ルーティングテーブルを表示する -r オプション
-rオプションを使用すると、IP ルーティングテーブルが表示されます。
ルーティングテーブルを確認することで、ネットワークパケットがどのように転送されるかを理解できます。
よく使うオプションの組み合わせ
実務では、複数のオプションを組み合わせて使用することが一般的です。
-ano オプションの組み合わせ
最もよく使われる組み合わせの一つがnetstat -anoです。
このコマンドは、以下の情報を一度に取得できます:
- すべての接続(
-a) - 名前解決なし(
-n)で高速表示 - プロセス ID(
-o)でプログラムを特定可能
ネットワーク関連のトラブルが発生した際、まずnetstat -anoを実行して全体像を把握するのが効果的です。
-abon オプションの組み合わせ
管理者権限で実行する場合、-abonの組み合わせが非常に有用です。
このコマンドでは、プロセス ID と実行ファイル名の両方が表示されるため、より詳細な情報が得られます。
継続的な監視
netstatコマンドに数値を指定すると、その秒数ごとに情報を更新し続けます。
継続的な監視を停止するには、Ctrl + C キーを押してください。
実用的な使用例
特定のポートを使用しているプロセスを特定
特定のポート番号(例:8080)を使用しているプロセスを調べる場合は、findstrコマンドと組み合わせます。
:8080 だけで検索すると :80801 など他のポートにも一致します。findstr は空白を OR の区切りとみなすため、/c: を付けて末尾の空白を含めた /c:":8080 " と指定します。外部アドレス側のポート 8080 にも一致するため、ローカル アドレスの列を確認してください。
PID が判明したら、tasklist /fi "PID eq 5432" でプログラム名を確認できます。終了する場合は taskkill /PID 5432 を使います。
ESTABLISHED 状態の接続のみを表示
確立されている接続のみを確認したい場合:
LISTENING 状態のポートのみを表示
待ち受けているポートのみを確認したい場合:
Webサーバーやデータベースサーバーを起動した後、netstat -ano | findstr LISTENINGで該当ポートが開いているか確認する習慣をつけると良いでしょう。
トラブルシューティング事例
ポート競合の確認
「ポートが既に使用されています」というエラーが発生した場合、netstatでどのプロセスがそのポートを使用しているかを確認できます。
例えば、ポート 80 で Web サーバーを起動しようとしてエラーが出た場合:
PID 3456 のプロセスがポート 80 を使用していることがわかります。
不審な外部接続の確認
セキュリティ上の懸念がある場合は、先ほどの netstat -ano | findstr ESTABLISHED で外部への接続を確認します。
見覚えのない IP アドレスへの接続がある場合、該当する PID のプロセスを確認し、必要に応じて対処します。
Webブラウザーや常駐ソフトは、CDNやクラウドサービスなど多数の外部IPアドレスと通信するため、見覚えのないアドレスがあっても直ちに不正とは限りません。 PIDから通信元のプログラムを特定し、見覚えのないプログラムであればセキュリティソフトでスキャンしてください。
主要な接続状態の説明
netstatの出力に表示される主な TCP 接続状態を理解しておくことが重要です。
| 状態 | 説明 |
|---|---|
| LISTENING | 接続待ち受け状態。サーバーがクライアントからの接続を待機 |
| ESTABLISHED | 接続が確立されている状態。通信が可能 |
| TIME_WAIT | 接続終了後の待機状態。完全に切断される前の状態 |
| CLOSE_WAIT | 相手側が接続を閉じ、自分側のアプリが閉じるのを待っている状態 |
| SYN_SENT | 接続要求を送信した状態 |
| SYN_RECEIVED | 接続要求を受信した状態 |
| FIN_WAIT_1 | 接続終了処理中(第 1 段階) |
| FIN_WAIT_2 | 接続終了処理中(第 2 段階) |
| LAST_ACK | 自分側が接続を閉じ、相手からの最後の確認応答を待っている状態 |
TIME_WAIT状態が多数表示される場合、短時間に多くの接続が開いて閉じられていることを示します。通常は正常な動作で、一定時間(既定では約 2 分)で自然に消えます。 一方、CLOSE_WAITが長時間残り続ける場合は、アプリ側が接続を閉じていない可能性があります。
まとめ
本記事では、netstatコマンドの基本的な使い方から応用的な使い方まで解説しました。
主なポイント:
netstatはネットワーク接続状態を確認する基本的なコマンド-aオプションですべての接続を表示-nオプションで名前解決をスキップして高速化-oオプションでプロセス ID を表示-bオプション(管理者権限)で実行ファイル名を表示findstrとの組み合わせで特定のポートや状態をフィルタリング可能
netstatコマンドは、ネットワークトラブルシューティングやセキュリティ監視の基礎となる重要なツールです。
日常的に使用して、ネットワーク状態を把握する習慣をつけることをお勧めします。