TCP/IPアレルギー撲滅ドリル【総まとめ編2回目】パケット君がWebページ表示の
|
|
通信でうまくいかない ところはどこ? |
パケット君の冒険は前回(参照: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アドレスを決めて、実際の通信に移るのが一般的で、処理の流れはこれと似たような順になると考えられます。
(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アドレスってナンですか?」を参照してください |
先の項目で、通信がうまくいかない原因には、大きく分けて、「アクセス先のIPアドレスの確定ができない」「アクセス先と通信ができない」の2つの理由があることを説明しました。では、これらがうまくいかない理由はどこにあるのでしょうか?
TCP/IPを利用した通信で一番多いと思われるスタイルは、図2のようにルータを経由して行う通信です。「アクセス先のIPアドレスの確定」も「アクセス先との通信」も、いずれもこのスタイルで通信を行いますから、この中でどんな問題が起きるかを考えれば、起こりそうな問題を想像することができます。
図2 ルータを経由した通信の例(図クリックで拡大表示) |
いい換えれば、この図が表す正しいパケット配送のどこかに問題が起きると、「アクセス先のIPアドレスの確定」ができなかったり、「アクセス先との通信」ができなくなったり、目的とするWebページを表示できない現象が起きるわけです。
多くのことがそうだと思いますが、何かがうまくいく場合は1つまたは少数しかないのが普通です。例えばTCP/IPの通信が「うまくいく場合」は、先の図2のように割とあっさり描くことができます。
これに対して、話がややこしいのは「うまくいかない場合」の方です。普通、うまくいかない場合は無限にあります。そのため、図2のように1枚の絵で「これがうまくいかない場合です」と書くことができません。
そこでここでは、図2を使いながら「うまくいく場合の、ここに問題が起きたら……」と、各部分に発生し得る問題を想定して、そのときにどうなるかを考えてみることにしたいと思います。すべての問題点を見ることは到底できませんが、よく起きる、またキーポイントになりそうな例は見ることができるはずです。
この先、説明に当たっては、図2の中を最上層の「アプリケーション」部分と、それ以下の「TCP、 IP、 Ethernet」部分の2つに分けて説明します。
|
関連リンク | |
連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編) 連載:TCP/IPアレルギー撲滅ドリル【超実践編】(下位レイヤ編) 連載:インターネット・プロトコル詳説 連載:ルータの仕組みを学ぼう ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜 |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|