Webを支えるプロトコル

若者のプロトコル離れが叫ばれて久しいが、最近プロトコルは非常にホットな分野である。
目まぐるしく進化する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上で、TCPTLSで行っていた機能を提供する。
QUIC上ではSPDYのみ利用できる。

トランスポート

TCPUDP。Webとは直接関係無いように思われるが、HTTPを語る上では外せない。SPDY,QUIC,HTTP2.0といったプロトコルは、TCPUDPの特性を考慮して作られている。
又、TCP Fast OpenやTCP Multi Pathといった拡張も提案・実装されておりココはココで非常にホットなプロトコルである。

その他

上記以外にもDNSといったプロトコルも,Webを支えるプロトコルとして重要なので是非抑えておきたい。HTTP2.0の議論と合わせて、新しいレコード等が提案されている。



申し訳ありませんが、まだまだ、足りてない部分、間違いなどあるとは思います。是非、ご指摘下さい。


実はプロトコルの面白さは、何が出来るようになったか?というよりは、どう実現されているか?セキュリティ上問題はないのか?既存の通信経路上でそのまま通信して問題なのか?と言った部分にあると思っている。様々な議論がされているので、そういった中身の話に触れるとより面白く感じれると思う。


そんなわけで、さらにプロトコルなイベントがこれから増えますように。

WebDAVとかありましたね、忘れてましたorz)