PR
図1 netstatコマンドでパソコンの通信状態を調べる<BR>コマンド・プロンプトで「netstat」とだけ打ち込めば,自分のパソコンの通信状態が表示される。
図1 netstatコマンドでパソコンの通信状態を調べる<BR>コマンド・プロンプトで「netstat」とだけ打ち込めば,自分のパソコンの通信状態が表示される。
[画像のクリックで拡大表示]
表1 netstatコマンドの結果表示に出てくる主な接続状態&lt;BR&gt;ほかにもいくつかの状態があるが,通常ではほとんど表示されない。
表1 netstatコマンドの結果表示に出てくる主な接続状態<BR>ほかにもいくつかの状態があるが,通常ではほとんど表示されない。
[画像のクリックで拡大表示]

 自分と相手の間で通信状態がどうなっているか知りたい,あるいは自分のパソコンが勝手にサーバー・ソフトを動かしていないか調べたい。こんなときに役立つのがnetstat(ネットスタット)コマンドである。今回は,このnetstatコマンドの使い方をマスターしよう。

 自分のパソコンが相手とどのように通信しているのか。TCPで接続するのかUDPを使うのか。とくに,新しいネットワーク・アプリケーションを使い始めたときなどは,こうしたことを確認してみたくなる。

 あるいは,自分のパソコンでサーバー・ソフトなどが勝手に稼働していないか調べる必要もある。最近では,勝手にサーバー機能をインストールして外部から操作可能にしたり,勝手にパソコン内部のデータを送信するような悪質なウイルスやワームもあるからだ。便利なユーティリティ・ソフトのふりをして,裏でパソコン内に保存されている個人情報を外部に送信してしまう不正プログラムもある。「ひょっとしたら自分のパソコンでも,こっそりとサーバー・ソフトが動いていたり,重要な情報を外部に漏らしているのでは」と不安に思う人もいるだろう。

 また,やたらとネットワークの応答が遅いのが気になることもある。もしかすると,壊れたLANケーブルやLANアダプタがつながっているためにエラー・フレームが大量に流れているかも知れない。

 そこで活躍するのがnetstatコマンドである。netstatとは「ネットワーク(network)の状態(status)」を調べるコマンド。自分のパソコンがTCP/IPを使ってどのように通信しているかといった情報を詳しく表示してくれる。Windowsをはじめ,ほとんどのOSが標準で持っている。

 今回は,このnetstatコマンドの基本的な使い方をマスターしよう。パソコンでTCP/IP関連のトラブルが起こったときなど,netstatコマンドの使い方を知っていれば,きっと役に立つ。

現在のTCP接続の状況を表示

 netstatコマンドの使い方は,非常に単純。WindowsNT/2000/XPならコマンド・プロンプト(Windows98/MeならMS-DOSプロンプト)を開き,

netstat

と打ち込むだけである。

 すると,IPアドレスやドメイン名などを含む数行のリストが表示される(図1[拡大表示])。これは,「自分のパソコンがTCP/IPを使って,だれとどのような通信をしているか」という情報だ。

 1行が一つのTCP/IP通信の状態を示している。リストが数行になっているのは,自分のパソコンが複数のコンピュータと同時にTCP/IP通信をしているということである。

 各行は4種類の項目で構成されている。これらをもう少し詳しく見ていくと,「Proto」,「Local Address」,「Foreign Address」,「State」というように分かれている。Protoとはプロトコル(Protocol)の意味で,相手のコンピュータとの間で使っているプロトコル名を表す。ここにはTCPかUDPのどちらかが入る。

 2列目のLocal Addressは,TCP/IP通信での自分自身のコンピュータ名*(あるいはIPアドレス)とポート番号*(あるいはサービス名)である。「:(コロン)」を挟んで左側がコンピュータ名,右側がポート番号になる。

 そして3列目のForeign Addressが通信相手の情報である。例えば,この項目が,「nnw.nikkeibp.co.jp:80」のように表示されたら,自分のパソコンはnnw.nikkeibp.co.jpというコンピュータの80番ポートとTCP/IPで通信している(いた)。80番ポートはHTTP*で使うポート番号なので,Webアクセスをしている(していた)とわかる。

 4列目のStateは,自分と通信相手とのTCP/IP通信の状態を示す。接続している最中なのか,それとも接続を終了したあとなのかといったことがわかる。図1にあるTIME_WAITは通信が終了した状態,ESTABLISED(エスタブリッシュド)は,相手とTCPで接続している状態を表している。TCPでは全部で11個の状態が決められている*。netstatコマンドの結果表示によく出てくる状態については,表1[拡大表示]を参照してほしい。