Webページはなぜ見られるの?ページをブラウザで取得する流れを見てみよう!

皆さんは何かしらの端末を使ってこのWebページを閲覧してくださっていると思います。

現在、インターネットの利用は「メール」や「Webページの閲覧」がほとんどを占めます。では、この内「Webページの閲覧」ですが、どのような仕組みで閲覧できるようになっているのかご存知でしょうか。とても気楽に閲覧できるため、気にしたことはあまり無いという方も多いかと思います。

しかし、インターネット関連のトラブルも同じく誰にでもやってきます。インターネットに繋がらないというトラブルは代表的ですね。そんなとき、どこにドラブルがあるのかある程度推測できる力があると時間も浪費せず役立つかと思います。

そこで、今回は「WebブラウザでなぜWebページを見ることができるのか」を焦点に当てて、ネットワークの仕組みの一端を、ある程度噛み砕いた内容で解説していきたいと思います。どんな経路でデータが流れていっているのか分かれば、場合分けによる原因特定が容易になるので概要だけでも覚えていただければ幸いです。


Webブラウザを起動、URLを指定

それでは順番に見て行きましょう。
環境ですが、今回の解説ではパソコンを使いインターネットへ接続、閲覧をするということを前提にします。

Webブラウザを起動してURLを指定

URLを指定

まず、Webページを閲覧するためには「Webブラウザ」を起動する必要があります。

Webブラウザとは、World Wide Web(略称:WWW)と呼ばれるインターネット上で提供されているシステムを利用するためのソフトウェアです。Webブラウザを使ってインターネットに繋ぐと、WWW上にあるWebページなどのコンテンツを閲覧することができるようになります。

このWebブラウザを使ってWebページを閲覧するためには「Uniform Resource Locator(ユニフォーム リソース ロケータ)」、通称「URL」を指定する必要があります。URLは、簡単に言うとインターネット上にある各コンテンツの『住所』を示しています。URLを指定するということは、Webページや動画・音楽などのコンテンツ(資源)の場所を指定していることと同義になります。(URLは日本語で「統一資源位置指定子」とも言います。)

URLの文法

http://michisugara.jp/archives/2013/web_access.html

以上のURLは、この記事のページのURLです。

スキーム名

最初の「http」の部分です。この部分では、どんな約束事(プロトコル)でデータを送受信すればよいかを決めます。「http」ならWebページなどのコンテンツを、「mailto」なら電子メールの宛先を表すための約束事に則った通信をしてくださいと指示します。

ホスト名、ドメイン名

「://」の直後に来る「michisugara.jp」の部分です。ネットワーク上にある機器を識別するため個別に割り振られた名前を「ホスト名」と言います。また、そのホストに付いているホスト名、またはそのホストが所属するネットーワーク名を「ドメイン名」と言います。なので、ホスト名はドメイン名の一種です。

ドメイン名はIPアドレスと関連付けられ、ネットワーク上の住所として扱うことができるようになっています。

パス名など ドメイン名以下の記述で、この記事のURLで言うと「archives/2013/web_access.html」の部分です。これは所謂「詳細」で、コンテンツの場所を示すために記述します。この記事は michisugara.jp というドメインの中にある「archives フォルダ」→「2013 フォルダ」→「web_access.html ファイル」を参照してくださいと指示しています。

DNSサーバーへIPアドレスを問合せ - 名前解決

WebブラウザでURLを指定するとインターネットと接続して通信を開始します。

URLを指定しているので「すぐにそのデータが保存されているサーバーへデータを取得しようとするんじゃないの?」と考える方が多いかもしれませんが、実は違います。確かにURLはデータが保存されているデータまでの住所だと解説しましたが、URLの情報だけでは指定したデータまで辿り着けないのです。

これは、URL自体に「ネットワークのルールに則った本来の住所情報」、つまり「IPアドレス」の情報が入っていないからです。

ネットワーク上の住所 - IPアドレス

IPアドレス【アイピーアドレス:Internet Protocol address】とは、ネットワーク上に接続された通信機器や端末1台1台に割り振られている識別番号のことを指します。名前だけはご存じの方も多いでしょう。

各端末へ固有のアドレスを割り振ることで、ネットワーク上にある通信機器を特定でき、相互間で正しく通信ができるようになります。まさに住所(アドレス)なのです。これが無いと正しく通信ができなくなります。

URLをIPアドレスへ変換 - DNSサーバーへ問合せ

URLにはこの「IPアドレス」の情報が入っていないので、どこかに「このドメイン名(ホスト名)を使っているサーバーのIPアドレス」を調べてもらわなくてはいけません。そのためには、「URLとIPアドレスを関連付けさせている場所」へ問い合わせる必要があります。

この「URLとIPアドレスの関連付け」をしているサーバーを「DNSサーバー」【Domain Name System】といいます。

名前解決
▲クリックで拡大

  1. Webブラウザで「http://example.com」を指定したとします。

    すると、クライアント側(Webブラウザを利用している端末)から「リゾルバ【Resolver】」というプログラムを使った "問い合わせ" をDNSサーバーへ送信します。

  2. DNSサーバーがその問合せを受けると、受け取ったURLに記述されているドメイン名(ホスト名)に対応したIPアドレスへ自動的に変換してくれます。変換後、DNSサーバーはクライアントへIPアドレス「192.168.0.1」を返してくれます。

  3. IPアドレスを教えてもらったクライアントは、次に「192.168.0.1」というWebサーバーへアクセスをします。IPアドレスが判明したため、直接データを貰いに行けるようになったためです。

  4. 目的のWebサーバーはクライアントへ向けてWebページや画像、動画データなどを送信し、Webブラウザが表示します。PHPなどの動的なデータがあった場合は、状況に応じてサーバー内で処理した後に送信を開始します。

この一連の流れを「名前解決【name resolution】」といいます。

DNSサーバーがURLをIPアドレスへ変換、それをクライアントへ送信したら教えてもらったIPアドレスへ向けて接続し、Webサーバーがコンテンツを送信してくれます。「名前(URL)」から住所(IPアドレス)を割り出す(解決する)一連の流れが常に行われているのです。

インターネット上にコンテンツをURLから所得するためには、一度DNSサーバーへ問い合わせる必要があり、ここでIPアドレスを教えてもらって初めてコンテンツを所得しようとします。

当ブログは「さくらインターネット」というホスティング会社のサーバーを借りて運営しています。このブログのIPアドレスは「219.94.128.203」になるので、ブラウザのアドレスバーへ入れて検索してみてください。「このサーバは、さくらのレンタルサーバで提供されています。」という表示がでて「さくらインターネット」管理下のブログであることがわかります。

トラブルの切り分け

色んな所を省いた解説ですが、Webブラウザでコンテンツを表示する仕組みについて解説しました。

この流れが分かると、よくある「インターネットに繋がらない」というトラブルの解決に繋がることがあります。
以下に例を示しますので見てみましょう。

DNSサーバーは接続OK、Webサーバーへ接続できない

「インターネットに繋がらない」というエラーの中で、コンテンツを保存しているWebサーバーに問題がある場合です。この場合、DNSサーバーによるIPアドレスへの変換は出来て教えて貰っていますが、そのIPアドレスへアクセスしても応答が無いということを意味します。

コマンドプロンプトでpingを送信してみます。
ping【Packet INternet Groper:ピン】 とは、ネットワークが正常に接続されているのかどうかを確認するためのプログラムです。コマンドプロンプトを起動し、pingコマンドを指定した後、適当なサイトのURLを記述して見ます。

コマンドプロンプトの起動方法は以下の記事を参考にしてください。

C:\Users\○○○>ping www.yahoo.co.jp

www.g.yahoo.co.jp [124.83.187.140]に ping を送信しています 32 バイトのデータ:

要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

124.83.187.140 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)

URL「www.yahoo.co.jp」を指定してDNSサーバーがIPアドレス「124.83.187.140」へと変換してくれました。そこからそのIPアドレスへアクセスを試していますが、その要求がタイムアウトし繋がらないことを表しています。

この場合、DNSサーバーへは接続が正しく行なわれIPアドレスへの変換もうまくいっていますが、変換されたIPアドレスへは接続できずエラーとなっています。なので、ブラウザはコンテンツを所得できずエラー画面のみ表示されてしまいます。

解決策

DSNサーバーまでは接続できているので、少なくともインターネットへは接続できていることになります。ただ、変換してくれたIPアドレスへはアクセス出来ない、そんな状況です。このとき、他のサイトへは接続できたりするのであれば、そのサイトのWebサーバーの機能が停止(落ちている)している、またはすでにそのサイトが無くなった可能性が高いです。

この場合は、そのWebサーバーが普及するのを待つ必要があります。無くなった場合は、管理者が復活させない限りアクセス出来ないので諦めてください。

インターネットには接続できている状態なので、こちらで色々設定を変更したりする必要はないことが多いです。

DNSサーバーへは接続できない、Webサーバーには接続できる

「インターネットに繋がらない」というエラーの中で、DSNサーバーに接続できないことが問題になっている場合です。DSNサーバーに接続できないため、IPアドレスが取得できずWebサーバーへ接続できないのです。

C:\Users\○○○>ping www.yahoo.co.jp
              
ping 要求ではホスト www.yahoo.co.jp が見つかりませんでした。
ホスト名を確認してもう一度実行してください。

URLでpingを送ってみると、ホストが見つからないとエラーがでてしまいます。因みに、ホスト名を間違えても同じ表示になるので注意。ただ、これだけではインターネットに繋がっているかどうかまでは診断できないので、今度はIPアドレスを直接入力して確かめてみます。

C:\Users\○○○>ping 124.83.187.140

124.83.187.140 に ping を送信しています 32 バイトのデータ:
124.83.187.140 からの応答: バイト数 =32 時間 =24ms TTL=50
124.83.187.140 からの応答: バイト数 =32 時間 =23ms TTL=50
124.83.187.140 からの応答: バイト数 =32 時間 =27ms TTL=50
124.83.187.140 からの応答: バイト数 =32 時間 =23ms TTL=50

124.83.187.140 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 23ms、最大 = 27ms、平均 = 24ms

IPアドレスを直接入力して試したとき、以上のように正しく接続ができた場合、インターネットには接続できていますが、DSNサーバーに接続できずIPアドレスへ変換してくれなかったことによる問題であることが分かります。

解決策

この場合の解決策は、原因が多岐にわたることがあり厄介です。DSNサーバー自体が何らかの原因により機能を停止してしまった場合は復旧するのを待つしかありません。ただ、問題が自分が使っているパソコンなどにある場合は面倒です。DNSサーバーへ接続するための設定に不備があったりしても同じ現象になるため、もっと詳細に原因を切り分ける必要があります。

この記事ではそこまで詳細な切り分けを解説できないので、他のサイトを参考にしてみてください。

DNSサーバーへもWebサーバーへも接続できない

URL、IPアドレス両方でpingを飛ばしても応答がない場合、そもそもインターネットへ接続できていない可能性が濃厚です。

この場合、ほとんどは自分が利用しているパソコンやモデム、ルーターなどの不具合が原因です。パソコンの接続設定でミスをしていたり、LANポートなどが物理的に破損していたり。モデムやルーターが不具合を起こしている場合も同じくネットには繋がりません。

その場合の解決策は下記の記事にて書いておりますので参考にどうぞ。

まとめ

最後のほうが雑になってしまいましたが、これでひと通り解説いたしました。

Webブラウザでコンテンツを何気なく表示していたかと思いますが、通信の流れを見ると直接コンテンツを取得しているのではなく、一度DNSサーバーへ問い合わせていることがお分かりになったでしょうか。

この流れがわかることで、ネット関連のトラブルもより詳細な切り分けが可能になり、解決の手助けとなるかと思います。
この記事も何かの役に立てれば幸いです。

スポンサーリンク

Track Back

Track Back URL

コメントする

非公開。必須ではありません。

(いくつかのHTMLタグ(a, strong, ul, ol, liなど)が使えます)

このページの上部へ

サイト内検索

広告

最近のコメント

Powered by Movable Type 6.3.2