Skip to content

MS_NetstatCommand

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

netstatコマンド

概要

「netstat」コマンドは、TCP/IP における通信の状態を調査する最も基本的なコマンド。

説明

netstat [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
オプション 説明
-a ESTABLISHED と LISTENING のポートを表示する。
-b ESTABLISHED と LISTENING のポートの作成に使われた実行可能ファイルを表示する。時間がかかり、十分なアクセス許可がないとエラーが発生する。
-v -b と併用した場合、すべての実行可能ファイルの ESTABLISHED と LISTENING のポートの作成に使われたコンポーネント群が表示される。
-o 各接続に関連付けられた、それらを所有するプロセス ID を表示する。
-n アドレスとポート番号を数値形式で表示する。
-e イーサネットの統計(積算値)を表示する。-s オプションと併用できる。
-s プロトコルごとの統計(積算値)を表示する。-p オプションと併用できる。
-p proto proto で指定されたプロトコルに関する情報を表示する。
-r ルーティング テーブルを表示する。
interval 送信秒間隔。Ctrl+C を押して停止する。

proto は通常、TCP、UDP、TCPv6、または UDPv6 を指定できる。
-s オプションと併用する場合は、IP、IPv6、ICMP、ICMPv6、
TCP、TCPv6、UDP または UDPv6 を指定できる。

補足: -b / -o を有効に使うには管理者として実行する必要がある。 また、-n を併用すると名前解決を行わなくなるため、 DNS の応答待ちで表示が固まるのを避けられる(実務では netstat -ano が定番)。

調査方法

通信中のTCPコネクションの状態を表示

引数を何も付けずに実行すると、

  • 「ESTABLISHED」状態の TCP/IP コネクションが表示される。
  • 「ESTABLISHED」状態は UDP にはない状態なので、UDP プロトコルは表示されない。
C:\>netstat
Active Connections
  Proto  Local Address       Foreign Address       State
  TCP    pc01:2112           svr01:netbios-ssn     ESTABLISHED
  TCP    pc01:2167           svr01:pop3            ESTABLISHED

リッスンしているポートの調査

「-a」オプションを付けて実行すると、

  • TCP/IP のコネクションが表示される。

    • 「LISTENING」状態のソケット

    • 「ESTABLISHED」状態のソケット

    • TCP の「LISTENING」状態のソケットは、

      • Local Address に「ローカル マシン:LISTENING ポート番号」、
      • Foreign Address に「ローカル マシン:0」が表示される。
  • UDP の待ち受けが表示される。

    • UDP はコネクションレスなので State 列は空欄になる。
C:\>netstat -a
Active Connections
  Proto  Local Address       Foreign Address       State
  TCP    svr01:epmap         svr01:0               LISTENING
  TCP    svr01:microsoft-ds  svr01:0               LISTENING
  ・
  ・
  UDP    svr01:epmap         *:*
  UDP    svr01:microsoft-ds  *:*

移行メモ(正誤): 元 Wiki には 「UDP の『LISTENING』状態が表示される。『LISTENING』状態は UDP にも有る状態なので、 表示される」とあったが、これは誤りである。 UDP はコネクションレス プロトコルであり、 TCP のような状態(ステート)を持たない。 実際の netstat -a の出力でも、UDP の行には State 列が表示されない (上の例のとおり空欄になる)。 「バインドされている UDP ポートが表示される」というのが正しい理解である。

プロセスIDとコネクションの関連の調査

「-o」オプション

「-o」オプションを付けて実行すると、

  • そのコネクションを所有しているプロセスの ID(PID)を表示することができる。
  • PID が分かれば、タスク マネージャや tasklist /svc コマンドから、
    プロセスやサービスを調べることができる。
C:\>netstat -o

Active Connections

Proto  Local Address   Foreign Address       State         PID
TCP    pc01:1047       svr01:9080            ESTABLISHED   3588
TCP    pc01:1097       svr02:microsoft-ds    ESTABLISHED   4
TCP    pc01:2757       svr01:9100            ESTABLISHED   3240
TCP    pc01:1051       localhost:1052        ESTABLISHED   2592

「-b」オプション

また、「-b」オプションを付けて実行すると、
ポートの作成に使われた実行可能ファイル(exe)の情報を出力できる。

「-bv」オプション

「-bv」オプションを付けて実行すると、
実行可能ファイル(exe)・コンポーネント(dll)の情報を出力できる。

通信状態の調査

繰り返し実行

interval 引数に数値を付けて実行すると、
その時間間隔(秒)で繰り返し実行できる。

  • 通信の状態を定常的にモニタしたい場合に有用なオプションである。
  • 止めるには、[Ctrl]+[C]を押して強制終了させる。

通信状態の反映

実際の通信状態が反映されるまでしばらく時間がかかる。

  • このため、このような特性を理解して使うか、
  • 長い時間間隔(例:10 分など)でモニタしていても構わないような場合に使う。

「-s」、「-e」オプション

「-s」、「-e」オプションを付けて実行すると、下記項目を確認することができる。

  • NIC・プロトコル毎のネットワーク上の

    • 負荷(パケット数、メッセージ数)
    • エラー数
    • コネクションの状態
  • ただし、ここで表示される数値は OS 起動時からの積算値であるため、
    現時点でエラーが多発しているかどうかを調べたい場合は、
    何度かコマンドを実行して数値の変化を確認する必要がある。

特定のポートが開いているかどうか確認する

  • 指定のポート番号が開いているかどうか確認する。
netstat -ano | findstr "<ポート番号>"
  • 開けているプログラムを PID から確認する。
tasklist /fi "pid eq <PID>"

補足: PowerShell では、同等のことを以下で行える (PID からプロセス名まで一気に解決できる)。

Get-NetTCPConnection -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess,
    @{n='Process';e={(Get-Process -Id $_.OwningProcess).ProcessName}}

また、TIME_WAIT が大量に残る場合は Get-NetTCPConnection -State TimeWait | Measure-Object で件数を把握し、 接続障害の切り分けに使う。

参考


Tags: インフラストラクチャ, 通信技術, Windows, シェル

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally