Tips記事
» 2002年11月15日 00時00分 UPDATE

どのプログラムがどのTCP/UDPポートを使っているのか調べたい

[森川拓男,ITmedia]

 「Norton Internet Security」などのファイアウォールソフトを利用していると、TCP/UDPポートの送受信があるたびに、通信を許可するか尋ねてくる。これは、トロイの木馬などのバックドアがデータを勝手に送受信することなどを防ぐ意味もあり、大いに活用したい。ただし、インスタントメッセンジャーなどが通信しようとしても、ファイアウォールソフトで許可されていないものであれば、メッセージが表示されるわけだ。これが頻繁に起こると、いったい何のプログラムが通信を開始してるのか分からず、不安になることもあるだろう。

 高機能なファイアウォールソフトならば、どのプログラムが通信しているのか表示してくれる場合もあるが、それが不可能なときは「netstat」コマンドを活用しよう。WindowsXP Professionalではnetstatコマンドが強化されて、次の手順でポート番号から実行しているプログラムを割り出すことが可能だ。なお、WindowsXP Home Editionにはtasklistコマンドがないため、プログラムまで判別することはできないが、Ctrl+Alt+DelコマンドでWindowsタスクマネージャを呼び出して、「プロセス」タブを参照すれば、実行しているプログラムを確認できる。これはWindowsXP Professional Editionでも同様だ。

画面
「スタート」−「ファイル名を指定して実行」から「cmd」を実行してコマンドプロンプトを起動する。(「スタート」−「すべてのプログラム」−「アクセサリ」−「コマンドプロンプト」でも実行可能)

画面
次のコマンドを実行する
netstat -ano

画面
開いているポート一覧と、対応したプロセスID(PID)が表示される

画面
プロセスIDの実際のプログラムは、次のコマンドで判別しよう。
tasklist /svc /fi "PID eq <プロセスID>"
たとえば、プロセスIDが1192のものを調べたい場合は、
tasklist /svc /fi "PID eq 1192"
と入力すればよい。Enterキーを押すと「イメージ名」に対応するプログラム、「サービス」にサービス名が表示される

画面
WindowsXP Home Editionの場合は、Ctrl+Alt+DelでWindowsタスクマネージャを起動し、表示をカスタマイズすればプロセスを確認できる。ちなみにWindowsXP Professional Editionでも同様だ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ