Windows の 「netstat」コマンドを使いこなす

スポンサーリンク

netstat はネットワーク接続の状況を確認するコマンドです。あえて難しい言葉で説明をするとコマンドを実行したホストに存在するソケットの一覧を表示するコマンドです。

TEST

1. 基本的な使い方と結果の読み方

まずは netstat コマンドの出力結果の読み方について解説します。-ano がよく使われるオプションの組み合わせです。本記事の後半でその他のオプションについても説明しますが、大抵の場合 -ano オプションをつけていれば事足ります。

  • -a はすべてのソケットを表示するオプションで、まだ接続待ち(LISTENING状態)のソケットも含めて表示します。
  • -n はホスト名ではなく、IPアドレスで表示します。またはプロトコルではなくポート番号で表示されれます。名前解決しないので表示が速くなります。
  • -o はPIDを表示するオプションです。PIDからどのプロセスがソケットを使っているかを確認することができます。

netstat -ano コマンドを実行すると下記のような結果になります。

>netstat -ano

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態            PID
  TCP         0.0.0.0:135            0.0.0.0:0              LISTENING       1288
  TCP         0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP         192.168.1.7:139        0.0.0.0:0              LISTENING       4
  TCP         192.168.1.7:55679      20.197.118.223:443     ESTABLISHED     3976
  TCP         192.168.1.7:55807      20.121.118.190:443     ESTABLISHED     15128
    <略>

それぞれの項目の意味は下表を参照してください。

No.項目説明
1プロトコルプロトコルの種類を表示。TCPかUDPのどちらかになります。
2ローカル アドレスnetstat コマンドを実行したホストのIPアドレスとポート番号です。
3外部アドレス通信先のホストのIPアドレスとポート番号です。
4状態通信の状態を表します。LISTENING や ESTABLISHED などがあります。
5PIDソケットを利用しているプロセスのPIDです。
PIDから通信を行っているプロセスを特定することができます。

[補足]

  • ローカルアドレスが 0.0.0.0 になっているものがあることに気づくと思います。これは特定のIPアドレスと紐づいていないことを示しています。
  • 外部アドレスは通信先のIPアドレスを意味します。外部アドレスが 0.0.0.0 というのはまだ通信が始まっていことを示しています。この場合「状態」は LISTENING になります。
  • LISTENING はプロセスが接続待ちをしている状態です。ESTABLISH は既に通信先のプロセスと接続が確率した状態です。
  • PID はプロセスIDです。プロセスIDからどのアプリケーションが通信しているのかを特定することができます。PIDがどのアプリケーションと紐づいているかはタスクマネージャーから確認できます。

2. オプションと実行例

2.1. オプション

No.オプション説明
1f・外部アドレスをFQDNで表示
2n・外部アドレスをIPアドレスで表示。
・プロトコル名ではなくポート番号で表示。
・名前解決を行わないので表示が速くなる。
3a・通信開始していないソケットの情報も表示。
4p・プロトコルを指定(TCPまたはUDP)。
5o・プロセスIDを表示。
6v・サービス名または実行ファイル名 を表示。
7r・ルートテーブルを表示
route print コマンドと同じ
8e・インターフェース統計情報を表示
9s・プロトコルごとの統計を表示

2.2. 実行例

オプションなしで実行した場合は下記のようになります。

  • 外部アドレスがホスト名に変換される
  • ポート番号ではなくプロトコルが表示される
  • LISTENING状態のソケットは表示されない
CMD> netstat

  プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         192.168.1.7:63554      20.222.118.190:https   ESTABLISHED
  TCP         192.168.1.7:63616      104.244.22.66:https    ESTABLISHED
  TCP         192.168.1.7:63627      20.222.118.190:https   ESTABLISHED
  TCP         192.168.1.7:64073      ec2-44-237-153-204:https  ESTABLISHED
  <略>

f オプションをつけると外部アドレスがFQDN(ホスト名 +ドメイン名)で表示されます。

CMD> netstat -f

アクティブな接続 

プロトコル  ローカル アドレス      外部アドレス                                状態
  TCP         10.0.0.67:3389         fz98a436bd:.jkew112.example.jp:63693       ESTABLISHED
  TCP         10.0.0.67:49204        instance-data.ap-northeast-1.compute.internal:http     CLOSE_WAIT
  <略>

n オプションをつけると外部アドレスが IPアドレス表示されます。またプロトコルではなくポート番号で表示されます。n はnumeric(数字)の頭文字です。

CMD> netstat -n

アクティブな接続 

プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         10.0.0.67:3389         152.163.21.32:63693    ESTABLISHED
  TCP         10.0.0.67:49205        169.254.169.254:80     CLOSE_WAIT

a オプションをつけると接続待ちのポートを含めてすべてのポートが表示されます。a オプションを指定しない場合は接続中のポートのみ表示されます。a はallの略です。

CMD> netstat -a

アクティブな接続 

プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         0.0.0.0:135            web01:0      LISTENING
  TCP         0.0.0.0:445            web01:0      LISTENING
      <略>
  TCP         10.0.0.67:3389         152.163.21.32:63693    ESTABLISHED
  TCP         10.0.0.67:49196        instance-data:http     CLOSE_WAIT
  TCP         [::]:135               web01:0      LISTENING
  TCP         [::]:445               web01:0      LISTENING
      <略> 
UDP         0.0.0.0:3389           *:*
UDP         0.0.0.0:5355           *:* 

p オプションをつけるとプロトコルの指定ができます。

TCPを指定

CMD> netstat -ap tcp

アクティブな接続 

プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         0.0.0.0:135            web01:0      LISTENING
  TCP         0.0.0.0:445            web01:0      LISTENING
  TCP         10.0.0.67:3389         152.163.21.32:63693    ESTABLISHED
                 <略> 
  TCP         10.0.0.67:49196        instance-data:http     CLOSE_WAIT

UDPを指定

CMD> netstat -ap udp

アクティブな接続 

プロトコル  ローカル アドレス      外部アドレス           状態
  UDP         0.0.0.0:3389            *:* 
  UDP         0.0.0.0:5355            *:* 
  UDP         10.0.0.67:137            *:*  
  UDP         10.0.0.67:138           *:*   

o オプションをつけるとプロセスIDが表示されます。

CMD> netstat -o

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態            PID
  TCP         192.168.1.7:55679      20.198.118.190:https   ESTABLISHED     3976
  TCP         192.168.1.7:55807      20.198.118.190:https   ESTABLISHED     15128
  TCP         192.168.1.7:55819      20.198.119.84:https    ESTABLISHED     3976
  TCP         192.168.1.7:56504      104.22.68.131:https    ESTABLISHED     14220

b オプションをつけるとサービス名または実行ファイル名(もしくは両方)が表示されます。

CMD> netstat -b

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         192.168.1.7:55679      20.198.118.190:https   ESTABLISHED
  WpnService
 [svchost.exe]
  TCP         192.168.1.7:55807      20.198.118.190:https   ESTABLISHED
 [OneDrive.exe]
  TCP         192.168.1.7:55819      20.198.119.84:https    ESTABLISHED
  WpnService
 [svchost.exe]
  TCP         192.168.1.7:56504      104.22.68.131:https    ESTABLISHED
 [chrome.exe]
   <略>

r オプションをつけるとルートテーブルが表示されます。

CMD> netstat -r
===========================================================================

IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先        ネットマスク          ゲートウェイ       インターフェイス  メトリック
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.7     35
        127.0.0.0        255.0.0.0            リンク上         127.0.0.1    331
        127.0.0.1  255.255.255.255            リンク上         127.0.0.1    331
    <略>
================== 
固定ルート:
なし
               <略>

e オプションをつけるとインターフェース統計情報が表示されます。

CMD> netstat -e
インターフェイス統計

                                受信               送信

バイト                          2221302200      1518570672
ユニキャスト パケット             39857288         5307772
ユニキャスト以外のパケット          229192          153260
破棄パケット                             0               0
エラー パケット                          0               0
不明なプロトコル パケット                0

s オプションをつけるとプロトコルごとの統計情報が表示されます。ここでは p オプションを併用して、tcpのみ表示しています

CMD> netstat -sp tcp
IPv4 の TCP 統計 
アクティブ オープン              = 111
 パッシブ オープン数              = 4
 失敗した接続試行数               = 2
 リセットされた接続               = 3
 現在の接続                       = 2
 受信したセグメント               = 23018
 送信したセグメント               = 18959
 再送信されたセグメント           = 2 
   <以下略>

finstr コマンドを使って特定の状態の接続のみを表示することもできます。
※参考:【Windows】netstat で特定の状態の接続を表示する


3. プロセスIDの確認

プロセスIDはタスクマネージャーから確認できます。

以上。

コメント