若者のプロトコル離れが叫ばれて久しいが、最近プロトコルは非常にホットな分野である。
目まぐるしく進化するWebに合わせ、プロトコルの世界も着実に進化している。
今までブラウザでは出来なかった事が出来るようになり、Webサービスをより安全に使えるようになった。
そしてWebのパフォーマンスを大きく改善するためにHTTP2.0も議論されている。
Webを支えるプロトコルとして、大きく分けて3つに分けられるかと思う(私の勝手なイメージ、正確な図ではありません)
Webアプリケーション
ブラウザが今まで出来なかったことを出来るようにしたり、Webアプリケーションの認証・認可などの機能を提供するプロトコルなど。JSやサーバサイドプログラミングで利用したりする。
WebSocket (http://tools.ietf.org/html/rfc6455)
ブラウザとWebサーバの間でソケット通信を行うためのプロトコル。双方向通信が行える。
WebRTC (http://tools.ietf.org/wg/rtcweb/)
ブラウザ間でボイスチャット、ビデオチャットを行うためのプロトコル。
OAuth 2.0 (http://tools.ietf.org/html/rfc6749)
Webサービスにおいて、ユーザの権限を安全に別のサービスに委譲するためのプロトコル。まちがっても認証のためのプロトコルではない。
OpenID Connect (http://openid.net/specs/openid-connect-core-1_0.html)
サービス間でユーザの認証結果とユーザの属性情報を受け渡しを行うためのプロトコル。OAuth2.0がベースとなっている。
HTTP
そのものずばりHTTP自体に関するもの。HTTPと、それを高速化するためのプロトコルなど。
HTTP1.x (http://tools.ietf.org/wg/httpbis/)
皆さんご存知のHTTP。文書データや画像・動画などのコンテンツを送受信するためのプロトコル。最近、HTTP認証などの改善などが議論されている。
SPDY (http://www.chromium.org/spdy/spdy-protocol)
Googleが提案したHTTPを改善するためのプロトコル。HTTP1.xのセマンティックは維持したまま、ストリームという概念を導入し、HTTP1.xのボトルネックを改善している。
HTTP2.0
SPDYをベースとして議論されいてる、HTTPの次期バージョン。SPDYより様々な改善がなされており、正式なRFC化に向けて議論中であるが、すでに幾つかのブラウザ・Webサーバで実験実装が行われている。
QUIC
Googleが提案してるプロトコル。UDP上で、TCPやTLSで行っていた機能を提供する。
QUIC上ではSPDYのみ利用できる。
トランスポート
TCPとUDP。Webとは直接関係無いように思われるが、HTTPを語る上では外せない。SPDY,QUIC,HTTP2.0といったプロトコルは、TCPやUDPの特性を考慮して作られている。
又、TCP Fast OpenやTCP Multi Pathといった拡張も提案・実装されておりココはココで非常にホットなプロトコルである。
その他
上記以外にもDNSといったプロトコルも,Webを支えるプロトコルとして重要なので是非抑えておきたい。HTTP2.0の議論と合わせて、新しいレコード等が提案されている。
申し訳ありませんが、まだまだ、足りてない部分、間違いなどあるとは思います。是非、ご指摘下さい。
実はプロトコルの面白さは、何が出来るようになったか?というよりは、どう実現されているか?セキュリティ上問題はないのか?既存の通信経路上でそのまま通信して問題なのか?と言った部分にあると思っている。様々な議論がされているので、そういった中身の話に触れるとより面白く感じれると思う。
そんなわけで、さらにプロトコルなイベントがこれから増えますように。
(WebDAVとかありましたね、忘れてましたorz)