WEB+DB PRESS Vol.123

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

(2021年6月14日更新)

■ご注意
  • 本コーナーは,本誌記事参考用資料としてのご提供を目的としております。
  • 本誌記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

特集2「いまどきNext.js」

特集3「実践WAF」

連載

  • 「PHPで複雑さに立ち向かう」
    本記事で使用されたソースコード(執筆者GitHubリポジトリ)
  • 「現場のPython ── システム開発も! 機械学習も!」
    本記事で使用されたソースコード
  • 「Perl Hackers Hub」
    本記事で使用されたソースコード
  • 「Goに入りては…… ── When In Go...」
    本記事で使用されたソースコード

補足情報

特集1「HTTP/3入門」

(2022年6月29日更新)

2022年6月に,本特集で解説したHTTP/3を含むHTTP関連の仕様が正式なRFCとなりました。ここでは特集時点からの変更点を解説します。

第1章「進化するHTTPの歩み」
「HTTPのバージョンとセマンティクス」

誌面では,HTTPのセマンティクスおよびHTTP/1.1の仕様について,改訂作業を行っていると説明しました。

2022年6月に正式にRFCとして出版されました。仕様の内容については,誌面での説明から変更はありません。RFCは次のリンクから参照できます。

「HTTP/2の仕様改訂の動き」

誌面では,RFC 7540で定義されているHTTP/2の改訂版を出す取り組みが行われていることを説明しました。

草案の段階ではHTTP/2 bisと呼ばれていましたが,2022年6月にHTTP/2のRFCとして出版されました。正式なRFCとなったためHTTP/2 bisではなく,こちらがHTTP/2の仕様ということになります。

RFC 7540からの変更点として次の項目が挙げられます。

  • RFC 9110で定義される用語に準拠
  • RFC 7540で定義される優先度制御の廃止
  • HTTP/1.1から通信をHTTP/2に切り替えるアップグレードのしくみを廃止

RFCは次のリンクから参照できます。

「HTTP/3の基本」

誌面では,HTTP/3とQPACKの仕様は草案段階でした。

2022年6月にRFCとして出版されました。誌面掲載時は,QPACKは「QPACK: Header Compression for HTTP/3」という仕様名でしたが,セマンティクスの用語に合わせて「QPACK: Field Compression for HTTP/3」に変更されています。仕様の内容については,誌面での説明から変更はありません。RFCは次のリンクから参照できます。

第3章「詳解HTTP/3」
「優先度制御 ── 速く届けたいもの,遅くてもよいもの」

誌面では,新しい優先度制御のしくみとして「Extensible Prioritization Scheme for HTTP」を説明しました。

この仕様は,2022年6月にRFCとして出版されました。仕様の内容については,誌面での説明から変更はありません。RFCは次のリンクから参照できます。

第4章「実践HTTP/3」
「Curlによる確認」

Curlのビルド手順が更新されています。

誌面では,次のとおりでした。


$ curl https://sh.rustup.rs -sSf|sh
$ git clone https://github.com/cloudflare/quiche \
 --recursive
$ cd quiche
$ cargo build --release \
 --features ffi,pkg-config-meta,qlog
$ mkdir deps/boringssl/src/lib
$ ln -vnf $(find target/release \
 -name libcrypto.a -o -name libssl.a) \
 deps/boringssl/src/lib/

$ cd ..
$ git clone https://github.com/curl/curl
$ cd curl
$ ./buildconf
$ ./configure \
 LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" \
 --with-ssl=$PWD/../quiche/deps/boringssl/src \
 --with-quiche=$PWD/../quiche/target/release
$ make

2022年6月現在の手順は次のとおりになります。


$ curl https://sh.rustup.rs -sSf|sh
$ git clone --recursive https://github.com/cloudflare/quiche
$ cd quiche
$ cargo build --package quiche --release --features ffi,pkg-config-meta,qlog
$ mkdir quiche/deps/boringssl/src/lib
$ ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/

$ cd ..
$ git clone https://github.com/curl/curl
$ cd curl
$ autoreconf -fi
$ ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-openssl=$PWD/../quiche/quiche/deps/boringssl/src --with-quiche=$PWD/../quiche/target/release
$ make

なお,Curlのビルドの最新手順は公式であるHTTP3 (and QUIC)を参照してください。

第5章「HTTP/3の拡張と応用」
「QUICの拡張」

誌面では,QUICの拡張としてDATAGRAMフレームを定義する「An Unreliable Datagram Extension to QUIC」について説明しました。

DATAGRAMフレームの仕様は,2022年3月にRFCとして出版されました。仕様の内容については,誌面での説明から変更はありません。RFCは次のリンクから参照できます。

また,合わせて紹介した「Using QUIC Datagrams with HTTP/3」については,標準化の議論の中で「HTTP Datagrams and the Capsule Protocol」と変更されています。こちらについては,もともとはHTTP/3を前提としたしくみでしたが,HTTP/1.1やHTTP/2で通信を行うプロキシでもDATAGRAMフレームを転送可能にするため再設計されております。現在の草案は次のリンクから参照できます。

「MASQUE ── 通信のトンネリング」

誌面では,「CONNECT-UDPメソッド」「CONNECT-IPメソッド」を用いてトンネリングのための通信路を確立すると説明しました。

最新の草案では,CONNECTメソッドおよび:protocol擬似ヘッダを使う形式に変更されています。現在の草案は次のリンクから参照できます。

お詫びと訂正(正誤表)

本誌の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2021年12月20日最終更新)

特集1「HTTP/3入門」第2章 P.18 左段「仕様」の8行目

順に、QUICのトランスポートプロトコルとしての機能を定めたもの、パケットロスの検出や、帯域を逼迫させないように通信を行う輻輳制御について定めたもの、TLS(Transport Layer Security)を使用した暗号化のしくみを定めたものです。
順に、QUICのトランスポートプロトコルとしての機能を定めたもの、TLS(Transport Layer Security)を使用した暗号化のしくみを定めたもの、パケットロスの検出や、帯域を逼迫させないように通信を行う輻輳制御について定めたものです。