皆さんは何かしらの端末を使ってこのWebページを閲覧してくださっていると思います。
現在、インターネットの利用は「メール」や「Webページの閲覧」がほとんどを占めます。では、この内「Webページの閲覧」ですが、どのような仕組みで閲覧できるようになっているのかご存知でしょうか。とても気楽に閲覧できるため、気にしたことはあまり無いという方も多いかと思います。
しかし、インターネット関連のトラブルも同じく誰にでもやってきます。インターネットに繋がらないというトラブルは代表的ですね。そんなとき、どこにドラブルがあるのかある程度推測できる力があると時間も浪費せず役立つかと思います。
そこで、今回は「WebブラウザでなぜWebページを見ることができるのか」を焦点に当てて、ネットワークの仕組みの一端を、ある程度噛み砕いた内容で解説していきたいと思います。どんな経路でデータが流れていっているのか分かれば、場合分けによる原因特定が容易になるので概要だけでも覚えていただければ幸いです。
Webブラウザを起動、URLを指定
それでは順番に見て行きましょう。
環境ですが、今回の解説ではパソコンを使いインターネットへ接続、閲覧をするということを前提にします。
Webブラウザを起動してURLを指定
まず、Webページを閲覧するためには「Webブラウザ」を起動する必要があります。
Webブラウザとは、World Wide Web(略称:WWW)と呼ばれるインターネット上で提供されているシステムを利用するためのソフトウェアです。Webブラウザを使ってインターネットに繋ぐと、WWW上にあるWebページなどのコンテンツを閲覧することができるようになります。
このWebブラウザを使ってWebページを閲覧するためには「Uniform Resource Locator(ユニフォーム リソース ロケータ)」、通称「URL」を指定する必要があります。
URLは、簡単に言うとインターネット上にある各コンテンツの『住所』を示しています。URLを指定するということは、Webページや動画・音楽などのコンテンツ(資源)の場所を指定していることと同義になります。(URLは日本語で「統一資源位置指定子」とも言います。)
URLの文法
https://michisugara.jp/web_access.html
以上のURLは、この記事のページのURLです。
スキーム名 |
最初の「http(https)」の部分です。この部分では、どんな約束事(プロトコル)でデータを送受信すればよいかを決めます。「http(https)」ならWebページなどのコンテンツを、「mailto」なら電子メールの宛先を表すための約束事に則った通信をしてくださいと指示します。「https」となっている場合は、さらにそのページは「SSL/TLS」によって通信が暗号化されていることを明示しています。 |
---|---|
ホスト名 ドメイン名 |
「://」の直後に来る「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台に割り振られている識別番号のことを指します。名前だけはご存じの方も多いでしょう。
各端末へ固有のアドレスを割り振ることで、ネットワーク上にある通信機器を特定でき、相互間で正しく通信ができるようになります。まさに住所(アドレス)なのです。これが無いと正しく通信ができなくなります。
IPアドレスとセキュリティ – ネットワークの仕組み – 道すがら講堂
https://michisugara.jp/ip/
URLをIPアドレスへ変換 – DNSサーバーへ問合せ
URLにはこの「IPアドレス」の情報が入っていないので、どこかに「このドメイン名(ホスト名)を使っているサーバーのIPアドレス」を調べてもらわなくてはいけません。そのためには、「URLとIPアドレスを関連付けさせている場所」へ問い合わせる必要があります。
この「URLとIPアドレスの関連付け」をしているサーバーを「DNSサーバー」【Domain Name System:ドメイン ネーム システム】といいます。
Webブラウザで、例えば「http://example.com」を指定したとします。
すると、クライアント側(Webブラウザを利用している端末)から「リゾルバ【Resolver】」というプログラムを使った “問い合わせ” をDNSサーバーへ送信します。
DNSサーバーがその問合せを受けると、受け取ったURLに記述されているドメイン名(ホスト名)に対応したIPアドレスへ自動的に変換してくれます。変換後、DNSサーバーはクライアントへIPアドレス「192.168.0.1」を返してくれます。(IPアドレスは例です。)
IPアドレスを教えてもらったクライアントは、次に「192.168.0.1」というWebサーバーへアクセスをします。IPアドレスが判明したため、直接データを貰いに行けるようになったためです。
目的のWebサーバーはクライアントへ向けてWebページや画像、動画データなどを送信し、Webブラウザが表示します。PHPなどの動的なデータがあった場合は、状況に応じてサーバー内で処理した後に送信を開始します。
この一連の流れを「名前解決【name resolution】」といいます。
DNSサーバーがURLをIPアドレスへ変換、それをクライアントへ送信したら教えてもらったIPアドレスへ向けて接続し、Webサーバーがコンテンツを送信してくれます。「名前(URL)」から住所(IPアドレス)を割り出す(解決する)一連の流れが常に行われているのです。
インターネット上にコンテンツをURLから所得するためには、一度DNSサーバーへ問い合わせる必要があり、ここでIPアドレスを教えてもらって初めてコンテンツを所得しようとします。
なぜDNSが必要なのか
インターネットや家庭内のWi-Fi環境などを含む「ネットワーク」に接続し、正しく通信するためには「IPアドレス」が必要になります。ただ、IPアドレスはただの数字や英字の羅列になっていることが多く、人間には大変覚えにくいものです。Yahooにアクセスするために「183.79.135.206」を覚えて入力するのは苦痛ですよね。(2018年現在のyahoo.jpのIPアドレスの1つ)
そこで、人間にも覚えやすい名前でより簡単にインターネットを利用できるような機構が考え出されました。意味を持った単語でドメイン名を作り、覚えやすいような名前とIPアドレスを紐付けることで、容易に目的のページにアクセスできるようにしたい、これがDNSが必要となった理由です。名前によるブランド化も容易になりますね。
仕組み自体は30年以上前から存在しており、歴史はかなり古いですが、インターネットを支える大変重要な仕組みです。
今回はインターネット上のウェブページを例にしましたが、会社内や家庭内のネットワークでもDNSは利用可能です。他のコンピューターへ向けてアクセスしたい際にも、自分でDNSを設置して自分でドメインを設定させることもできます。
トラブルの切り分け
色んな所を省いた解説ですが、ブラウザでコンテンツを表示する仕組みについて解説しました。
この流れが分かると、よくある「インターネットに繋がらない」というトラブルの解決に繋がることがあります。以下に例を示しますので見てみましょう。
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アドレスへは接続できずエラーとなっています。なので、ブラウザはコンテンツを所得できずエラー画面のみ表示されてしまいます。
解決策
DNSサーバーまでは接続できているので、少なくともインターネットへは接続できていることになります。ただ、変換してくれたIPアドレスへはアクセス出来ない、そんな状況です。このとき、他のサイトへは接続できたりするのであれば、そのサイトのWebサーバーの機能が停止(落ちている)している、またはすでにそのサイトが無くなった可能性が高いです。
この場合は、そのWebサーバーが普及するのを待つ必要があります。無くなった場合は、管理者が復活させない限りアクセス出来ないので諦めてください。
インターネットには接続できている状態なので、こちらで色々設定を変更したりする必要はないことが多いです。
DNSサーバーへは接続できない、Webサーバーには接続できる
「インターネットに繋がらない」というエラーの中で、DNSサーバーに接続できないことが問題になっている場合です。DNSサーバーに接続できないため、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アドレスを直接入力して試したとき、以上のように正しく接続ができた場合、インターネットには接続できていますが、DNSサーバーに接続できずIPアドレスへ変換してくれなかったことによる問題であることが分かります。
解決策
この場合の解決策は、原因が多岐にわたることがあり厄介です。DNSサーバー自体が何らかの原因により機能を停止してしまった場合は復旧するのを待つしかありません。ただ、問題が自分が使っているパソコンなどにある場合は面倒です。DNSサーバーへ接続するための設定に不備があったりしても同じ現象になるため、もっと詳細に原因を切り分ける必要があります。
この記事ではそこまで詳細な切り分けを解説できないので、他のサイトを参考にしてみてください。
DNSサーバーへもWebサーバーへも接続できない
URL、IPアドレス両方でpingを飛ばしても応答がない場合、そもそもインターネットへ接続できていない可能性が濃厚です。
この場合、ほとんどは自分が利用しているパソコンやモデム、ルーターなどの不具合が原因です。パソコンの接続設定でミスをしていたり、LANポートなどが物理的に破損していたり。モデムやルーターが不具合を起こしている場合も同じくネットには繋がりません。
その場合の解決策は下記の記事にて書いておりますので参考にどうぞ。
インターネットに繋がらないときに見るべき4つのポイント – 道すがら講堂
https://michisugara.jp/internet_not_connect/
まとめ
最後のほうが雑になってしまいましたが、これでひと通り解説いたしました。
Webブラウザでコンテンツを何気なく表示していたかと思いますが、通信の流れを見ると直接コンテンツを取得しているのではなく、一度DNSサーバーへ問い合わせていることがお分かりになったでしょうか。
この流れがわかることで、ネット関連のトラブルもより詳細な切り分けが可能になり、解決の手助けとなるかと思います。
今回の説明はわかりやすくするためにかなり色々と端折っています。DNSの仕組みは、細かく見るともっと複雑なので、興味のある方はぜひ別のサイトなどで勉強されてみてください。
この記事も何かの役に立てれば幸いです。
コメント
コメント欄を開く