HTTP

WebサーバとのコネクションでDNS通信もする拡張仕様

追記 20170510 この提案仕様は、draft01でauthor自ら廃案とされました。 昨日の「DNS over QUICの提案仕様が出た」引き続きDNS関連の記事 DNSとHTTP 近年注目されている、"DNS over HTTP"は例えば「DNS-over-HTTPS」としてGoogleが提供していたり、IETF97で…

varnishtestのHTTP/2対応 アップデート

これは、http2 Advent Calendar 2016の10日目の記事です。 今年の頭に書いた「varnishtestがHTTP2対応して超便利!」で紹介しましたvarnishtestのHTTP/2対応ですが、シンタックスの一部変更で当時のサンプルが使えなくなっていたのでアップデートについて軽…

Apache mod_http2 で 103 EarlyHints (RFC 8297) を試す

これは、http2 Advent Calendar 2016の5日目の記事です。 20161208 今回はtoy serverを使用しましたが、103 EarlyHintsを送信できるNginxモジュールを書きました 103 EarlyHintsを送信するNginxモジュール書いた 103 Early Hints 103 Early Hintsは、@kazuho…

CloudFlareの提案するHTTP/2の圧縮辞書拡張

IETFのHTTPbis wgでCloudFlareの方より「Compression Dictionaries for HTTP/2」(URL)という仕様が提案されている。 これは、Content-Encodingヘッダで指定される圧縮アルゴリズム向けの初期ウィンドウに使用される辞書データを事前に送る拡張を定義する。 C…

HTTP/2のデバック用情報エンドポイントの仕様

HTTP/2 Implementation Debug State 「HTTP/2 Implementation Debug State」というHTTP/2用のデバッグ情報を表示するエンドポイントの仕様が、IETFに提出されています。https://tools.ietf.org/html/draft-benfield-http2-debug-state-01 サーバの「.well-kn…

CloudFlareのNGINX HTTP/2 + SPDY両対応するパッチを試す

CloudFlareから、「Open sourcing our NGINX HTTP/2 + SPDY code」という記事にて、NginxをHTTP2とSPDYに両方に対応するパッチが公開されました。 NginxはHTTP2対応に伴い、SPDYのコードは削除されました。しかし、一部古いブラウザはSPDYまでしか対応してな…

HTTP/2における証明書に基づいたリアクティブなクライアント認証 その2

この記事は Secondary Certificate Authentication in HTTP/2 という仕様にマージされました 「HTTP/2における証明書に基づいたリアクティブなクライアント認証 その1」(2015-10-23) 「Reactive Certificate-Based Client Authentication in HTTP/2」 の dr…

apache2 mod_http2のhttp2-status

HTTP/2のデバック用情報エンドポイントの仕様 http://d.hatena.ne.jp/ASnoKaze/20160907/1473180491 HTTP/2デバッグ用エンドポイントの仕様が議論されており、mod-h2のhttp2-statusの出力もそれに準拠するようになりました(2016/09/07) mod_http2の1.2.0で新…

varnishtestがHTTP2対応して超便利!

既に記法が変わっています。サンプルコードはそのままでは使用できません。リポジトリ内のテストコードを参考にしてください (2016/04/04) 20161210 「varnishtestのHTTP/2対応 アップデート」にて、更新項目について書きました Varnish-Cacheのvarnishtest…

Apache 2.4.18 のHTTP2 ServerPushを試す

20180208追記、Nginxも対応したようです NginxがHTTP2サーバプッシュに対応したので試す - ASnoKaze blog Apache 2.4.18より HTTP/2のサーバプッシュを試す。 http://ftp.riken.jp/net/apache//httpd/CHANGES_2.4.18 ビルド 「Apache 2.4.17のmod_http2試す…

HTTP/2 GZIPPED_DATA フレームとは

このエントリは、 http2 advent calendar の 8 日目の穴埋めです。 HTTP/2にGZIPPED_DATAフレームという拡張フレームを追加する提案が提出されている。フレームの追加に伴って、エラーコード・Settingsも追加される。 HTTP/2 Gzipped Data https://tools.iet…

Chrome デベロッパーツールに表示される Priority と HTTP/2

このエントリは、 http2 advent calendar の 5 日目です。 ここまで豪華執筆陣による記事が続いてるところに恐縮です。 (あとChromeのコードへの理解が足りず、間違いがあるかもしれません。ご注意下さい) Chrome デベロッパーツールのPriority 先日、Chro…

HTTP/2に「ORIGINフレーム」を追加する拡張仕様

この記事は古くなっています。 2018/01/11 最新内容で書き直しましたのでそちらを参照のこと asnokaze.hatenablog.com HTTP/2では、一定の条件が満たされれば異なるオリジンとの通信を一つのコネクション上で行うことが出来ます。サーバは、クライアントが要…

サーバプッシュのための「Accept-Push-Policyヘッダ」とは

HTTP/2ではサーバプッシュと呼ばれる機能があります。サーバはクライアントからのリクエストを受信しなくても先んじてレスポンスを返すことができる仕組みになります。 たとえば、HTTP/1.1においてリソースをインライン化していた部分をサーバプッシュとして…

HTTP/2における証明書に基づいたリアクティブなクライアント認証 その1

draft 01で大きくな変更が加えられました。証明書を要求するフローは以下より大きく変わりました。ご注意ください (2016/01/27) 「HTTP/2における証明書に基づいたリアクティブなクライアント認証 その2」でdraft02について書きました(2016/05/04) HTTP/2に…

Apache 2.4.17のmod_http2試す

mod_h2が Apache2.4.17でデフォルトで組み込まれたのでビルドして試してみる。 今回はopenssl1.0.2を使いたいのでubuntu15.10を使います。 以前のubuntuだとうまくいかないかもしれない nghttp2のインストール nghttp2をインストールしておく必要があります …

Nginx 1.9.5 でHTTP2を試そう!

opensslのバージョンに注意してください。NPNやALPNを使うのでバージョンを確認してください(追記) 本日公開されたNginx 1.9.5でHTTP2に対応しました!早速試しましょう!! ( http://nginx.org/en/CHANGES ) 今回もUbuntu14.04 (別のOSでも、パッケージor…

Nginxのhttp2_streams_index_sizeパラメータについて

Nginxのhttp2の設定項目にhttp2_streams_index_sizeがある。直感的には分かりにくかったのでちょっと調べる。 そのほかのパラメータは過去に書いたとおり、「Nginx 1.9.4 HTTP/2パッチのconf パラメータ設定項目」 streams_index配列 各ストリームに関する情…

Nginx HTTP/2の受信フレーム集計

こんな感じで、Nginxの受信フレームをグラフ化する。 デバッグログからFluentdでMackerel APIを叩く感じ。 ビルド NginxのHTTP/2パッチがTrunkに取り込まれたので、改めてビルド。 wget http://hg.nginx.org/nginx/archive/tip.tar.gz tar zxvf ./tip.tar.gz…

Nginx 1.9.4 HTTP/2 のconf パラメータ設定項目

Nginx 1.9.5でHTTP2がサポートされました。パラメータ自体は本記事から変わりません。(2015/09/23) http2_max_field_sizeの挙動が変わったようです (2015/11/12) http://hg.nginx.org/nginx/rev/1f26bf65b1bc Nginx 1.9.4 + patch.http2-v5_1.9.4.txtで使え…

HAProxyでHTTP/2のTLS終端する際のALPN設定

HAProxy 1.5でALPNに対応していた。 HTTP/2 over TLSの通信を、HAProxyでTLSを終端することで、TLS対応を行わないであろうVarnishなどでもh2c接続が可能となる。 (HAProxy自体のhttp2対応はまだ先) 今回はバックエンドにNginxをh2cでリッスンさせて試してみ…

nginxでアクセスログにhttp2の通信か出力する

「nginxでアクセスログにspdyのバージョンを出す」の時と同様にlog_formatで出力できる。 nginx 1.9.3 + patch.http2-v2で試す 環境構築は「nginx1.9.3 HTTP/2 パッチを試す」 設定 http { log_format main '$remote_addr - $remote_user [$time_local] "$re…

ssl_prefer_server_ciphersを有効にしたらERR_SPDY_INADEQUATE_TRANSPORT_SECURITYが出るようになった。

ubuntu14.04で、Nginx1.9.3 + patch.http2-v2 + openssl1.0.2d 環境構築は「nginx1.9.3 HTTP/2 パッチを試す」 server { listen 443 ssl http2 ; ssl_prefer_server_ciphers on; #★offにすると繋がる server_name localhost; ssl_certificate xxx.crt; ssl_c…

nginx1.9.3 HTTP/2 パッチを読むメモ(day1

patch v2が公開されました、すでに内容は古くなっています(2015/08/16) 前回の「nginx1.9.3 HTTP/2 パッチを試す」に引き続き、nginxのhttp/2パッチを読んでみる。 ただし、nginx初心者なのでnginx的な部分については全然理解していない...基本的には自分用…

nginx1.9.3 HTTP/2 パッチを試す

1.9.5でHTTP2がサポートされました。Nginx 1.9.5 でHTTP2を試そう!(2015/0923) nginx 1.9.3のHTTP/2アルファパッチが公開されました。 https://www.nginx.com/blog/early-alpha-patch-http2/ 基本的には書いてあるとおりにヤレば簡単に動作します。 ubuntu1…

MPEG‐DASHにおけるHTTP/2の使用、DASH-PUSHの提案

MPEG-DASHとHTTP/2 MPEG-DASH(Dynamic Adaptive Streaming over HTTP)と呼ばれるHTTP上で環境に合わせてビットレートを変更しながらストリーミングできる仕組みがある。このMPEG-DASHにHTTP/2を使うという話がいくつか出てきている。 たとえば、BBCの「Adapt…

mod_h2を使って、ApacheをHTTP/2対応する

mod_h2はapache2.5 devに組み込まれました。 以下の手順では正しくビルドできなくなりました。ご注意下さい。 (09/04追記) mod_h2はapache2.4.17に組み込まれました そちらでのビルド手順を、後日記事を書こうと思います (10/14追記) http://www.apache.org/…

HTTP/2 Connection Prefaceの理由と経緯

HTTP/2 Connection Prefaceとは HTTP/2では通信の最初に「コネクションプリフェイス(Connection Preface)」というメッセージを送信します。 クライアント側は「クライアントコネクションプリフェイス」と呼ばれる以下のメッセージを送信します。 0x505249202…

h2-ping - HTTP/2のPINGフレームを送り続けるだけのスクリプト

h2-ping http-2 gemの使い方をお勉強するために、HTTP/2のPINGフレームを送り続けるだけのスクリプトを書きました。 機能も出力もお粗末ですが、http-2 gemのexampleが非常に分かりやすく、かつ便利なので殆どコピペしただけで出来てしまいました。https://g…

HTTP/2における、ストリーム並列数別パケットロス率が与える影響測定

この記事は HTTP2 Advent Calendar の 23 日目の記事です。 本記事では、個人的興味からHTTP/2の並列数別のパケットロス率影響度を測定した。 余談ではあるが、 現在の仕様では "HTTP2.0" ではなく "HTTP/2" もしくは "HTTP2" としている。 背景 HTTP/2ではH…