Sysinternalsには60以上のツールがあります。中には、直感的に使えるものから、何に使うかよく分からないものまでさまざまです。今回は、極めて直感的に使える「TCPView」を紹介します。
[ツール名]TCPView for Windows
[対象]Windows
[提供元]マイクロソフト
[ダウンロード先][URL]http://technet.microsoft.com/ja-jp/sysinternals/bb897437.aspx(TCPView.zip形式)/[URL]http://live.sysinternals.com/tcpview.exe(ツールを直接ダウンロードして実行)
現在のWindowsネットワークは「TCP/IP」が標準プロトコルであり、TCP/IPがなければ成り立ちません。WindowsのTCP/IP対応は、もともとUNIXのソケット(Socket)インターフェースをWindowsに実装した「Windows Socket(WinSock)」インターフェースが始まりです。
WinSockの実装と同時に、UNIXのポピュラーなTCP/IP関連コマンドもまた、Windowsに導入されました。「arp」「netstat」「nslookup」「ipconfig(UNIXではifconfig)」「ping」「route」「tracert(UNIXではtraceroute)」などです(画面1)。
UNIXやLinuxの管理経験があるITプロの方であれば、Windowsのネットワークの問題を診断する場合でも、迷いなくこれらのTCP/IPコマンドを試してみるはずです。UNIX/LinuxとWindowsコマンドラインオプションは少し異なるところもありますが、コマンドラインに「-?」や「/?」を付けてヘルプを参照すれば、即座に違いを吸収して使いこなせるでしょう(画面2)。
そうしたTCP/IPネットワークの診断に慣れている人であれば、GUIの設定画面を開かなくても、コマンドだけでIPアドレスの設定やルート、名前解決に問題がないかどうかを確認できます。
特定のアプリケーションで発生する通信の問題の場合は、続いてnetstatコマンドでリスン状態やコネクション状態を確認してみるでしょう。しかし、通信アプリケーションが少なかった昔とは違い、最近のコンピューターはネットワークを多用します。netstatコマンドが標準出力(Windowsの場合はコマンドプロンプトのウィンドウ)に垂れ流す膨大な情報から、目的の情報を得るのは難しくなってきました。
netstatコマンドの1回の実行がなかなか完了しない、という経験はないでしょうか。特定のプログラムを実行した際の瞬間的な接続情報を、netstatコマンドでの出力結果から得るのは至難の技です。
さらに、ポートを開いているプログラムの実行ファイルやプロセスIDを調べるには、コマンドラインオプションを調べたり(UNIX/Linuxは通常-p、Windowsは-o)、プロセスIDからプロセスを調査するために別のツール(WindowsのタスクマネージャーやUNIX/Linuxのpsコマンド)を組み合わせたりする必要があります。
Windowsのネットワーク診断で、netstatコマンドからうまく情報を得られないという場合は、「Windows Sysinternals」の「TCPView」を一度試してみてください。TCPViewは、WindowsのnetstatのGUI版のようなツールです。
TCPViewはnetstatコマンドと同様のリスン状態、および接続状態をGUIウィンドウに表示し、既定では1秒間隔で表示をリフレッシュします。常にウィンドウをトップに固定したり、特定の列でソートしたり、手動更新に切り替えたり(pause)することができるので、特定のプログラムを開始したり、操作したりした瞬間のステータスを捉えるのに便利です。
また、プロセスの実行ファイル名(Windowsのnetstatの「-b」オプション)やプロセスID(Windowsのnetstatの「-o」オプション)が既定で表示され、接続中のエンドポイントのみの表示や名前解決の無効化を簡単に切り替えることができます(画面3)。さらには、netstatコマンドには存在しない、エンドポイントごとの送受信パケット数やバイト数をレポートすることもできます。
TCPViewは表示をリフレッシュする際、前回の表示との差分を色付きでハイライト表示してくれます(画面4)。前回の表示以降、既定では次の1秒間で新たに接続が確立(ESTABLISHED)したエンドポイントは、緑色にハイライト表示されます。一方、存在しなくなったエンドポイントは赤色にハイライト表示されたあと、表示から消えます。それ以外で、前回の表示以降にステータスに変化があったもの、例えば、ESTABLIEDからTIME_WAITやCLOSE_WAITに変化したものは、黄色にハイライト表示されます。
通常のnetstatコマンドでも、オプションで一定間隔ごとに再表示させることは可能です。Windowsであればコマンドラインに秒数を指定、UNIX/Linuxであれば「-c」オプション(1秒間隔のみ)を使用します。しかし、netstatコマンドを繰り返し再表示するように指定しても、膨大な接続情報が流れてしまうため、まだ何かよく分かっていない情報を見つけるのは不可能でしょう。TCPViewのハイライト表示は、変化が視覚化されて面白いというだけでなく、問題解決に役立つかもしれない、何らかのヒントを直感的に与えてくれるかもしれません。
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.