Web で楽しく遊ぶための知識(2) – IPアドレスとDNSとバーチャルホストと

てなわけで、2回目です。 🙂

前回は、

hiromasa.another :o) » Blog Archive » Web で楽しく遊ぶための知識(1)

サーバやネットワーク機器があるデータセンター。 これが世界中にあって、相互に接続可能な状態になっているのがインターネットです。 Web だけの話をすれば、分散された各会社が運営するサーバに Yahoo! とか Google とかが入っているイメージです。

という話でした。

インターネットの基幹となるネットワーク技術は、TCP/IP と呼ばれる通信プロトコルです。 インターネットに接続されている全世界のホスト(サーバとかPC)は、この TCP/IP の約束に従うことにより通信ができています。

インターネット・プロトコル・スイート – Wikipedia

インターネット・プロトコル・スイートとは、インターネットおよび大多数の商用ネットワークで稼動するプロトコル・スタックを実装する通信規約の一式である。 インターネット・プロトコル・スイートは、最初に定義され最も重要な2つのプロトコル、Transmission Control Protocol(TCP)とInternet Protocol(IP)にちなんで、TCP/IPプロトコル・スイートとも呼ばれる。 今日のIPネットワーキングは、1970年代に始まりコンピュータに革命をもたらしたもの、すなわちLAN(Local Area Network)とインターネットの発展が統合されたものである。

Windows 95 はこの TCP/IP を標準でもった OS でした。 それまでの MS-DOS や Windows 3.1 は TCP/IP のプロトコルスタックを標準で持っていなかったために、インターネットに接続するのは別売の TCP/IP スタックを別途購入したり、やたらと手間がかかったものでした。 で、TCP/IP が標準導入された Windows 95 以降、めでたくインターネットが急速に発展していったわけです。

ここでは、"Web で楽しく遊ぶため"、なので小難しいことはおいておいて、ブラウザから URL をたたいてどのようにして世界中にあるデータセンターのサーバに接続され、画面が表示されるのかを書いてみたいと思います。

たぶん、以下が分かれば、「バリュドメとXREAの関係」とか「むーむーとロリポの関係」が読めてくるはずです。 レンタルサーバの設定がなんでこんなふーになっているかも、分かると思うのでトラブってもなんとかなるかもなのです。

まずは、IPアドレス。

インターネットに接続されているコンピュータには必ず IPアドレスという番号が振られます。 この番号で接続先を特定します。 202.172.28.9 とかこういうやつです。

で、この IP アドレスはインターネット上でユニーク(一意)なのですが、例外があります。 プライベートIPアドレスというやつです。 まず 10.*.*.*、172.16.*.*、192.168.*.*、というアドレスはインターネット上には存在しません。

一番最後 192.168.*.* のはよくみると思いますが、要は家庭や会社のネットワークにまでインターネット上の IP アドレスをふると、アドレスが枯渇してしまうので、そういったネットワークのホストにはプライベートIPアドレスをふります。

プライベートIP アドレスは世界中で重複するので、どーやって一意に通信しているんだ?って話にもなりますが、そこはそこ。 たとえば家庭での一般的な構成は、ルータがインターネット上のIPアドレスを持ち、ルータより中にいる PC はプライベートIPアドレスを持つ構成として、あとはルータくんがうまいことやってくれるようになっています。(こんなふうに、ルートをとってくれるから ルータ くんなのです)

これ以上書き始めるときりがないので、IP アドレスについてはここでおわり。 まずは、インターネット上のコンピュータには何らかの形で IP アドレスがつく、としておきましょう。 🙂

次は、DNS。 ドメインネームサーバ。 インターネットのデータセンターに配置されている、サーバの一つです。

ここのサーバの URL は、 https://another.maple4ever.net/。 これをブラウザの URL 欄にうちこむと、日本のどこかにあるデータセンターに接続されて、html が表示されます。

先ほどの説明からすると、ブラウザを立ち上げているコンピュータから、接続先を特定するのは IP アドレス。 ってことで、DNS サーバは URL のホスト名を IP アドレスに変換してくれる役目を持ちます。

another.maple4ever.net がホスト名。 これが 202.172.28.9 というIPアドレスであることを教えてくれます。

「このホスト名の IP アドレスをくれ」というDNS への問い合わせは、接続元のコンピュータが行います。 最近はこれらの設定がオートであることも多いのであれですが、古くからインターネットをやっている人は、プロバイダの設定シートに DNS という項目があるのを覚えている方もいるでしょう。 PC にこの設定をすることにより、名前の変換ができるようになります。

ということはホスト名がIPアドレスに変換されて、https://another.maple4ever.net/ と、http://202.172.28.9/ は同じこと。 早速やってみよう・・・!

[tegaki]あれ?つながんね~[/tegaki]

なんででしょ? でもデータセンターのサーバに接続自体はできているっぽい。 ここからは、サーバで動作する httpd 、Web サーバソフトウェアのお話になります。

最後、Apache のバーチャルホスト。

データセンターに存在するサーバには、見せたい(見たい)ファイルが置いてあります。 閲覧者はブラウザをつかってそのファイルを取り出そうとするわけですが、その仲介をするのが Web サーバ(httpd) と呼ばれるソフトです。 よくつかわれているのが、Apache とよばれる httpd です。(他にもいろいろありますが便宜上 Apache でいきます)

httpd。 http はおいておくとして、最後の d はデーモン。 デーモン(demon)小暮閣下の方ではなく、守護神(daemon) のほうです。 たしか。 🙂

ここまでをまとめると、 Web サーバ というのは、データセンターにおいてある"物理的に1台"で、"1つのIPアドレス"をもち、"httpd が動いている機械"。 が実体になります。

しかし、冷静に考えると、たとえばこんな弱小 another.maple4ever.net に1台の機械と1この IP アドレスを割り当てていったら、かなりむごいことになります。。 いっくら、IP アドレスがあってもお金があっても足りません。。

ということで、考え出されたのがバーチャルホストです。 バーチャル、仮想。 なんとなく読めてきました。 🙂

バーチャルホストというのは、基本的に1台の Web サーバに1サイト(ホスト)しかおけないところを、複数扱えるようにする httpd の仕組みです。 接続先は同じ IPアドレスなのに、別のホスト名が扱えるようになります。

種の元は実は、クライアント側。 ブラウザくんが持っていて、https://another.maple4ever.net/ と指定されて Apache に接続したブラウザくんは以下のような電文を一緒にだします。

Host: another.maple4ever.net

ブラウザ(意訳)「あんたにつないだとき、打ち込まれたホスト名は"another.maple4ever.net"だったぜ・・・。」

Masayan「・・・」

ぼの「・・・」

ブラウザは、このように URL 欄のホスト名を自己申告する決まりになっていて、うけた Apache くんは、これを元に、そのホスト名にあった場所のファイルを返すようにつくられています。 これで、複数のホストを1台のサーバでまかなうことができるようになります。

先のように、バーチャルホストが設定されたサーバに対して、 http://202.172.28.9/ とアクセスしてしまうとホスト名が不明なため、どこを返していいか分からず、期待する結果にならないわけです。

まとめ。

レンタルサーバにドメイン付きでサーバスペースを借りて設定した。 これはほとんどの場合、以上で説明した設定がされています。 大きく2つ。

  • DNS サーバには、ホスト名(ドメイン)と Web サーバの IP アドレスの対応設定。
  • Web サーバには、バーチャルホスト設定としてホスト名とファイルのありかのマッピング。

レンタルサーバを借りたときに、なんでこんなに設定がわかりにくいんだろうと思った方も多いと思いますが、これは2つのサーバに対して同時に対応する設定を行わなければならないためです。

実際に自分で Web サーバを設定してみたりするのが早道だったりするのですが、まぁまぁこんな説明でももしかしたら役に立つかも知れないと思って書いてみました。

結構省いて書いてしまったので、なんちゃって感はぬぐえませんが、わけわからなくなったら思い出して読んでみてもらえればと思います。 🙂

Web で楽しく遊ぶための知識(2) – IPアドレスとDNSとバーチャルホストと」への1件のフィードバック

コメントを残す