ドメイン名を打ち込んだらIPアドレスが返ってくる件について 【2021年WCE新歓ブログ 第七回】
皆さんこんにちは。このブログでいろいろ好き勝手書いてるWCEの助さんです。WCEではゲームを作る以外にウェブサイト管理も行っています。今回は以前少し触れた、インターネットのドメインの仕組みについての記事です。インターネット用語としてドメインという言葉を聞くことがあると思いますが、イマイチわからんって人向けの解説をしていきます。ちなみにこの記事の内容はサークルの活動にあんまり関係ないです。
URLとかIPアドレスとかドメインとか...
最初によく聞くような用語について確認しておきましょう。URLとかIPアドレスとかは聞いたことある人も多いんじゃないでしょうか?
IPアドレス
IPアドレスというのは、Internet Protocol (通信するためのルール)におけるアドレス(住所)です。インターネットに接続している端末それぞれに識別可能なアドレスが割り振られています。例えば、GoogleのIPアドレスは「216.58.199.227」であるようです(たぶん他にも大量にある)。このようにIPアドレス(IPv4)は一般的に0~255までの数字が4つ、「.」で区切られて表現されます。これは32文字の2進数を8文字区切りで10進数に直して「.」で区切ったものです。つまり、先ほどのIPアドレスは2進数表記に直すと「11011000001110101100011111100011」となります。う~ん、長い!このままじゃ見づらいので人が見るときにはドット区切りにするんですね。
IPアドレスにも種類があり、IPv4とIPv6と呼ばれるものが主流です。現在日本で多く用いられているのは古い方のIPv4です。IPv6はIPv4の4倍の長さがあり、IPv4で2^32=約43億(4.3×10^9)通りだったIPアドレスの数がIPv6では2^128=約340澗(3.4*10^38)通りとなり、IPアドレスの不足に対応できるとされています。すごい!
ドメイン
ドメインというのは、Internet Protocol においてそれぞれの端末を識別して指定するための名前です。IPアドレスと同じでは...?と思うかもしれませんが、重要なのは「名前」であるという点です。弊サークルでは公式サイトのために「wce.jp」という独自ドメインを持っています。この名前はWCEの公式サイトということが人間にとって分かりやすいですよね?そのためウェブサイトを指定する際にはドメインの名前を用いるのです。とはいえ、ドメイン名は人間にとって分かりやすい代わりにコンピュータにとってはよくわかりません。そのためにIPアドレスとドメイン名を結びつけるシステムが存在します。(後述)
このようなドメイン名はICANNという団体によって管理されていて、被るものがないようにされています。これにより唯一性が担保されるため、ドメインには価値があります。そのため希望のドメインを使うためには「お名前ドットコム」などで権利を買う必要があるのです。人気のあるドメインは高額で取引されることもあります。
▼高額で取引されるドメインたち
高額なドメイン名の一覧 - Wikipedia
URL
URLは Uniform Resource Locator (統一資源位置指定子)の略です。ウェブブラウザの上側などに表示されるhttps:://うんたらってやつですね。これはインターネット上にあるリソース(ウェブサイトや画像など)にアクセスするための手段やリソースの場所を示しています。例えば...
このリンクはWCEの公式サイトで公開しているゲームのページです。このURLを見ていきましょう。
まず、最初の「https:」の部分です。たいていURLの先頭には「http:」か「https:」がついていますよね。これはHTTP(Hyper Text Transfer Protocol)、およびHTTPS(Hyper Text Transfer Protocol Secure)という方式で通信しなさい、というように通信方式を表しています。HTTPSの方が安全性が高いため近年ではなるべくHTTPSにしようという動きがあります。
http, httpsの他には、FTP通信用の「ftp:」、電子メール宛先用の「mailto:」やファイル参照用の「file:」などがあります。fileで自分の「ドキュメント」ディレクトリ内の「hogehoge.pdf」を開くときを例に挙げると、「file:///C:User/(ユーザー名)/Documents/hogehoge.pdf」(Windows)といった形になります。ちなみに「//」の部分はあまり意味がないようです。
次の「wce.jp」の部分は先ほども触れたドメイン名となります。「wce.jp」に対応する端末に情報を要請しなさい、といったところです。この位置は絶対ドメイン名である必要はなく、IPアドレスを直接入れても動作します(あまり推奨されるやり方ではないかもしれませんが...)。ちなみにこの部分、より正確には「ユーザー名:パスワード@ホスト名:ポート番号」が入る事になっていますが、ホスト名(ドメイン名やIPアドレス)以外の部分は必要なければ省略できるので今回のケースでは含まれていません。
それ以降の「/works/game/」の部分は指定された端末に対して要求するリソースにあたります。「/works/game/」に対応するリソースをよこしなさいよ、ということです。ディレクトリの階層でそのまま表すことが多いです。
はたらくサーバー
ここまででそれぞれの用語についてざっくりとですが解っていただけたかと思います。ではドメイン名とIPアドレスが結び付けられる仕組みを見ていきましょう。
ドメインというものはあまりにも大量にあり、全てを一まとめに管理しようとすると情報量が膨大になってしまいます。そのため、分割統治という手法により管理されています。
早稲田大学基幹理工学部のページ(fse.sci.waseda.ac.jp)を例に見ていきます。
この手法では、ドメイン全体の中に「.com」や「.jp」、「.org」といった集合があり、その集合の中に「.co.jp」、「.ne.jp」などの集合があり、その中に...といったように入れ子状になった集合で管理されている、といった感じです。
内側の集合の要素はサブドメインと呼ばれます。(例えば、「wce.jp」は「.jp」のサブドメイン) サブドメインは、ドメインの権利者が基本的には自由に作ることができます。弊サークルで言えば「wce.jp」のサブドメインとして「www.wce.jp」とか「programming.wce.jp」とかを作れる、ということです。
「.com」や「.jp」などをトップレベルドメイン、その前につく「.co」や「.ne」などをセカンドレベルドメイン、といったように階層ごとにレベルの値が増えていきます。トップレベルドメインやセカンドレベルドメインは意味合いを持っていることがあります。例えばトップレベルドメイン「.jp」は日本のページ、「.jp」に属するセカンドレベルドメイン「.co」や「.ac」はそれぞれ企業、教育機関を意味します。
このように分割された中でどのように目的のドメインに到達するのでしょうか?
ここで登場するのがDNS (Domain Name System) です。これはドメイン名の名前解決(IPアドレスに変換)を行うシステムです。DNSは階層ごとに存在するネームサーバが協調することで動作しています。
▼DNSの概略図
まずはクライアント側のシステム(スタブリゾルバ)からサービス提供者側のシステム(フルリゾルバ)に、IPアドレスを知りたいドメイン名(fse.sci.waseda.ac.jp)が送られます。それを受けてフルリゾルバは、階層状に管理されているネームサーバー(権威サーバー)のrootにドメイン名を送り、それを管理している権威サーバー(jp)のIPアドレスを返します。これを目的のサーバーのIPアドレスまで繰り返します(jp → ac → waseda → sci)。こうしてIPアドレスを取得し、スタブリゾルバにIPアドレスを送っているのです。