ネットワークの接続拒否とタイムアウトの違いを知るTech TIPS

ネットワークの通信ができない場合、その原因としては「接続拒否」と「タイムアウト」が考えられる。接続拒否とは、接続要求に対して拒否応答が戻ってきている状態、タイムアウトとは、何も応答が戻ってこない状態を指す。この2つはエラーと判定されるまでの時間で区別することができ、トラブルシューティングの参考にすることができる。

» 2004年07月10日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows NT/Windows 2000/Windows XP/Windows Server 2003


解説

 TCP/IPにおける通信では、IPアドレスとポート番号が重要な意味を持っている。詳細については右の関連記事を参照していただきたいが、通信相手のマシンを特定するためにIPアドレスが使われ、さらにそのマシン上で動作しているアプリケーションを特定するためにポート番号が利用される。

 例えばWebブラウザで「http://192.168.1.2:12345/」というURLを指定した場合、「192.168.1.2」がIPアドレスで、「12345」がポート番号を表している(デフォルトではポート番号の80番がWebアクセスに利用されるので、「http://192.168.1.2/」は「http://192.168.1.2:80/」と同じ意味になる)。

 もしIPアドレスが間違っていて、かつ、そのIPアドレスが存在しない場合、そのアクセスはエラーとなる。しかしIPアドレスは正しいが(そのIPアドレスは存在するが)、通信先のポート番号の指定が間違っていた場合も、やはりエラーとなる。具体的には、次の画面のように、いずれのケースでも同じエラー・メッセージが表示される。

Internet Explorerにおけるエラー・メッセージ Internet Explorerにおけるエラー・メッセージ
これは、存在しないIPアドレスのWebページを開こうとした場合の例のエラー・メッセージ。ここで「192.168.1.2」は存在しないIPアドレスであるとする。しかし「192.168.1.2」が実在するIPアドレスであるが、ポート番号12345が利用されていない(HTTPによるサービスが動作していない)ポート番号である場合も、やはり同じエラー・メッセージが表示される。結果のエラー画面からは、この2つのエラーを区別することはできない。IPアドレスやポート番号の部分を読者のネットワーク環境に合わせて、いろいろと試してみていただきたい。
  (1)ここではIPアドレス=192.168.1.2、ポート番号=12345を指定して、Webページを開こうとしている。
  (2)指定されたあて先と通信できないというエラー・メッセージ。実在するIPアドレスでも存在しないIPアドレスでも、同じメッセージが表示されることが分かる。またポート番号をデフォルトの80にしたり、12345といった(ありえないような)ものにしたりしても、同じエラー・メッセージが表示されることが分かるだろう。

 この2種類のエラーは、一見すると同じような症状に見え、実際Internet Explorerではどちらでも同じエラー・メッセージが表示されるが、そのエラーが発生する経緯や原因は少し異なっている。この違いを知ることは、ネットワークのトラブルシューティングを行ううえで非常に重要なので、よく知っておきたい。

 よく「ネットワークがつながらない」という言葉を聞くが、その原因には、「接続拒否」と「タイムアウト(無応答)」という2つのケースがある(*1)。

*1 これ以外にも、名前解決ができない(FQDN名からIPアドレスへの変換ができない)というケースなども考えられるが、ここでは、IPアドレスは正しく求められているものとする。


 「接続拒否」とは、指定されたIPアドレスは存在しているが、そのポート(TCPポートもしくはUDPポート)に対する接続(通信)が拒否される状態である。一方の「無応答」とは、指定されたIPアドレスが存在せず、何も応答が戻ってこないという状態である。図にすると、次のようになる。

接続拒否とタイムアウト 接続拒否とタイムアウト
接続拒否とは、ある接続要求に対して、そのようなサービスは存在していない(リッスンしていない)という理由で、拒否する状態を表す。タイムアウトとは、ある要求に対して、肯定も否定もせず、何も応答を返さないという状態。送信側(図のクライアント側)では、何度か再送処理を行い、それでも応答が戻ってこなければエラーとする。

●通信とエラー

 一般に通信とは、あるコマンドや要求を送信すると、それに対する応答が相手から戻ってくることによって成り立っている。要求を一方的に送信するだけではなく、それに対する応答を受け取って初めて通信が成立するのである(こうしないと、確実な通信が実現できない)。

 このとき受け取る応答には、肯定応答(コマンドを正しく受け取ったという確認の応答)だけでなく、否定応答(例えば、そのコマンドに対する要求は認められていませんといった、否定的な応答)もある。さらに、何も戻ってこないというケースもある。これをまとめると、次のようになる。

  1. 要求に対して、肯定応答が戻ってくる
  2. 要求に対して、否定応答が戻ってくる
  3. 要求に対して、何も戻ってこない

 通常の通信では、1の繰り返しによって成り立っている。例えばWebサーバに対してGETコマンドを送信すると、該当するWebページのデータが(肯定)応答として戻ってくる。

 だが、指定されたポート上にサービスが存在しない場合は、通信そのものが成立せず、2の状態になる。

 例えば、Webサーバを実行していないマシンに対してWebブラウザでアクセスしようとしてもエラーとなる。具体的には、TCPの80番ポートをリッスン(待ち受け)していないマシンに対して、TCPの80番ポートをあて先とするTCP通信を確立しようとしてもエラーとなり、TCP接続そのものが拒否される(実際にはTCPのRESET応答が戻ってくる)。UDPの場合は、ICMPの「Destination Unreachable(あて先に到達できない)」エラーが戻ってくる。詳細は、右上の関連記事にある「タイプ3―あて先不達」の項を参照していただきたい。

 もしIPアドレスそのものが存在しない場合は、当然のことながらそのエラーを返してくる相手がいないため、3の無応答状態になる。すると送信側では、途中でエラーが起こったのではないかと考え、念のために何度か再送処理を行う。そして、決められた回数だけ再送しても何も応答が得られなければ、通信相手が存在しないものとして、エラーとして扱う。

 以上で分かると思うが、2の状態が「接続拒否」エラーで、3の状態が「タイムアウト」エラーである。

●「接続拒否」エラーと「タイムアウト」エラーの判別

 このように、通信エラーには「接続拒否」と「タイムアウト」という2つの種類があるが、Internet Explorerではどちらも同じエラー・メッセージを表示するため、その違いを区別することができない。だがその挙動を詳しく観察することにより、2つを区別することができる。

 この2つのエラーの違いは、エラーであると判別されるまでの時間で区別することができる。先の図からも分かるように、接続拒否の場合は、相手からの拒否応答がすぐに戻ってくるといういう特徴がある。同一LAN上ならば1秒もかからない。手元のInternet Explorerでは、1秒程度でエラー・メッセージが表示された。

 これに対してタイムアウト・エラーの場合は、非常に時間がかかるという特徴がある。通常は数秒から十数秒程度の間隔をおいて再送するため(場合によってはさらにアプリケーション側でもリトライ処理を行うことがある)、最終的には数十秒という時間が経過しないと、エラーとならない。手元のInternet Explorerでは、エラーとなるまでに約20秒必要であった。

●エラーの種類によるトラブルシューティング方法

 接続拒否エラーとタイムアウト・エラーの違いが分かれば、トラブルシューティングの一助とすることができるだろう。この2種類のエラーの違いは、例えばWindows Server OSに付属のネットワーク・モニタ(ネットワーク・パケット・アナライザ)などを使えば直ちに分かる種類のものであるが、あいにく手元にツールがない場合や、ネットワーク・モニタを使うスキルがないような場合には、このような簡易的な判別方法でも十分役立つ。

 接続拒否エラーになるということは、サーバ側でサービスが動作していないということである。この場合は、サーバ側のサービスの(ポート番号などの)設定を見直したり、netstat -anで正しくリッスンしているかどうかなどをチェックしたりすればよいだろう。

 タイムアウト・エラーになるということは、IPアドレスそのものが存在していないということである。そのため、クライアント側の名前解決の結果が正しいかどうかを確認したり、pingコマンドを使ってサーバが存在しているか/サーバと通信できるかどうかを調べたりすればよい。

 なお、ファイアウォール(パケット・フィルタ)を使ってポートをブロックしている場合もこのタイムアウト・エラーになるので、ファイアウォールの設定も確認するとよいだろう(ファイアウォールは、クライアント側、経路途中のルータ、サーバ側のいずれの場所でも使われる可能性があるので、注意すること)。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。