【初心者向け】 ドメイン、DNSの仕組みの解説

レンタルサーバーを使っているとよく出てくる用語が「ドメイン」「DNS」です。

イメージでは分かっているけど、言葉で分かりやすく説明するのが若干大変かと思う用語です。

ドメインやDNSの仕組みとは?

初めに簡単に整理すると、

URL「http://yahoo.co.jp」 → http:// がついたもの

ドメイン「yahoo.co.jp」 → http:// がついてないもの

DNS「yahoo.co.jpとIPアドレスを結び付ける仕組み」

です。

ネットワークの仕事をしていると分かりますが、コンピュータは通信相手をIPアドレスで見ています。

例えば、上図のように閲覧者が「neko001」のサイトにアクセスしたとします。

ブラウザには「http://neko001」と入力すると、コンテンツが返ってきますが、この時、内部的にはIPアドレスでneko001にアクセスをしています。

コンピュータはなぜIPアドレスでアクセスをしているのか?

実はコンピュータはIPアドレスでないと、相手コンピュータが探せないのです。

上図のように閲覧者がコンピュータneko001にアクセスするとします。

仮に上のコンピュータが同じ部屋で2台ならんで直にケーブルでつながっていれば別の話になりますが(それでもIPアドレスで通信しているのは一緒ですが)、インターネット経由でアクセスしようとすると、ブロードバンドルーターやいろんなルーターを経由してneko001にアクセスしなければいけません。

ルーターはルーティング(ネットワーク経路の振り分け・ネットワークトラフィック整理)をしていますが、IPアドレスで経路を振り分けています。

だから実際はコンピュータ同士の通信はすべてIPアドレスで行われています。

※ただ、ルーターもIPアドレスで処理をするのを止めて「ドメイン名」で処理をするとも技術的には可能です。

しかし、それをやってしまうと1台1台のルーターの処理に時間が掛かり、高速なネットワーク通信ができなくなります。

実際のネットワークの世界では、IPアドレスで高速に処理することでインターネットのレスポンスを向上を図っています。

メリット・デメリットや費用対効果を考えて、ネットワークの世界では「IPアドレス」で通信をしています。

なぜドメイン名やDNSという仕組みがあるのか?

では、なぜ「yahoo.co.jp」など「ドメイン名」「DNS」という「名前解決の仕組み」があるのでしょうか?

それは「人間が覚えやすくするため」だけです。

たとえば、Yahoo!にアクセスする場合ですが、HTTPリクエストの中を見るとこんな感じになっています。

# curl -v http://www.yahoo.co.jp
* About to connect() to www.yahoo.co.jp port 80 (#0)
*   Trying 182.22.31.252...
* Connected to www.yahoo.co.jp (182.22.31.252) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.yahoo.co.jp
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: ATS
< Date: Fri, 24 Mar 2017 21:56:50 GMT
< Content-Type: text/html; charset=UTF-8
< P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Vary: Accept-Encoding
< Expires: -1
< Pragma: no-cache
< Cache-Control: private, no-cache, no-store, must-revalidate
< X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
< X-Frame-Options: SAMEORIGIN
< Age: 0
< Transfer-Encoding: chunked
< Connection: keep-alive
< Via: http/1.1 edge1178.img.bbt.yahoo.co.jp (ApacheTrafficServer [c sSf ])

curl -v http://www.yahoo.co.jp」コマンドを実行しています。

※-vオプションを付けると、こちらからのHTTPリクエストも表示されます。

注目点としては、「www.yahoo.co.jp」を指定しているのに、内部的にはIPアドレス「182.22.31.252」で処理をしているということです。

実際にはコンピュータはIPアドレス「182.22.31.252」でYahoo!のサイトを探しに行っています。

では、そもそもDNSという「仕組み」はいらないのではないか?

はい。実はそうです。

しかし現実問題、IPアドレスを覚えられる人はいません。

しかし「yahoo.co.jp」や「google.co.jp」や「amazon.co.jp」などのようにドメイン名がついていると覚えやすいです。

テキストに「http://yahoo.co.jp」とは「http://google.co.jp」とか貼り付けて保存しておいても、あとから見た時にどのサイトかすぐに分かります。

これが人間にとっての一番のメリットです。

だから「ドメイン名」「DNSという名前解決の仕組み」は、人間の都合で作ったものです。

DNSという名前解決の仕組みについて詳しく解説

DNSとは「Domain Name System(ドメイン・ネーム・システム)」の略です。

DNSとは簡単に言うと「IPアドレスと名前の対応付け」です。

上図のようにブラウザに人間が分かりやすい形式「http://neko001.co.jp」でアクセスするとコンピューターの内部で名前解決の処理をして、IPアドレス「123.143.234.243」にアクセスしてくれます。

誰がDNSとIPアドレスの対応付けをしてくれるのか?

DNSサーバーがします。

DNSサーバーの役割は「ドメイン名」「IPアドレス」の対応付けをすることです。

電話帳のようなイメージです。

上図のように鈴木さんに連絡を取りたい場合、わざわざ電話番号「090-xx73-xx26」をプッシュしなくても、鈴木さんを選択すれば自動的に鈴木さんにつながります。

このとき、電話システムは「鈴木さん」で相手を探していません。

電話番号で発信をしてアクセスを試みています。

DNSも同じように「ドメイン名という表示は名前っぽいもの」ですが内部は「IPアドレスという電話番号」で通信をしています。

実際にDNSサーバーのゾーンファイル(ドメイン名とIPアドレスの紐付表)は下のようになっています。

シンプルですよね。

neko001            A    10.xx.51.xxx
neko002            A    10.xx.61.xxx

見ての通り、コンピュータ名「neko001」「10.xx.51.xxx」で、「neko002」「10.xx.61.xxx」です。

電話帳と一緒です。

そして重要なのが、このインターネットの「電話帳」は全部のコンピュータが持っていないということです。

世界中のコンピュータがみんな同じインターネットの電話帳を持っていてもいいのですが、現実的には不可能です。

管理できません。

そこでDNSサーバーを立てて、インターネットの名前解決を専門でさせるようにしました。

そして個々のコンピュータは、このDNSサーバーに問い合わせることで自分がアクセスしたいIPアドレスが分かりアクセスできるようになりました。

※コンピュータが目的のWebサーバーにアクセスするためにはIPアドレスが必要です。

以上ですが「ドメイン名」や「DNSの仕組み」は理解できましたでしょうか。

私の方もこれからもっと詳しく解説していきますので楽しみにしてください。

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。