netstatの引数として数値を指定すると、その時間間隔(単位は秒)でnetstatを繰り返し実行する。通信の状態を定常的にモニターしたい場合に有用なオプションである。止めるには、[Ctrl]+[C]キーを押して強制終了させる。
リッスンしているポート(待ち受け状態のTCPポート)があるかどうかを調べるには、「-a」オプションを付けて実行する。これにより、LISTENING状態のTCPポートも表示されるようになる。サービス名でなく具体的なポート番号を知りたければ、「-an」というオプションを付ける。これは「-a -n」と指定するのと同じことだ。
TCPとUDPは通信方式が異なるので、それぞれ待ち受け状態の表示方法が異なる。TCPならば「LISTENING」と表示されているのが待ち受け状態のポートである。UDPの場合は、「外部アドレス」が「*:*」と表示されているのが待ち受け状態のポートを表している。
上のスクリーンショットでは「ローカル アドレス」には「0.0.0.0:〜」と「[::]:〜」の2つが表示されている。これらは、どのインタフェースでも接続を受け付けるという意味である。システムによっては複数のネットワークインタフェース(複数のIPアドレス)を持っていることがあるが、そのうちの1つだけで待ち受けするなら、「ローカルアドレス」列には「10.20.30.4:80」や「127.0.0.1:1900」のように表示される。
なお [::] は、IPv6で全て0を表すアドレス表記である。詳細については以下の記事を参照していただきたい。
「-o」オプションを付けてnetstatを実行すると、そのコネクションを所有しているプロセスのID(PID)も表示される。
右端に表示されているのがPIDである。このPIDを調べることにより、そのポート(コネクション)を使用しているプロセスを知ることができる。PIDが分かれば、タスクマネージャーや「tasklist」コマンドを使って、そのプロセス名を調べられる。
「-o」ではなく「-b」オプションを付けると、実際のプロセス名が表示される。これを実行するには、コマンドプロンプトを管理者権限で起動する必要がある。
用途の不明なTCP通信が行われていたり、リッスン状態になっていたりした場合は、これらのオプションを使うと、そのプロセスやサービスを特定できる。そして必要ならばファイアウォールなどでそのポートをブロックしたり、プログラムやサービスそのものを停止して、システムの安全性を確保したりできる。
これらの情報は、タスクマネージャーから起動できる「リソース モニター」でも確認できる。もっとも、コマンドラインから調査したい場合はnetstatコマンドが簡単である。
「-s」オプションを付けると、プロトコル別の通信量(送受信したパケットの数)などを表示できる。
詳細は、Tech TIPS「netstatの統計情報を活用する」を参照していただきたい。
「-r」オプションを付けると、IPのルーティング情報を表示できる。これは「route print」コマンドを実行するのと同じである。
詳細は、Tech TIPS「『route』コマンドでWindows OSのルーティングテーブルを操作する」を参照していただきたい。
「-?」または「/?」オプションを付けてnetstatを実行すると、オプション一覧とその説明が表示される。
■関連記事(Windows Server Insider)
■更新履歴
【2023/02/01】Windows 11などに対応しました。
【2018/02/08】最新OSに対応して、内容を更新しました。
【2012/03/02】Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2に関する情報を追加して修正しました。
【2004/11/27】Windows XP SP2に関する情報を追加して修正しました。
【2004/02/14】Windows XPとWindows Server 2003に関する情報と、TCPの状態遷移に関する情報を追加して加筆・修正しました。
【2002/07/20】初版公開(対象はWindows 2000/Windows XP/Windows Server 2003)。
Copyright© Digital Advantage Corp. All Rights Reserved.