Windows ネットワークにおける TCP/IP 接続の問題のトラブルシューティングは、特定のシステム上の接続とサービスの数が膨大であることに起因します。接続の状態や実行中のサービスを特定することで検索範囲を絞り込むことはできますが、それには時間がかかります。しかし、あまり活用されていない Windows コマンドライン ユーティリティ NETSTAT は、クライアント サービスと TCP/IP 通信に関する情報を迅速に提供することで、不正な接続の検出時間を短縮できます。ここでは、NETSTAT の動作原理と表示される情報の解釈方法について説明します。
NETSTATユーティリティの基本Windows NTまたは2000でNETSTATユーティリティを使用するには、コマンドプロンプトを起動する必要があります。Windows 9xまたはMeでは、MS-DOSプロンプトを使用します。NETSTATユーティリティを実行するには、表A
に示すパラメータが必要です。
NETSTAT ユーティリティの構文は NETSTAT [–a] [–e] [–n] [–s] [–p protocol ] [–r] [ interval ] です。ここで、protocolを指定されたプロトコル (UDP または TCP) に置き換え、intervalを指定された間隔に置き換えます。
パラメータ | 説明 |
–あ | すべての接続とリスニングポートを表示します |
–e | イーサネット統計を表示します |
–n | フレンドリー名を使用する代わりに、アドレスとポート番号を数値形式で表示します。 |
–s | プロトコル別に分類された統計情報を表示します |
–pプロトコル | 指定されたプロトコル(TCPまたはUDP)の接続を表示します。 |
–r | ルーティングテーブルの内容を表示します |
間隔 | 選択した統計情報を表示します。表示間隔は秒単位で設定します。統計情報の表示を停止するには、[Ctrl]Cを押します。 |
NETSTATユーティリティパラメータ
NETSTATユーティリティを使用したTCP/IP接続の調査
現在のすべてのTCP/IP接続の状態を調査し、特定のシステムで実行されているIPサービスを特定するには、NETSTATユーティリティの基本パラメータである-aと-nを使用します。この2つのパラメータを組み合わせて、現在のTCP/IP接続の簡潔な分析を行うこともできます。
図 A は、 –a パラメータからのサンプル出力を示しています。
図A |
![]() |
NETSTAT の –a パラメータは、すべてのアクティブな TCP 接続と利用可能な UDP ポートを表示します。 |
生成された結果からわかるように、このパラメーターは、可能な場合はフレンドリ名を使用して、すべてのアクティブな TCP 接続と使用可能な UDP ポートを表示します。
図 B は、 –n パラメータからのサンプル出力を示しています。
図B |
![]() |
NETSTAT の –n パラメータは TCP 接続のみを表示します。 |
この画像から、-n パラメータを使用すると TCP 接続のみが表示され、フレンドリ名ではなく数値アドレスが使用されることがわかります。
図 C は、 2 つのパラメータを組み合わせた結果のサンプルを示しています。
図C |
![]() |
両方のパラメータを組み合わせると、よりきれいな表示が得られます。 |
この形式では、最もきれいな表示が提供され、現在の TCP/IP 接続に関する情報が読みやすくなります。
NETSTATユーティリティによって表示される結果の分析
NETSTATユーティリティの基本パラメータである-aと-nを使用すると、4つの統計列が表示されます。次に、各列ヘッダーの下に表示される統計情報の解釈方法を説明します。
プロトコル 「
プロトコル」列には、この接続で使用されているプロトコル名が表示されます。プロトコルはTCPまたはUDPのいずれかです。この情報を使用して、調査対象の接続にプロトコルの種類が適切であることを確認できます。
ローカルアドレス
ローカルコンピュータのIPアドレスと、この接続に使用されているポート番号が「ローカルアドレス」列に表示されます。コロンの後にはポート番号が続きます。例えば、図Cの9行目では、ローカルコンピュータのIPアドレスは192.168.1.101、ポート番号は139です。
–a パラメータを使用し、対応するフレンドリ名が存在する場合、IP アドレスまたはポート番号の代わりにその名前が表示されます。ポートは存在するものの確立されていない場合は、ポート番号の代わりにアスタリスクが表示されます。
外部アドレス
「外部アドレス」列には、リモートコンピュータのIPアドレスと、この接続に使用されているポート番号が表示されます。対応するフレンドリ名が見つかった場合は、IPアドレスまたはポート番号の代わりに表示されます。ポートは存在するものの確立されていない場合は、ポート番号の代わりにアスタリスクが表示されます。
状態
「状態」列の情報を解釈するには、接続の開始と終了の両方において 3 ウェイ ハンドシェイク通信システムがどのように機能するかについて基本的な理解が必要です。
接続の開始:
- クライアント システムがサーバー システムと接続しようとする場合、SYN メッセージを送信します。(SYN は同期シーケンス番号の略です。これは、クライアント固有の初期シーケンス番号 (ISN) と、クライアントが接続しようとしているサーバー上のポート番号で構成されます。)
- サーバーは、クライアントから SYN メッセージを受信すると、独自の SYN メッセージ (接続要求の行われたポート番号と固有の ISN) と、クライアントの ISN に 1 を加えたもので構成される確認応答 (ACK) で応答して確認を要求します。
- 次に、クライアントはサーバーの ISN に 1 を加えた ACK で応答して要求を確認します。
接続を閉じる:
- クライアントはサーバーへのデータ送信を完了すると、終了(FIN)メッセージを送信します。この時点で接続は半分閉じられており、クライアントはもはやデータを送信していませんが、サーバーからのデータ受信はまだ可能です。
- サーバーは、クライアントのFINに1を加えたACKを送信することで応答します。その後、サーバーはFINメッセージを送信します。
- クライアントは、サーバーのFINに1を加えたACKで応答します。この時点で、サーバーは接続を閉じます。
3ウェイハンドシェイクについて詳しく知りたいですか?
この 3 ウェイ ハンドシェイク通信システムの動作の詳細については、RFC793 の機能仕様セクションを参照してください。
「状態」列の内容は、特定の接続の状態を示します。これらの状態は、TCPが使用する3ウェイハンドシェイク通信システムを表しています。表Bには、この列に表示される可能性のある10種類の状態が示されています。接続が正常に機能していない場合は、その接続の種類に適さない状態が表示されます。
州 | 説明 |
閉店 | サーバーがクライアントからACK信号を受信し、接続が閉じられたことを示します |
閉じる待機 | サーバーがクライアントから最初のFIN信号を受信し、接続が閉じられていることを示します。 |
設立 | サーバーがクライアントからSYN信号を受信し、セッションが確立されたことを示します。 |
FIN_WAIT_1 | 接続はまだアクティブだが現在使用されていないことを示します |
FIN_WAIT_2 | クライアントがサーバーから最初のFIN信号の確認を受信したことを示します。 |
最終確認 | サーバーが独自のFIN信号を送信中であることを示します |
リスニング | サーバーが接続を受け入れる準備ができていることを示します |
SYN_受信済み | サーバーがクライアントからSYN信号を受信したことを示します |
SYN_SEND | この特定の接続が開いておりアクティブであることを示します |
TIME_WAIT | クライアントが接続がまだアクティブだが現在使用されていないと認識していることを示します。 |
可能な状態
NETSTATユーティリティを使用して特定のシステム上の現在のすべてのTCP/IP接続の状態を調べる場合、ポート番号を識別し、どのサービスがそれらに対応しているかを把握する必要があります。TCPおよびUDPポートの割り当ての詳細なリストは、MicrosoftのWindows 2000 Webサイトでご覧いただけます。
コマンドラインの代替
NETSTATユーティリティが提供する情報がトラブルシューティングに必要な情報であるにもかかわらず、コマンドラインでの作業が面倒な場合は、Fresh SoftwareのX-NetStat Professionalを検討してみてはいかがでしょうか。この優れたユーティリティはGUIで実行でき、NETSTATユーティリティと同じ情報に加え、さらに多くの情報を提供します。X-NetStat Professionalは30日間無料でダウンロードできます。30日間経過後は、プログラムをアンインストールするか、30ドルで登録する必要があります。ただし、X-NetStat Standardエディションの登録ユーザーであれば、わずか15ドルでアップグレードできます。この製品に関するTechProGuildの記事を近日中に公開予定ですので、ぜひご覧ください。
結論
NETSTATユーティリティは、ネットワーク上のTCP/IP接続を解析するための優れたツールです。NETSTATユーティリティの基本パラメータである-aと-nを使用することで、現在のTCP/IP接続の状態を調べ、特定のシステムで実行されているIPサービスを特定できます。クライアントサービスとTCP/IP通信の現在の状態に関する情報を提供することで、このユーティリティは問題のあるTCP/IP接続のトラブルシューティングにかかる時間を短縮するのに役立ちます。