あと、これに追従して書いたものが、「SPDY3.1が有効だとどんな違いがあるのか検証してみました。」というのもあり。だけれどもこちらはそれほどアクセスがないんだな。これが。
読み返して見ると今よりも随分やる気に満ちておる。
そしてこの話を書いたのももう5年も前のことになる。
でに。
それでなにやら2をさらに超えた3がやってくるらしいので、ちょっと調べてみることにしたのす。
HTTP2をさらに超えたHTTP3では眉毛ではなくTCPがなくなるらしい。
という今の世代に通じるのかわからんような例えでござりますが、いつものようにシンプルで分かりやすく(というのを心がけてはいる)書いていきたいと思います。
HTTP2.0以前ではだんごむしのような処理になっていたものが、並列にバビローンと処理をすることで、遅いTCPでも早く処理できちゃうというところがポイントでした。
驚きポイントは今度の主役はUDPということではないだろうか。
UDPというとブロードキャストな通信などなどで有名?なコネクションレス型の通信で、信頼性はさておきでバンバン投げつけるイメージのプロトコル。やはり2を更に超えた3はちょっと乱暴なのでしょうか。
そしてGoogleさんがIETFに提出し、改良&標準化されHTTP3となった。
らしい。というのがざっくりとした外側のようです。
いきなりだけどQUIC使ってみる
参考サイトさま
The Cloudflare Blog, http://HTTP/3: the past, the present, and the future
まずはオプションでHTTP3かを確認できるらしいCurlをGETします。
$ /usr/local/opt/curl/bin/curl -I https://blog.cloudflare.com/ --http3 HTTP/3 200
使っているかどうかしか分からんけども、こんなふうに確認ができるようです。ためしにこのブログも見てみますよと。
$ /usr/local/opt/curl/bin/curl -I https://www.vincentina.net/ --http3 curl: (7) quiche: recv() unexpectedly returned -1 (errno: 61, socket 5)
エラーです。
Nginxに設定を追加してみます。
@@ -4,6 +4,9 @@ listen 443 ssl http2; listen [::]:443 ssl http2; + # Enable QUIC and HTTP/3. + listen 443 quic reuseport; + listen [::]:443 quic reuseport; + # Add Alt-Svc header to negotiate HTTP/3. + add_header alt-svc 'h3-23=":443"; ma=86400';
できました!
4月 01 19:23:53 deb nginx[11274]: nginx: [emerg] invalid parameter "quic" in /etc/nginx/conf.d...nf:8
はい、だめでした。
当然です。
世の中そんな甘くない!
ぎゃー。
今、このサーバーで使っているOSがDebianの8です。
Debian8のOS標準のNginxはというと
$ /usr/sbin/nginx -v nginx version: nginx/1.14.2
というわけでして、確認してみるとHttps3.0への対応はNginx 1.17から(Cent7とかならいけるっぽい)ということらしいので実際に試せるのはまだまだ未来のようでした。
はい。
よく分からんやりとりをしてしまいました。
お試しの前にはOSのアップグレードが立ちはだかるのだろうか?
そのまま使えるといいな。
ソースコンパイルなどなど導入できるやり方はあろうけども、HHVMで痛い目にあったのであんまりチャレンジしたくないのだ。
気を取り直して QUIC QUIC
QUICがどんな感じか簡略図で見てみると
1.クライアント → QUIC → サーバー
2.クライアント ← QUIC ← サーバー
3.クライアント → QUIC + Request → サーバー
4.クライアント ← Response ← サーバー
みたいな感じらしく、これを見たときに
江頭さんの「取って入れて出す」というネタ?を思い出しました。静止画だと分かりづらいんだけど、似てるのは言葉じゃなくて動作で、手を振りながら「取って入れて!出す!」とやるんだけど、その手の動きがまさに上の画像のようなので、気になった人は「取って入れて出す」で検索してみてください。
さすがにこれでは雑すぎるので
もう少し調べようと思います。
モデルです。
珍しく自分で書いてみました。検索でヒットして出てきた画像を真似してExcelでポチポチと書いてみてます。
はいさて、Wikipediaを使って解読していこうと思います。まずはQUICというのは、Quick UDP Internet Connections
の略称ということらしく、頭文字をもじってQUICということで、かなりのネーミングセンスの持ち主が居るようです。
UDPで素早くインターネットコネクションしちゃうぞということですね。UDPというのはまた略称で、これはUser Datagram Protocolといいます。
User Datagram Protocol
経路確保などの事前のやり取り(コネクションの確立)無しに、データ送信を開始するパケット通信の方式で、コネクションレス型通信といいます。
By Wikipedia。
さて、コネクションレス型通信で、素早くコネクションするぞとは一体どういうことなんだぜと。それにTCPといえば、「繋いだ手を離さないで〜」という通信でその代わりになる必要があるのだよね。その役割がQUICということか。
説明しているような気がして名前を読んだだけだったりしたけども、名前ってほんとうに大切なものだね。
すなわちTLSというのは、アプリケーションとインターネット間をセキュアにする奴っていうことだね。というわけでUDPで素早くセキュアな通信にしちゃうと
いうことかな?
また名前を読んだだけやけども、要点はこんな感じかしら。
いうわけで、思っていたざっくり感をさらに超えたざっくり感になってしまった気がしないでもないけれど、なんとなく分かった気になってもらえると嬉しい。のかもしれない。
ってことで
Nginx1.7が使えるようになった頃にまた試してみようと思うんだ。