HTTPの重要性
HTTPはRFC2616で規定されたプロトコルです。
RFC2616で規定されているバージョン1.1で、これが現時点での最新バージョンです。
現在のWebではこのバージョンが最も使われています。
HTTPはHTMLやXMLなどのハイパーテキストだけでなく、静止画、音声、動画、JavaScriptプログラム、PDFや各種オフィスドキュメントファイルなど、コンピュータで扱えるデータであればなんでも転送できます。
HTTPはWebの基盤となるプロトコルです。
TCP/IPとはなにか
HTTPはTCP/IPを基盤にしています。
TCP/IPはインターネットの基盤を構成する重要なネットワークプロトコルです。
TCP...Transmission Control Protocol
IP... Internet Protocol
インターネットのネットワークプロトコル
インターネットのネットワークプロトコルは階層型になっています。以下図
ネットワークインターフェース層
ここは、物理的なケーブルやネットワークアダプタに相当する部分
インターネット層
ここが担当するのは、ネットワークでデータを実際にやりとりする部分で、TCP/IPではIPがこれに当たる。
IPではデータの基本的な通信単位をパケットと呼ぶ。指定したIPアドレスを送り先として、パケット単位でデータをやり取りして通信する。
IPは自分のネットワークインターフェースでデータを送り出すことだけを保証していて、送り出したデータが多数ルータを経由して最終的な送り先まで届くかどうかは保証していません。
トランスポート層
ここは、IPが保証しなかったデータの転送を保証するのがトランスポート層の役割です。
TCP/IPではTCPがこれに相当する。
TCPでは接続先の相手に対してコネクションを張ります。このコネクションを使ってデータの抜け漏れをチェックし、データの到達を保証します。
TCPで接続したコネクションで転送するデータが、どのアプリケーションにわたるのかを決定するのが、ポート番号です。
ポート番号は1~65535の数値で、HTTPは80。
アプリケーション層
ここでは、具体的なインターネットアプリケーション、たとえばメールやDNS、そしてHTTPを実現する層です。
TCPでプログラムを作る時はソケットと呼ばれるライブラリをつかうのが一般的だが、
ほとんどのプログラミング言語にはHTTPを実装したライブラリが標準でついているため、ソケットを使ってHTTPを独自に実装することはほとんどない。
しかしWebサービスやWebAPIを開発するにあたっては、フレームワークの細かな挙動や設定、パラメータなどがプロトコルレベルでどのように動作するのかを把握しておく必要がある。