netstatってなに?
netstatはネットワークへの接続状況を調べるためのコマンドです。まずWindows 9x系やMeの方はMS-DOSプロンプト、Windows 2000やXPの方はコマンドプロンプトを開いてください。
そして[netstat](半角スペース)[オプション]と入力してください。間違っても[ ]の記号は入力しないでくださいね。
オプションスイッチについて
例えば10秒ごとに[-n]で実行するなら、[netstat(半角スペース)-n(半角スペース)10]になります。
| オプションスイッチ一覧 | |
| e | NIC(LANカードなど)の通信の統計情報を表示 |
| r | ルーティング情報を表示 |
| s | プロトコルごとの統計情報を表示する |
| p | p (半角スペース)[TCPもしくはUDP]で、指定したプロトコルごとの統計情報を表示 |
| sp | sp(半角スペース)[TCP, UDP, IP, ICMP]で、指定したプロトコルごとの統計情報を表示 |
| オプションなし | 現在動作している(ESTABLISHEDの)全てのコネクションを表示 |
| a | 全てのESTABLISHEDのコネクションと、接続可能な(受信待ちのListen状態にある)ポートを一覧表示する |
| n | ドメイン名をDNSサーバーに問い合わせず、IPアドレスとポート番号を名前ではなく数字で表示する(そのため表示はやや早い) |
| an | [a]と[n]をあわせたオプションスイッチ |
| 数字 | 何秒ごとに再表示を行うのかをあらわす。10秒ごとなら[netstat(半角スペース)10]で自動的に10秒おきに起動する。停止させるには[Ctrl]+[c]を押す(忘れると永遠に実行されてしまいます) |
| 表示の説明 | |
| Proto | プロトコル。TCPやUDP |
| Local Address | 自分自身のIPアドレスやホスト名と、ポート。IPアドレス:ポートとなります |
| Foreign Address | 相手のIPアドレスやホスト名と、ポート。IPアドレス:ポートとなります |
| State | そのコネクションの状態。 |
| PID | プロセスID(Windows XPで[o]を用いたときのみ) |
| TCP 接続の状態と Netstat の出力 | |
| SYN_SEND | アクティブ オープンしています。 |
| SYN_RECEIVED | サーバーはクライアントからの SYN を受信しました。 |
| ESTABLISHED | クライアントはサーバーからの SYN を受信し、セッションが確立されました(つまり、送受信の真っ最中)。 |
| LISTEN | サーバーは接続を受け付けられます。 |
| FIN_WAIT_1 | アクティブ クローズの状態です。 |
| TIMED_WAIT | クライアントはアクティブ クローズ状態からこの状態に遷移しました。 |
| CLOSE_WAIT | パッシブ クローズ状態です。サーバーはクライアントから最初のFIN を受信しました。 |
| FIN_WAIT_2 | クライアントはサーバーから最初の FIN に対する肯定応答 ack を受信しました。 |
| LAST_ACK | サーバーは FIN を送信したときにこの状態に遷移しました。 |
| CLOSED | サーバーはクライアントからの ACK を受信し、接続がクローズしました。 |
| 引用:http://support.microsoft.com/default.aspx?scid=kb;ja;jp410350 TCPプロトコルの3-way-ハンドシェイクの説明もご覧ください。 |
|
ポート(Port)ってなに?
サーバーとクライアント
あなたがどこかのサイトを見ているなら、Foreign Addressのport80に、あなたのパソコン(Local Address)の1024以降で予約済みでないランダムなポートとの間で、セッションが張られています。port80はhttpプロトコル(つまりInternet Explorerなどでサイトを閲覧する時に用いられる、最も代表的なプロトコル)で利用され、Webサーバー(サイトのページ等を格納して閲覧させるサーバー)のport80へ利用者が接続することになるのです。
また[サーバー]とは、あるサービスを提供する側のコンピューターと考えてください。それに対して、そのサービスを提供してもらうコンピューターは[クライアント]です。
もしもいま、netstatを実行したなら。Tef-Roomを表示させているWebサーバーは[サーバー(netstatの結果のForeign Address)]、このサイトを見ているあなたのパソコンは[クライアント(netstatの結果のLocal Address)]です。
ポートの範囲について
またportは以下の2タイプに分けられ、さらにTCPとUDPそれぞれのプロトコルに分けられます。IANAではこれらのうちいくつかを予約(あるサービスで用いるので、予約していないサービスでは使わないでね、と宣言)しています。- Well known Port
- 0-1023のポートはIANA(ICANNの前身)が決定したもの。よく利用されるサービスで使われています。
- Registered Port
- 1024-49151。このうちのいくつかは、IANAが予約(あるサービスに使うと決定)している。でも開いているものは自由に利用してもいいみたいです。
- Dynamic and/or Private Ports
- 49152-65535。IANAは予約していません。自由に使ってもいいポートです。
例えばTCPプロトコルのport6699はWinMXというファイル交換サービスでよく用いられるポートです。もっともWinMXは、IANAのport一覧表には記載されていません(Unassignedとなっています)。
[注意]
ちなみにICMPはPingなどでよく用いられるプロトコルですけど、portは用いません。
代表的なポートをいくつか書いておきます。ちなみにICMPはPingなどでよく用いられるプロトコルですけど、portは用いません。
| よく用いられるport | ||
| 23 | TCP | telnet(まず使わないですね) |
| 25 | TCP | SMTP(メールの送信サーバー) |
| 53 | UDP | DNS(ドメイン名解決)。よく初心者が「プロバイダーから攻撃された」と勘違いするサービス。 |
| 80 | TCP | http(ブラウザでのサイト閲覧) |
| 110 | TCP | POP3(メールの受信サーバー) |
| 135 | TCP/UDP | RPC(不具合が出るのでパソコンの設定からは塞げないようです) |
| 137 | TCP/UDP | NetBIOS Name解決やMSネットワーク共有クライアント関連。LISTENなら有効のままなのでしょう。ルーターやパーソナルファイアーウォールの導入、もしくは不要ならばMSネットワーク共有クライアントを停止させるよう検討してください。 |
| 138 | ||
| 139 | ||
| 443 | TCP/_UDP | https(クレジットカードの番号を暗号化するときなどで利用) |
| 445 | TCP/_UDP | dhSMB:ダイレクトホスティングServer Message Block。Windows2000のファイル共有、ユーザー認証(Windows2000とXPでデフォルトで有効という点で、迷惑なサービス) |
| 515 | TCP | spool(プリンター関連) |
| 1900 | UDP | SSDPSRV |
| 3389 | TCP | XPのリモートデスクトップ |
| 6257 | UDP | WinMX(職場で行うと査定にかなり響く、ファイル交換サービス) |
| 6699 | TCP | |
| 8431 | TCP | VirusBasterのWebTrap機能。127.0.0.1:8431 |
| 12345 | TCP | NetBus (有名なトロイ) |
netstatでポートとサービスの関係を勉強しましょう♪
netstatをやってみましょう(Windows 2000)
たとえばアンチウイルスソフトのメール保護機能が有効になっているなら。アンチウイルスソフトはループバックアドレス(この場合127.0.0.1であり、自分自身を表します)でメールを一旦受信して、ウイルススキャンを行います。ネットに接続してメールを送受信していない状態を例にします。
オプションスイッチなしでは(メールの送受信のコネクションはまだ成立していないので)表示されず、[a]では[Local Address]の欄は[サーバー名:pop3]という表示になりますけど、[an]では[127.0.0.1:110]となります。
例1:Windows 2000を起動した直後に[netstat -an]で、アンチウイルスソフトが起動している状態
(MSネットワーク共有クライアント等はネットワークの設定から削っています)
port135がListeningなのはRPC、port445はSMB Direct Hostingです。
127.0.0.1:110はアンチウイルスソフトのメール保護機能によるものです。

一番下の行は、アンチウイルスソフトのWEB接続保護機能によるものでしょうか?いずれにしても、これでは断言できません。

どのようなサービスによりこのような結果になるのか知りたい!(Windows XP)
Windows XPなら、[o]スイッチが追加されています。例えば[an]の代わりに[netstat(半角スペース)-ano]を入力します。するとプロセス ID (識別番号、PID)が表示されます。Ctrl + Alt + Delete キーを押し、[タスクマネージャー]をクリックし、[プロセス] タブをクリックします。
PID 列が表示されない場合は [表示] メニューの [列の選択] をクリックし、[PID (プロセス ID)] チェックボックスをオンにします。
"PID" というラベルの付いた列のヘッダーをクリックし、プロセスを PID 順に並べ替えます。こうすることで、プロセス ID を見つけ、タスク マネージャに一覧表示されたプログラムと照合する作業が容易になります。
引用:http://support.microsoft.com/default.aspx?scid=kb;ja;jp281336
Window XPでnetstatに挑戦!
前回Windows 2000では、個別のプロセスが何なのか全て明らかにすることができませんでした。そこでWindwos XPを使ってもう一度。OSの起動直後にやってみました。
アンチウイルスソフトによる保護は無効で、MSネットワーク共有クライアント等を外した状態です。


port445はPIDが4でSystemで、SMB Direct Hosting(Windowsのファイル共有関連)です。
port500のPIDが524なのはlsass.exeで、これはログオン資格の認証を実行する Windows のプログラムです。[管理ツール] - [サービス]ではSecurity Accounts Managerですね。
port1027は何なのか、ちょっとわかりませんでした。
netstatのわかりづらい結果についての説明
- Foreign Adressが0.0.0.0
- 相手がまだ特定されていないけど、自分への接続を受け付ける状態の表示。
- 参考:http://support.microsoft.com/default.aspx?scid=kb;ja;jp175952
- Local Addressが0.0.0.0で、ネットに接続できない、サイトも見れないし、メールの送受信もできない
- NIC(LANカードなど)に割り当てられたIPアドレスは0.0.0.0ですか?それならDHCPサーバーからのIPアドレスのリースに失敗しているのかもしれません。
- UDPプロトコルで[Foreign Address]の[IPアドレス:ポート]の表示が[*:*]
- TCPで同じポートを利用するサービスがありませんか?これはTCPでもUDPでもどちらでも利用できるサービスがあるときの表示です。
- UDPではState欄が空欄
- UDPはTCPのような3-Way-ハンドシェイクを行わないので、表示されないのです。
- LISTEN していないポートが netstat で LISTENING と表示される
- 「netstat コマンドは TDI レベルの状態を取得するように実装されており、 winsock の状態と必ずしも一致するように実装されていないためです。」とのことでした。(引用:http://support.microsoft.com/default.aspx?scid=kb;ja;jp418762)
- もちろん、気付かないうちに「何か」がインストールされていて、自動的に起動していたという可能性もあります。
- [n]オプションを使わないのに、Foreign Addressの相手が数字になっている
- あなたが利用しているDNSサーバーでは逆引きできない、そういうホスト名だったから?
port・ポートを開ける・閉じるってなに?
よく質問掲示板で、ポートが開いている・ポートを閉じると書かれます。これは正式な言い方ではないみたいですけど、よく使われる言葉です。ポートを開けるとは、あるパソコンやルーターにそのポートへ接続できるように設定することを指すみたいです。
ポートを閉じるとは、あるサービスやアプリケーションを使わないようにしてポートが開かないようにする、もしくは何かの方法でそのポートへ誰かが接続できないように設定することです。
ポートを閉じる?
ルーターやパーソナルファイアーウォールでブロックする(portが開いていても外部からアクセスできなくなるようにする)、そしてそのportを開けるサービスそのものを停止させてはどうでしょう?UDP 123は時刻合わせの目的で起動している、Windows Timeサービスです。Windows XPではこのサービスにより、自動的に時間を合わせるように設定されています。
でも[コントロールパネル] - [日付と時刻] - [インターネット時刻]タブ - [自動的にインターネット時刻サーバーと同期する]のチェックを外しても、解決しません。
もしPort 123を塞ぎたいなら、[コントロールパネル] - [管理ツール] - [サービス] - [WindowsTime]を無効にしてください。
でも職場のLANがドメイン構成なら、停止させない方がいいかもしれません。
137-139関連ならMSネットワーク共有クライアント?停止させるにはこちらをごらんください。
Windows 2000/XP のポート135と 445 が開いているなら。
135はRPC(Remote Procedure Call)、445はSMB Direct Hosting で使用されるポートです。
どちらもパーソナルファイアーウォールやルーター、ファイアーウォールでWAN側からLAN内部への予期せぬトラフィックはブロックしてください。
[注意]
[管理ツール] - [サービス]から[Remote Procedure Call]を無効にすれば135はふさがりますけど、様々な不具合が発生するため実際には停止させられないようです。
port110でLISTENING、時々勝手にESTABLISHEDになるなら。[管理ツール] - [サービス]から[Remote Procedure Call]を無効にすれば135はふさがりますけど、様々な不具合が発生するため実際には停止させられないようです。
パソコンに搭載されている自動メール受信チェック機能が有効になっていませんか?
また127.0.0.1のIPアドレスなら、アンチウイルスソフトのメール保護機能でしょう。
OSの起動直後にnetstat -anをやってみたら、どうみても怪しいportが開いているなら。
自分でportを調べてみてください。何で使われているportですか?もしトロイ(Trojan)だったら困りますね・・・
netstatそのほかの情報
ファイルに結果を出力するには(ちょっと小技)
例えば[-n]オプションを用いて実行した結果を、Cドライブにnetstat.txtという名前のテキストファイルとして出力するなら。[netstat(半角スペース)-n(半角スペース) >C:\netstat.txt]になります。
netstatの結果はどこまで信頼できるのでしょう?
トロイなどの悪質プログラムには、netstatの結果を偽る機能を持つものが存在するようです(噂)。2004年2月18日補足事項
先日知人のパソコンが、外部からのポートスキャンとnetstatの結果がまったく合わず、ときおりどこかに変な通信をしていたのを確認しました。何かに感染していたのかもしれません、でも処分されてしまったのでよくわかりません・・・