インターネット
 Computer >> コンピューター >  >> ネットワーキング >> インターネット

HTTPの仕組みと重要性を初心者向けにやさしく解説

あなたの家が一台の巨大なコンピュータだと想像してみてください。住所は「〇〇通り」や「〇番街」のような名前ではなく、数字だけで構成されています。たとえば「112.231.31.20」のような具合です。

まるで近未来映画のように、あなたの街には空を飛ぶハイテクロボットたちが行き交い、家から家へとメッセージを届け、返事を運んでいます。

イメージできましたか?

インターネットの仕組みの全体像

少し単純化すると、ブラウザにWebアドレスを入力したときに起こることは次のとおりです。

  • リクエストを送りたい「家」の住所を見つける
  • ロボット郵便屋さんにリクエストを託して送り出す
  • ロボット郵便屋さんが持って帰ってくる返事を辛抱強く待つ

これらの処理はすべて、エンドユーザーであるあなたからは隠されています。アドレスを入力すれば、まるで魔法のようにWebページが目の前に現れるのです。

十分に高度な技術がそうであるように、こうした抽象化がなければ、普通のユーザーはインターネットを使うことすらできないでしょう。

多くの場合、何かが「どう動いているか」を気にする必要はありません。「動く」ということだけを知っていれば十分だからです。

しかし、ある種のテーマについては、少し踏み込んで仕組みの細部を知ることが役に立ったり、好奇心を満たしてくれたりします。

この記事を読んでもインターネットの技術的な専門家になれるわけではありません(それにはもっと時間と努力が必要です)。しかし、全体像をつかみ、理解を一段深めることはできるはずです。

さらに学びたくなったら、YouTubeにより詳しい内容のプレイリストを公開していますので、ぜひご覧ください。

メッセージングシステムとは

冒頭の比喩から学んだように、インターネットはメッセージのやり取りで成り立っています。そのメッセージの大部分は、「HTTPプロトコル」と呼ばれる仕組みを使って送信されています。

プロトコル。なんだか難しそうな言葉です。目が点になってブラウザを閉じたくなるような響きです。そこで、もう少しわかりやすい言葉に分解してみましょう。

プロトコルとは、要するに「取り決め(約束)」を指す、ちょっとおしゃれな言葉なのです。

例え話でもう少し具体的にしてみましょう。

あなたと親友が秘密のメッセージを交換しているとします。玄関先に「ballfoot」と書かれた紙切れが置いてあれば、それは「今夜20時にサッカーをしよう」という合図だと分かります。

なぜなら、あなたたちは「自分の家に届けられた紙に書かれた『ballfoot』という言葉は、プレーの誘いを意味する」という約束を交わしているからです。

ところが、その約束を知らない他の友達に同じ「ballfoot」のメモを渡し始めると、問題が起こります。彼らはその情報をどう扱えばいいのか分かりません。

彼らは玄関先のメモを見つけて、しばらく首をかしげた後、そのままリビングでゲームを続けるでしょう。そしてあなたと親友の2人だけでボールをパスし合うことになります。往復、また往復。退屈が限界に達して、二人とも家に帰るまでずっと。

でも、そんなことにはなりません。「ballfoot」の意味を友達全員に教えてしまえばどうでしょうか? そうすれば、友達全員が「ballfootと書かれたメモは、20時に地元のコートに集合してサッカーをすること」という約束を共有できるのです。

大成功ですね。

これこそが、HTTPプロトコルの本質です。特定の形式でメッセージを送れば、サーバーがそれを理解し、応答を返してくれる――そういう取り決めを私たちはあらかじめ交わしているのです。

メッセージの構造

HTTPの取り決めをもう少し詳しく見ていきましょう。HTTPは「リクエスト」と「レスポンス」で構成されます。簡単に言えば、あなたが何かを要求し、「サーバー」と呼ばれる存在から答えを受け取るという流れです。

先に進む前に、HTTPのリクエスト/レスポンスサイクルをよりよく理解するために、冒頭の比喩を少し修正しておきましょう。

家から家へとメッセージを運ぶロボットたちを覚えていますか? 今度は、それらのロボットがすべて誰かに所有されていると想像してください。

あなたには専用のロボットが1台あり、任意の住所(IPアドレス)へメッセージを届けに行くよう指示できます。ロボットが指定された住所にメッセージを持って到着すると、中に入って堂々と「届け物があります」と宣言し、メッセージを読み上げます。

この比喩のために、家(サーバー)の扉を『ロード・オブ・ザ・リング』のモリア鉱山の入り口のようなものだと想像してみましょう。正しい言葉が唱えられたときにのみ、扉は開き、中に入ることができます。

同じように、ロボットが決められた特定の形式でメッセージを読み上げた場合にのみ、持ち帰るべき応答メッセージを受け取れるのです。

これがHTTPプロトコルの働きです。リクエストとレスポンスのメッセージがどのような形であるべきかを定めた、あらかじめ用意された一連のルールが存在します。

ここで疑問が湧くかもしれません。そもそもこれらのメッセージはどこから来るのでしょうか? ブラウザにサイトのアドレスを入力するとき、自分でメッセージを書いた覚えはないはずです。

実は、これはすべてブラウザが自動的に処理してくれています。アドレスを入力すると、ブラウザがあなたの代わりにHTTPリクエストメッセージを作成し、サーバーへ送信します。HTTPリクエストメッセージは次のような形をしています。

GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) 
Version/11.0 Mobile/15A372 Safari/604.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,
image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
...etc

なんだか怖そうですよね?

これを代わりにやってくれるブラウザがあってよかったです。

最初の1行だけ、GET / HTTP/1.1 を詳しく見てみましょう。この行は、ロボットにGoogleの家まで行って「サイトのルートにあるものをいただけますか?」と尋ねさせる役割を果たします(つまり、www.google.com/home ではなく www.google.com の内容を取得したいということです)。

これで、正しい形式でメッセージをGoogleの家(サーバー)に届けることができました。扉が光り輝き、ゆっくりと開きます。

中には別のロボットがいます。その背後には、GET / HTTP/1.1 や GET /search HTTP/1.1 といったラベルの付いたロッカーボックスが並んでいます。あなたのリクエストがいずれかのボックスと一致すれば、ロボットはその鍵を開けて中身を渡してくれます。するとあなたのロボットは、レスポンスを持って素早く帰還するのです。

レスポンスの中身

返ってくるレスポンスは、次のような形をしています。

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

通常、このレスポンスを目にすることはありません。本当に必要なときに、ブラウザの開発者ツールで確認するくらいでしょう。それでも、確かに受け取っています。

その後何が起こるかは、どんなレスポンスを受け取ったか、そしてサーバーのロッカーボックスの中に何が入っていたかによって変わります。

多くの場合、返ってくるのはHTMLドキュメントです。HTMLはWebページの構造を表し、ブラウザが何を表示すべきかを定義しています。

たとえば www.google.com にアクセスすると、google.com サイトがブラウザ上でどのように表示されるかを定義したHTMLファイルが返ってきます。

時間があれば、HTTPのリクエストとレスポンスについてより深く掘り下げた11分間の動画をご覧ください。

まとめ

この記事では、インターネットの仕組みと、HTTPを使ったインターネット上の通信方法について見てきました。

HTTPプロトコルは、インターネット上でブラウザとサーバーが通信するために使われるものであり、リクエストの送受信方法に関する広く合意された標準であることを学びました。

また、こうした通信標準がなぜ重要なのか、共通の標準があることでどんなメリットが生まれるのかについても考察しました。

インターネットの仕組みや受け取れるレスポンスの種類を理解するためには、まだまだ知るべき側面がたくさんあります。

時間があれば、Webサーバーの作り方を学べる18分間の動画で、この記事で扱ったトピックの復習と、新しい内容の学習をするのもおすすめです。

これで、インターネット上の通信がどのように機能するのか、一般的な理解が得られたはずです。

この記事が他の方の役に立ちそうだと思ったら、ぜひ周りの人にシェアしてください。新しいコンテンツの投稿をお知らせしたい方は、YouTubeチャンネルの登録や、Twitter(@foseberg)のフォローをお願いします。

  1. Androidスマホのキャッシュを削除する方法とその重要性を徹底解説

    スマートフォンのストレージ容量の一部がキャッシュファイルによって占有されていることに気づいたことはありませんか?端末にインストールされたすべてのアプリが、それぞれキャッシュファイルを生成しています。最初は大した容量ではないように感じられますが、アプリの数が増えるにつれて、これらのキャッシュファイルはかなりのメモリを占めるようになります。本来なら写真や動画などの個人データを保存できるはずの貴重な領域が、知らないうちに埋まってしまうのです。 朗報があります。このスペースは自分の手で取り戻すことができます。キャッシュを削除してストレージを空けるのは効率的な方法であるだけでなく、古い端末で空き容量が

  2. Windows 10で固定IPアドレスを設定する方法とそのメリット

    デバイスのIPアドレスは、ネットワーク上でそのデバイスを識別するための「名札」のようなものです。デフォルト設定では、Windowsはブロードバンドルーターに対してIPアドレスの割り当てを要求します。ルーターは一定期間(通常は数時間〜1日程度)使用できるアドレスを発行し、この「リース」期間が終了すると、デバイスは再度要求を行います。その際、ルーターからは前回と異なるIPアドレスが割り当てられることもあります。固定IPアドレスとは?Windowsでは、代わりに「固定(スタティック)IPアドレス」を使用するよう設定できます。その名の通り、固定IPアドレスは一度設定すれば決して変わりません。Windo