「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>ネットワークの基礎編#v4563a06]]

* 目次 [#h5f64b7c]
#contents

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

*説明 [#y64c1ccd]
 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 で指定されたプロトコルに関する情報を表示する。
 -r   ルーティング テーブルを表示する。
 proto	通常は、TCP、UDP、TCPv6、または UDPv6を指定できる。
 -sオプションと併用する場合は、IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP またはUDPv6を指定できる。
 interval  送信秒間隔。Ctrl+Cを押して停止する。

*調査方法 [#u81d77f0]
**通信中のTCPコネクションの状態を表示 [#q432d8ee]
引数を何も付けずに実行すると、
-「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

**リッスンしているポートの調査 [#i3e917b9]
「-a」オプションを付けて実行すると、

-TCP/IPのコネクションが表示される。
--「LISTENING」状態のソケット
--「ESTABLISHED」状態のソケット

--TCPの「LISTENING」状態のソケットは、
---接続先ホスト・ポートの場合:~
Local Address「ローカル マシン:LISTENINGポート番号」で表示される。
---接続元ホスト・ポートの場合:~
Foreign Address「ローカル マシン:0」で表示される。

-UDPの「LISTENING」状態が表示される。
--「LISTENING」状態はUDPにも有る状態なので、表示される。
--「ESTABLISHED」状態はUDPには無い状態なので、表示されない。

 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	*:*

**プロセスIDとコネクションの関連の調査 [#l3a316da]
***「-o」オプション [#g626c6a6]
「-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」オプション [#udf1560e]
また、「-b」オプションを付けて実行すると、~
ポートの作成に使われた実行可能ファイル(exe)の情報を出力できる。

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

**通信状態の調査 [#o6c0e662]
***繰り返し実行 [#lf69c547]
interval引数に数値を付けて実行すると、~
その時間間隔(秒)で繰り返し実行できる。
-通信の状態を定常的にモニタしたい場合に有用なオプションである。
-止めるには、[Ctrl] + [C]を押して強制終了させる。

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

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

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

-NIC・プロトコル毎のネットワーク上の
--負荷(パケット数、メッセージ数)、
--エラー数、
--コネクションの状態

-ただし、ここで表示される数値はOS起動時からの積算値であるため、~
現時点でエラーが多発しているかどうかを調べたい場合は、~
何度かコマンドを実行して数値の変化を確認する必要がある。

*参考 [#o94f6ee1]
-Windowsのnetstatコマンドを試してみた - いろいろ解析日記~
http://d.hatena.ne.jp/nattou_curry_2/20090818/1250611294

**@IT [#ga6d9621]
-TCP/IP通信の状態を調べる「netstat」コマンドを使いこなす (1/2):Tech TIPS
-TCP/IP通信の状態を調べる「netstat」コマンドを使いこなす (1/2):Tech TIPS - @IT~
https://www.atmarkit.co.jp/ait/articles/0207/20/news003.html

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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS