まさ@ブログ書き込み中

まさ@ブログ書き込み中

まさの旅、英語、プログラミング、プライベートについて、色々記録しています。

HTTPをもっともっとくやしく【Web技術入門3】

 

こんばんは、今日中にこの本の5章までのまとめを終わらせると勇んでいるまさです。

 

では早速いきます。

 

 

HTTP通信の中身

 

今まで私はHTTPは通信プロトコルであり、それはつまりやりとりの取り決めだと言ってきました。今回はそれをもっともっと詳しく分析していきたいと思います。

 

HTTPリクエスト

 

まず、私たちがURLを入力して「検索」ボタンを押した時、HTTPリクエストが行われているわけです。HTTPという通信プロトコルによってリクエストが送られるのですな。

 

そのリクエスト(通信)の中身は、具体的にはリクエスト・ラインとメッセージ・ヘッダによって構成されています。

 

そこにはメソッドというリクエストの種類(ここではGET、「URLで指定した情報を送ってください」というもの)が入っていたり、Webクライアントが受け取ることのできるデータの種類を表すAcceptがあったり、PCと携帯電話からの閲覧に異なったレスポンスをするためにWebブラウザの種類やバージョンを示すUser-Agentなど様々な項目があります。

 

HTTPレスポンス

HTTPリクエストに対してWebサーバからは返されたHTTPレスポンスも、1行目にかかれたHTTPステータス・ラインメッセージ・ヘッダによって構成されていますが、メッセージ・ボディというものもあります。

 

HTTPステータス・ラインでは使用しているプロトコルのバージョンと、リクエストが成功したかどうかわかるようになっています。

 

メッセージ・ヘッダはHTTPリクエストと同じ形式で色々な情報が入っています。

 

ここでポイントですが、メッセージ・ボディにはリクエストされたHTMLや画像ファイルなどがそのまま入っています。

 

Webブラウザは、このメッセージ・ボディを解釈して画面に表示しているわけですね。

 

 

HTTPがどうやって相手のコンピュータに届けられるのかもっともっとくやしく

 

なるほど、HTTPのリクエストとレスポンスはこんな風になっていたのか・・・。

 

では、そのリクエストがどうやって相手のコンピュータに届けられるのか?

 

この本では少しざっくりとしか説明されていませんでしたが、まとめておきましょう。

 

特定のIPアドレスTCP/IPというプロトコルでパケット単位で届く

IPアドレスとは、インターネット上の住所のこと。リクエスト先のWebサーバはURLの中のホスト名の部分で表されていましたが、そのホスト名は人間にわかりやすいように表現されているにすぎないのです。

 

そしてそのIPアドレスへ通信する(方法の取り決め)がTCP/IPというプロトコル。手紙でいう郵便配達の仕組みのことです。

 

具体的にはTCP/IPはブラウザなどから受け取ったHTTPリクエストなどの情報をパケットと呼ばれる小さな単位に分割して送信しているのです。

 

IPアドレスについてもっとくやしく

IPアドレスは世界中で唯一の値となるインターネット上の住所なのですから、勝手に決めることはできません。私たちは通常ISP(Internet Service Provider)から回線を引いてインターネット接続をしていますが、そのインターネット一つ一つにIPアドレスがあります。そしてそれはISPがあるまとまった量のIPアドレスを確保しているからこそできるわけです。

 

こういう世界で一つだけのIPアドレスを、グローバルIPアドレスと言います。しかし、インターネットなど他のネットワークに接続されていないプライベート・ネットワーク上のホストにまでグローバルIPアドレスを割り当てるのは大げさな気がします。

 

そしてIPアドレスは本来的にネットワークに接続されたホストを識別するためのものなので、用途によってはグローバルIPアドレスではなくてもいい。そこで登場するのがプライベートIPアドレスです。

 

例えるなら、グローバルIPアドレスは固定電話、プライベートIPアドレスは内線番号なのです。

 

ホスト内で誰(どのアプリケーション)が対応すべきかは、ポートが決める

ここまでで、URL名に含まれるホスト名は実はIPアドレスで、そのホストへTCP/IPという通信プロトコルで情報がやりとりされるということがわかりました。

 

しかしこれで終わりではありません。IPアドレスを頼りにパケットを特定のホストに届けるだけではまだ不十分だからです。

 

そのパケット(分割された情報の1単位)は送られたホスト内でどのように処理されるのかを決めなければ、ホスト側もどう扱えばいいのかわかりません。

 

そこで役に立つのが「ポート」という考え方です。TCP/IPによって情報を受け取るアプリケーションは、必ず「待ちポート」を決めて情報を待ちます。

 

「ポート」って港っていう意味があります。パケットが船だとし、どの港に入ってコンピュータの中に入ろうか考えている絵を思い浮かべてみてください。そこでそれぞれの港に「画像はこちらから」「動画はこちらから」「メールはこちらから」とあればどこに向かえばいいかわかりやすいですね。それが待ちポートです。

 

 

今日はここまで。以上です。

 

(40min)