先日特定のポート番号の通信を発生させる方法について描きました。 それに近いタイプの技術メモを残しておきます。
Windowsから特定の通信がどのソフト(プロセス)から発せられているかを調べる方法です。 例えば特定の通信が延々と一部の端末から発せられているときなどに、何のプログラムが通信をしているのかを調べるのに役立ちます。
これも、コマンドプロンプトから実行可能ですよ。
どのポートで通信を発しているか確認するコマンド
コマンドプロンプトから、下記のコマンドを使います。
netstat -aon 1
ちょっとズラーッと数値が並んでいてわかりづらいですが…IPアドレスの後ろに、ポート番号が表示されています。 これが今現在、発生している(もしくは、待機している)通信の情報です。
更に一番後ろの列には、「PID」が表示されてます。 PIDとはプロセスIDのことで、ここの番号が通信しているソフトウェアを特定するのに必要になる値です。 詳しくはこの後の項目で。
コマンド内の数字の「1」は、何秒おきに通信を確認するかの設定値です。 1にすると、1秒毎に通信を確認してくれるわけです。
情報量が多すぎて画面が煩雑になりそうであれば、秒間を空けて表示してみてもいいと思います。
特定のポート番号だけ表示したい
仮に数秒おきに表示するようにしたとして…それでもWindowsというものは、常に色んな通信を行っているわけで、netstatのコマンドで表示される情報量がどうしても多すぎます。
目当てのポート番号の通信を探すのが大変な場合は、findコマンドを一緒に使うことで表示内容を絞れます。
netstat -aon 1 | find "ポート番号"
上記のコマンドを使いましょう。 例えばHTTP(80/TCP)の通信を使いたいときは、「netstat -aon 1 | find ":80"」と入力します。
すると、こんな感じで表示されるようになります。 すっきりしましたよね。
※当機能は現在ベータ版です。 予告なく公開終了する場合があります。
タスクマネージャからPIDを確認
さて先ほどのPID、このIDがどのソフトウェア(プロセス)を示しているのかを確認します。
タスクマネージャを開いて、「プロセス」タブへ移動します。
ここからPIDを探すことになりますが、列に表示されていない場合はメニューの「表示」→「列の選択」へ。 ここで表示するカラムを選択することが出来るので、「PID(プロセス ID)」を追加しましょう。
これでタスクマネージャからPIDが確認出来るようになりました。 後は、先ほどのnetstatの出力結果と見比べて、どの通信を発生させているのがどのソフトウェアなのかを、確認しましょう。
悪さをしているソフトウェアがわかったら、その通信をどう止めるかの目途が立つはずです。
大体は、常駐ソフトなどが常にアップデートを確認しようとしてインターネットなどに通信を発生させてる場合が多いですねー。