この記事は、HTTP2 Advent Calendar 2014 – Qiitaの10日目の記事です。
本来は、HTTP/2のセキュリティについていろいろ語ってみたかったのですが、HTTP/2を学習したり、実装する時間が確保できなかったため、HTTP/2をちょっと触ってみた感じになっています。いままで、HTTP/2という言葉を聞いたり見たことはあったのですが、実際に触ったことはありませんでした。
HTTP/2について
HTTP/2は、GoogleのSPDYをベースに、今までのHTTP/1.1での経験をもとに、通信の簡略化や表示の高速化などを測った次世代のHTTPプロトコルです。 具体的には、単独のストリームで複数のデータを送受信できたりすることが可能だったり、HPACKと呼ばれるヘッダ圧縮の仕様などもHTTP/2と一緒に策定されています。さらに、HTTP/1系ではテキストベースでしたが、HTTP/2はバイナリベースなこともあり、今までよりHTTPヘッダなどでのオーバーヘッドが少なくなり、効率のよい通信が行えるようになっています。
HTTP/1系の時にはtelnetとかでクライアントとしてHTTPサーバと通信して遊んだりしていましたが、そんなことができなくなりますね…
HTTP/2の仕様について
HTTP/2はIETFによりdraft-14でラストコールされましたが、今のところdraft-16まで確認できます。 draft-14の仕様 https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 draft-14の日本語訳 http://summerwind.jp/docs/draft-ietf-httpbis-http2-14/
HTTP/2はHTTP/1.1との完全な後方互換性を持つ設計をするように定められていますが、どちらかと言うとネゴシエーションの際にHTTP/2に対応しているかのチェックが行われ、対応していない場合はHTTP/1.1として通信を行う感じで、HTTP/2のプロトコル自体は互換性がないです(あってないかも…)。
このへんのスライドが分かりやすかったです。


