ネットワーク

84. HTTP/2はインターネットの新しいバージョン

IoTの実現化でMQTTプロトコルを調べていくとWebSocketに出くわすことになった。
そしてWebSocket対応のHTTPサーバーを開発するとなると
今度はHTTP/2に出くわすことになった。
 
HTTPとはご存知HTMLなどのインターネット・コンテンツを配布するための
プロトコルである。

HTTP/2はインターネットの新しいバージョンである

今までの多くのHTTPはHTTP/1.1というバージョンであるが
理解しやすいことを目的として作られたプロトコルでもあるので
コマンドなどの命令はすべてテキスト・ベースである。
そのため命令は冗長になっていてここにきてコンテンツの量が
膨大になってくるとパフォーノンスの悪さが目に付くようになっていた。
 
そこでGoogleの提唱によって2015年5月にRFC2626としてW3Cで文書化されて
16年ぶりのHTTPのバージョン・アップとなった。
現在では主要なすべてのブラウザがHTTP/2に対応している。

HTTP/2は簡単に言えばそれまで冗長であったHTTP/1.1の情報を
圧縮化して表現したものである。

・HTTPヘッダの圧縮。
・HTTP/2サーバープッシュ通信。
・HTTPパイブライン
・HTTP/1.1ノブロッキング問題を解消
・複数のリクエストの最適化

イメージとしてはテキスト・ベースであったHTTP/1.1を
バイナリ通信に変更されたということである。
実はHTTP/2に引き続いてHTTP/3もリリースされているが
これはまだ普及していない。

ブラウザの対応状況

・Google Chrome (30は設定が必要[6][7])
・Mozilla Firefox (34から標準で有効[8])
・Microsoft Windows 10上のInternet Explorer 11
・Microsoft Edge[9]
・Opera
・Safari 9から

HTTP/2を利用している主なサイト

米国のある会社の2021年の調査によればHTTP/2を利用しているサイトは既に
50%を超えているという。利用している有名なサイトは

Google COM
Youtube.com
Tmall.com
Qq.com
Sohu.com
Taobao.com
Yahoo.com
Wikipedia.org
Zoom.us
Sina.com.cn

…ご覧のようにHTTP/2は既にすべてのブラウザで使用可能になっている。
HtTP/1.1ではステートレスというセッションに依存しない、逆に言えば
セッション管理ができない会話が基本となっていたが
これは5250エミュレータと相容れない構造になっていた。
  そこでAutoWebでは仮想対話式環境というジョブ番号による
元のジョブへの再帰構造を作っていたためにこの問題を
解決していたが他のIBM HATSやaXesといった製品では
そのような高等な工夫をする技術がないため
ブラウザのXボタンを押すとIBM iのジョブだけが取り残されたり
戻るボタンを押すとプラウザでは前の画面に戻るが
内部のジョブのスタックは以前のままに留まるという
画面遷移の不一致が発生してしまう。

IBMはXボタンや戻るボタンは押さないでくださいと
指導したりaXesではブラウザのメニュー・バーやツール・バーを
非表示にして隠してしまうという対策を取っているが
これは技術のない単なる逃げ手であり
まともな製品とは言えないだろう。
IBM HATSはすっかり姿を消してしまったしaXesもいずれは
日本のIBM業界からは姿を消す運命だろう。

これからのWeb化ツールはHTTP/2対応が必須である