社内研修「HTTPから学ぶTCP/IP基礎」(1)

RSSシリーズ以来、2シリーズ目の投稿となります。OISエンジニアのただっしーです。
今回は、先日、弊社内で「HTTPから学ぶTCP/IP基礎」という研修を実施しましたので、その内容を何回かに分けて書きたいと思います。
対象としては「インターネットを不自由なく使える人で、HTTP、TCP/IPの基礎を学びたい人」です。
HTTPとは
HTTP(Hyper Text Transfer Protocol)は、技術者にとっても、一般の人にとっても、一番身近なプロトコルではないでしょうか。Internet ExplorerやChrome、FirefoxなどのWebブラウザとWebサーバの間で情報の送受信に使われる通信プロトコルです。いまあなたがブログを閲覧するために使用しているプロトコルもHTTPです。
リクエストとレスポンス
Webブラウザを開き、アドレスバーにURLを入力する、もしくはリンクをクリックすると、お目当てのWebページが表示されます。このとき、HTTPプロトコルでWebブラウザからリクエストが送られ、Webサーバで受け取り、リクエストに応じたWebページをレスポンスとして返しています。
リクエストの中身
httpreq
レスポンスの中身
httpres
HTTPのリクエストおよびレスポンスはそれぞれ「開始行」「メッセージヘッダ」「本体」の3つに分かれています。
リクエストの開始行
開始行は3つの単語を含んでいます。
httpreqstartrec
まず、メソッドについてです。
メソッドにはGETとPOSTがあることは知っている方も多いと思います。
それ以外にもHEADやPUT、DELETEなどのメソッドがありますが、そもそも、
・ HTMLフォームのmethod属性の取り得る値がGETとPOSTしかない
・ Javascriptを使用してPUTやDELETEメソッドを送る場合でも、対応していないブラウザがある
などの理由により、WebアプリケーションでGETとPOST以外が使われることはあまりありません。(ただしHEADはWebサーバの死活監視に使うことが多いです)
次にURLです。
プロキシを使用している場合は絶対パス、それ以外は相対パスが入ります。絶対パスの場合になぜ必要なのかは次回以降で書こうと思います。
最後はHTTPのバージョンです。
現在の主流はHTTP/1.1ですが、以前より議論されていたHTTP/2が2015年5月にRFC7540として公開されました。HTTP/2はGoogleが提唱したSPDYというプロトコルが基になっており、GoogleやTwitterなどは既にHTTP/2に移行をしており、今後はHTTP/2に対応するWebサイトが増えてくるものと思われます。
ただし、HTTP/2はHTTPSでの使用が前提となっています。RFC7540ではHTTPの使用についても記載されていますが、ほとんどのブラウザはHTTPSのみ対応しています。そのため、「HTTP/2に対応=HTTPSに移行」ということになり、セキュアに通信することが不要なWebサイトは移行するメリットがないため、今後もまだまだHTTP/1.1が使われそうです。
個人的な所見ですが、10年後には多くのブラウザがhttp://をサポートしなくなり、強制的にHTTP/2へ移行せざるを得ない状況になるのではないかと思っています。
さて、HTTPSにする場合、サーバ証明書が必要になります。サーバ証明書とは、暗号化通信をするために必要な鍵が正しいものであることを証明し、証明書の種類によってはWebサイトの運営組織の存在を証明します。
サーバ証明書を取得するには少なからず費用がかかるものですが、MozillaやAkamai、Ciscoなどが集まり、HTTPSの導入を促進するために無料のサーバ証明書を発行する、Let’s Encriptというプロジェクトがもうすぐ始まるようです。
今回は以上です。

次回は引き続きHTTPリクエストのメッセージヘッダの説明から再開します。

社内研修「HTTPから学ぶTCP/IP基礎」(1)” に対して1件のコメントがあります。

コメントは受け付けていません。