TCP/IPアレルギー撲滅ドリル【総まとめ編2回目】

パケット君がWebページ表示の
冒険に失敗するとき

福永勇二
インタラクティブリサーチ
2005/5/28


素朴な疑問
問題を追求する
1 原因の切り分けとは?
2 Webを表示できない理由は?
3 TCP/IPの切り口からはどんな問題が起きますか?
4 すべてのうまくいかない場合を知りたいのですが……
アプリケーションの問題
5 アプリケーションとは?
6 アプリの代表的な問題は?
7 ポート番号は?
8 ドメイン名やIPアドレスは?
9 アプリケーション自体は?
ネットワーク問題を追求する
10 ネットワークの問題は?
11 Ethernetの問題は?
121 IPの問題は?
13 重複したIPアドレスを使うと?
14 自分のIPアドレスを間違えたら
15 ルーティングテーブルは?
16 TCPの問題とは?
 通信でうまくいかない
 ところはどこ?

 パケット君の冒険は前回(参照:TCP/IPアレルギー撲滅ドリル【総まとめ編】Webページが表示されるまでのパケット君の冒険旅行)のように、いつも成功するとは限りません。総まとめ編2回目の今回は、パケット君が冒険に失敗してパケットがうまく届かないとき、どんな原因が考えられるのかを見てゆきましょう。うまくいかないケースを考えることは、それ自身をより深く理解することにつながります。また、何かトラブルが起きたときの原因探しや、問題解決にも役立つはずです。

・原因の切り分けとはなんですか?

 一言で「通信ができない」といっても、その原因はさまざまです。ぼぉ〜っと眺めていても、おそらくその原因は見えてきません。こういうときは、原因がどこにあるのか、少しずつ切り分けて考えるとよいでしょう。

図1 Webページを表示するまでの流れ

 例えば、図1を見ると、Webページを表示するまでに、(1)URLを分析する、(2)アクセス先のIPアドレスを確定する、(3)htmlの内容を読み出す、(4)htmlの内容を表示するの4段階があることが分かります。「Webページを表示できない」というトラブルが起きたとき、この4段階のどこに問題があって起きるのか見極めるわけです。

 これら4つの段階のうち、大きく分けて(1)と(4)はWebブラウザに関するトラブルで、(2)と(3)がネットワークに関するトラブルということができます。TCP/IPを取り扱っているこのページでは、主に(2)と(3)のトラブルにスポットを当てます。

 なお、この例はWebページ表示の場合ですが、ほかのプログラムに関しても、先にIPアドレスを決めて、実際の通信に移るのが一般的で、処理の流れはこれと似たような順になると考えられます。

・Webページを表示できない理由は?

 (2)や(3)に問題があると、なぜWebページを表示できないのでしょうか?

 まず(2)ですが、このステップに問題があると、ドメイン名で指定したWebサーバのIPアドレスを求めることができません。TCP/IPを使った通信では、最終的に通信相手をIPアドレスで指定する必要があります。Webサーバへのアクセスの場合、URLの中に含まれているWebサーバ名(ドメイン名)を取り出して、それからWebサーバのIPアドレスを決めます。しかし(2)がうまくいかないと、ドメイン名からIPアドレスを決めることができず、通信相手を特定できない状態になってしまいます。結果として、いうまでもなくWebページを表示できません。

 次に(3)ですが、このステップに問題があると、Webページの内容を書き表したhtml情報を、Webサーバから読み出すことができません。この場合もやはり求めているWebページは表示できないことになります。

 これらの様子は、例えば、Aさんに荷物を送ろうとするとき、「Aさんの住所が分からない」場合も、「荷物の配送途中で事故が起こった」場合も、どちらも荷物が届かないのと似ています。

・URLの意味については「URLってどうやって書くのが正しいんですか?」を参照してください
・DNSの働きとドメイン名については「一言でいえばDNSって一体何なのですか?」を参照してください
・IPアドレスの働きについては「IPアドレスってナンですか?」を参照してください

TCP/IPの切り口からはどんな問題が起きますか?

 先の項目で、通信がうまくいかない原因には、大きく分けて、「アクセス先のIPアドレスの確定ができない」「アクセス先と通信ができない」の2つの理由があることを説明しました。では、これらがうまくいかない理由はどこにあるのでしょうか?

 TCP/IPを利用した通信で一番多いと思われるスタイルは、図2のようにルータを経由して行う通信です。「アクセス先のIPアドレスの確定」も「アクセス先との通信」も、いずれもこのスタイルで通信を行いますから、この中でどんな問題が起きるかを考えれば、起こりそうな問題を想像することができます。

図2 ルータを経由した通信の例(図クリックで拡大表示)

 いい換えれば、この図が表す正しいパケット配送のどこかに問題が起きると、「アクセス先のIPアドレスの確定」ができなかったり、「アクセス先との通信」ができなくなったり、目的とするWebページを表示できない現象が起きるわけです。

・すべてのうまくいかない場合を知りたいのですが……

 多くのことがそうだと思いますが、何かがうまくいく場合は1つまたは少数しかないのが普通です。例えばTCP/IPの通信が「うまくいく場合」は、先の図2のように割とあっさり描くことができます。

 これに対して、話がややこしいのは「うまくいかない場合」の方です。普通、うまくいかない場合は無限にあります。そのため、図2のように1枚の絵で「これがうまくいかない場合です」と書くことができません。

 そこでここでは、図2を使いながら「うまくいく場合の、ここに問題が起きたら……」と、各部分に発生し得る問題を想定して、そのときにどうなるかを考えてみることにしたいと思います。すべての問題点を見ることは到底できませんが、よく起きる、またキーポイントになりそうな例は見ることができるはずです。

 この先、説明に当たっては、図2の中を最上層の「アプリケーション」部分と、それ以下の「TCP、 IP、 Ethernet」部分の2つに分けて説明します。

TCP/IPアレルギー撲滅ドリル【総まとめ編】(2)目次
1  通信でうまくいかないところはどこ?
2  アプリケーション部分で起きる問題とは?
3  ネットワークで起きる問題を追求する

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編)
連載:インターネット・プロトコル詳説
連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜







「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間