知っておきたい:インターネットの仕組み

僕たちが広告を出しているインターネットですが、そのインターネット通信の仕組みや技術について全然知らないまま使っている人は多いのではないでしょうか?そこそこインターネットに詳しい人でも、IPアドレスやHTMLなどの言葉を自信を持って説明できるでしょうか?
実際、全然知らなくても日常生活で困ることはないし、インターネット広告を出す上でも困らないかもしれません。 ただ、ITPによる規制や、それに対する各社の対応についてお客様に話したりする上で、インターネットの仕組みについて理解していた方がより自分自身の理解が深い状態で説明できると思います。
前段がやたら偉そうになってしまいましたが、インターネットの仕組みについて簡単な理解ができるよう以下の3ワードを中心に説明したいと思います。

①URLとIPアドレス

普段、日常生活の中でインターネットを利用している場面としては、「メールを送る」ことや「ブラウザで検索する」ことなどがありますが、今回は運用型広告に関係の深いブラウザでの通信を例に説明したいと思います。
ブラウザでウェブサイトにアクセスする例として、オーリーズの会社概要にアクセスする場合を取り上げると、https://allis-co.com/company がURLであり、このURLをブラウザの上の方のアドレスバーに入力することでアクセスすることができます。
実はこのURLはインターネット通信の仕組みを理解するうえで重要な構成要素からできており、
  1. プロトコル部:最初の「//」まで
  1. ホスト・ドメイン部:プロトコル部以降次の「/」まで
  1. ディレクトリ・ファイル部:ホスト・ドメイン部以降
の3要素があります。(「?」以降のクエリパラメータが追加されることもありますが、通信に関係ないので無視します)
 
 
ここからインターネット通信について、より身近な「郵便システム」に例えて
  • 郵便⇒たもんさんに手紙を送る
の二つで比べながら説明します。
先程説明したURLの構成要素のうち、インターネット上の宛先の決定に用いられるのは主にドメイン部分になります。(allis-co.com) ただし、このドメイン部分は郵便システムの例でいえば「たもんさんち」くらいの指定なので、「住所」を調べるために「タウンページ」を引く動作が必要になります。
実はブラウザでの通信はこの「タウンページを調べて住所を割り出す動作」と「郵便を発送する動作」の両方を行ってくれていて、タウンページにあたるものは「DNS」、住所にあたるものは「IPアドレス」と呼ばれています。
 

まとめ

  • allis-co.com ⇔ たもんさんち
  • DNS ⇔ タウンページ
  • 153.127.21.147 ⇔ 東京都中央区○○××
余談 ※クリックで展開
コマンドプロンプトのnslookupというコマンドでドメインに対応するIPアドレスをDNSに問い合わせて表示することができます。 また、入手したIPアドレスをドメインの代わりに入力すれば、サイトにアクセスすることも可能です。
 
(ただし、https通信ではドメイン名と証明書のチェックが入ったり、レンタルサーバではアクセスされたドメイン名で制御していたりして、IPアドレス直打ちではアクセスできないこともあります)
 
 

DNS(Aレコード,CNAME)

みんなの住所台帳であるタウンページ的な役割を果たしているDNSですが、 正式にはDomain Name Systemといい、読んで字がごとくドメイン名を管理するシステムを指しています。
かつてはドメイン名とIPアドレスを交換する仕組みは1台だけのサーバーによって運用されていましたが、トラフィック量の増大に伴って、より高度で階層化された仕組みが必要となり現在のDNSという仕組みが誕生しました。
その仕組みに関して理解するには、まずドメインの階層構造について理解する必要があります。 先程のhttps://allis-co.com/company のドメインは「allis-co.com」になるのですが、ドメインは「.(ドット)」で分割された階層構造であり、allis-co部分とcom部分に分けることができます。
そして、この「allis-co」と「com」がDNSの階層構造と対応しているのです。
DNSの階層構造において一番上に位置しているものをDNSルートサーバといいます。 DNSルートサーバは問い合わせているドメイン(allis-co.com)のIPアドレスを直接教えてくれるというわけではなく、次にどのサーバに聞けばよいのかをこたえてくれる役割があります。
ただし、それぞれのドメインについて誰が管理しているかの規則がなければ、DNSルートサーバが次に問い合わせるべきサーバをこたえる際に膨大な量の情報を覚えなくてはならなくなってしまうので、ドメインは分割統治されています。
例えば「.com」のドメインを管理しているDNSサーバや「.jp」を管理しているDNSサーバというように階層ごとに分担単位を決めて、DNSルートサーバに担当領域を覚えてもらっています。
このような「DNSルートサーバ⇒comを管理するサーバ」のような紹介は複数回続くこともあり、「.ac.jp」への問い合わせでは「DNSルートサーバ⇒jpを管理するサーバ⇒ac.jpを管理するサーバ」といった手順になります。
ちなみに最終的にドメインとIPアドレスとの引き換えを行うことができるDNSサーバを権威サーバといいます。 自分の担当領域に対して責任を持っているので権威があるんですね。
この階層構造を用いて実際にドメインからIPアドレスを割り出すのは以下の図のようになります。
  1. ルートサーバにcomドメインを管理しているサーバーを聞く。
  1. comサーバーにアクセスしてIPアドレスを教えてもらう。
実はこれだけの仕組みでは、「ルートサーバの負荷やばくない?」問題を解決できていません。 毎回すべてのパソコンがルートサーバに問い合わせていると、結局ルートサーバの負荷は大きいままだからです。
そこで、ドメインとIPアドレスの紐づけや参照先のDNSについて覚えておく役割のDNSサーバーも存在します。(DNSキャッシュサーバといいます)
また、ドメイン名とIPアドレスの紐づけを覚えさせるためにDNSに登録しているのがAレコードになります。
CNAMEについてはドメイン名のあだ名付けみたいなもので、例えばallis-co.comのサイトにwww.allis-co.comでもアクセスできるようにしたいと思った場合にwww.allis-co⇒allis-coと変換することを指定することができます。
ここまでがDNSの説明となり、この仕組みを使ってドメインとIPアドレスの引換を行っています。
IPアドレスを用いた通信
DNSを利用して入手したIPアドレスを用いてインターネット通信する際、経路はそれぞれのネットワークに設定された「ルーティングテーブル」に指図されて決定しています
最終的に宛先にまでたどり着くと、URLのプロトコル部がhttpなら80番ポートにhttpsなら443番ポートに接続します。 (郵便で例えるならマンションの号室みたいなものですね)
443号室までたどり着くと、デーモンさんが出てきてくれて(× damon:悪魔 daemon:守護者)URLのファイルプロトコル部やそれまでのアクセス情報などから、返答を行ってくれます。
こんな感じで荷物のやり取りを繰り返すことが通信の基本となっています。

③API

APIはよく自動販売機に例えられるので、先ほどの人だったデーモンの代わりに自動販売機型のデーモンを置いて考えてみましょう。
先程の人型デーモンのような仕組みで荷物(HTML)を返すのであれば、クッキー情報を読み込んだりユーザーのログイン情報を見たり、遷移元によって返す荷物を変えたりなど、様々な文脈がありますが、APIではそんな文脈はありません。
APIによって返される荷物はJSONという形式であることが多く、通常のウェブシステムが返すHTMLではないことが多いです。(あくまで返すデータを使うのはプログラムなのでHTMLのような装飾がない方が使いやすいですからね)
また、APIを利用する側の形式もある程度決まっているところも自動販売機との共通点かと思います。(自動販売機ならコインとか紙幣とかある程度形が決まっていて、APIのREST形式もURLの規則が決まっていますね)

\ SHARE ON /