netstat
ここでは、Windows2000/XP(ウィンドウズ2000/XP)を使ってネットワークの構築やトラブルシューティングを行う上で最低限知っておきたいコマンドのひとつであるnetstatを紹介します。
netstatを使うと、ネットワーク関連の様々な情報を取得できます。
トラブルシューティングなどでは、通常、状態を知る事からはじめます。
netstatの使い方を知っていると、様々な状態を取ることができるので素早くトラブルに対応できるようになると思われます。
netstatで出来ること
netstatの主な機能としては、以下の3つが挙げられます。
- 全ての接続、リッスンポート(listen port)を表示する
- 全ての経路表(ルーティングテーブルを表示する)
- ネットワーク関連統計情報を表示する
以下、それぞれを説明したいと思います。
接続を表示する
「netstat -a」で全ての接続を表示できます。
接続にはTCPとUDPの2種類があります。
TCP接続には、LISTENING、CLOSED、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、CLOSE_WAIT_2、CLOSE_WAIT、CLOSING、LAST_ACK、TIME_WAITなどの状態があります。
これらの状態はTCP取り得る状態そのままです。
ここでは、とりあえず、最も良く見るLISTENING状態と何かをしている事がわかるESTABLISHED状態の説明をしたいと思います。
netstat -a 実行例
C:\> netstat -a
Active Connections
Proto Local Address Foreign Address State
TCP MyPC:epmap MyPC:0 LISTENING
TCP MyPC:microsoft-ds MyPC:0 LISTENING
TCP MyPC:2118 MyPC:0 LISTENING
TCP MyPC:netbios-ssn MyPC:0 LISTENING
TCP MyPC:2117 MyPC:0 LISTENING
TCP MyPC:2118 localhost:2117 ESTABLISHED
UDP MyPC:microsoft-ds *:*
UDP MyPC:1026 *:*
UDP MyPC:ntp *:*
UDP MyPC:netbios-ns *:*
UDP MyPC:netbios-dgm *:*
UDP MyPC:ntp *:*
|
「netstat -a」では、ホスト名、プロトコル、Well known portなどの名前を解決して表示します。
名前解決を行いたくない場合には、-n オプションを追加して「netstat -na」とすると、全て数字で表示されます。
netstat -na 実行例
C:\> netstat -na
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:2118 0.0.0.0:0 LISTENING
TCP 10.20.123.9:139 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2117 0.0.0.0:0 LISTENING
TCP 127.0.0.1:2118 127.0.0.1:2117 ESTABLISHED
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1026 *:*
UDP 10.20.123.9:123 *:*
UDP 10.20.123.9:137 *:*
UDP 10.20.123.9:138 *:*
UDP 127.0.0.1:123 *:*
|
このように、TCPやUDPの接続状態を知ることで、自分がどことどのように通信しているかを知ることができます。
経路表を表示する
「netstat -r」で全ての経路を表示できます。
同一セグメントにある機器に対してトラブルシューティングなどをする場合には、arpコマンドと組み合わせると良いと思われます。
netstat -r 実行例
C:\> netstat -r
Route Table
===================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0xc0003 ...09 00 a2 31 fc d7 ..... Intel(R) 100 Network Connection
===================================================================
===================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.11.123.1 10.11.123.9 20
10.11.123.0 255.255.255.0 10.11.123.9 10.11.123.9 20
10.11.123.9 255.255.255.255 127.0.0.1 127.0.0.1 20
10.255.255.255 255.255.255.255 10.11.123.9 10.11.123.9 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 240.0.0.0 10.11.123.9 10.11.123.9 20
255.255.255.255 255.255.255.255 10.11.123.9 10.11.123.9 1
Default Gateway: 10.11.123.1
===================================================================
Persistent Routes:
None
|
ネットワーク関連統計情報を表示する
「netstat -s」でネットワーク関連統計情報を表示できます。
下記例は、Windows XPでnetstat -s を行ったものです。
「ipv6 install」コマンドを実行してある環境では、IPv6に関する情報も表示されます。
netstat -s 実行例
C:\> netstat -s
IPv4 Statistics
Packets Received = 1537824
Received Header Errors = 0
Received Address Errors = 1834
Datagrams Forwarded = 0
Unknown Protocols Received = 0
Received Packets Discarded = 0
Received Packets Delivered = 1536696
Output Requests = 776822
Routing Discards = 0
Discarded Output Packets = 0
Output Packet No Route = 0
Reassembly Required = 0
Reassembly Successful = 0
Reassembly Failures = 0
Datagrams Successfully Fragmented = 0
Datagrams Failing Fragmentation = 0
Fragments Created = 0
ICMPv4 Statistics
Received Sent
Messages 545 368
Errors 0 4
Destination Unreachable 0 0
Time Exceeded 0 0
Parameter Problems 0 0
Source Quenches 0 0
Redirects 0 0
Echos 62 306
Echo Replies 42 58
Timestamps 0 0
Timestamp Replies 0 0
Address Masks 0 0
Address Mask Replies 0 0
TCP Statistics for IPv4
Active Opens = 1128
Passive Opens = 106
Failed Connection Attempts = 5
Reset Connections = 213
Current Connections = 2
Segments Received = 1524295
Segments Sent = 773351
Segments Retransmitted = 15
UDP Statistics for IPv4
Datagrams Received = 9142
No Ports = 2756
Receive Errors = 0
Datagrams Sent = 3082
|
繰り返し機能
netstatコマンドの最後に数字を渡すと、渡したインターバル毎に実行を繰り返します。
例えば、「netstat -s 1」とすると、1秒毎にネットワーク関連統計情報を表示します。
このようなインターバルを設定して監視を行うと、ローカルコンピュータがどのようなパケットを出しているのかの概要がつかめます。
このインターバル機能は、組み合わせによって色々な使い方があるので覚えておくと便利です。
指定したインターバル毎に実行を繰り返すループを抜けるには「Cntl-C(コントロールキーを押しながらcボタンを押す)」を押します。
netstatコマンドの最後のインターバルを省略すると、一度だけ結果を表示して終わります。
netstatを自作したい場合
netstatと同様の機能を持つプログラムを自作したくなった場合にはこちらをご覧ください。