curl / Mailing Lists / curl-library / Single Mail

curl-library

HTTP/3

From: Daniel Stenberg via curl-library <curl-library_at_cool.haxx.se>
Date: Tue, 20 Nov 2018 23:13:31 +0100 (CET)

Hi friends,

I hope most of you have noticed that the other day it was decided the next
version of HTTP will be named HTTP/3 [1] (and it will be performed over QUIC
instead of TCP, but that was known since before).

I've started on a "HTTP/3 explained" document [2] with the aim of explaining
these new protocols (HTTP/3 and QUIC). The fundamentals are there and you can
read it already and it should give you a decent first grasp, but it certainly
isn't complete yet. I will gracefully appreciate comments, bug reports and
improvements!

HTTP/3 (h3 for short) is done over QUIC instead of TCP and it opens up
interesting new challenges for clients, and one of them is how to learn that a
site supports it and then when to use h3 instead of h2 or h1. Servers will
inform clients about their "h3 abilities" using the Alt-Svc response header
[3] and the client can then connect with QUIC and do h3 requests instead.

For curl to speak h3 in the same manner as the browsers will, curl then needs
to understand Alt-Svc headers as well and will need a few new ways to control
this behavior in the API. I've started to collect some thoughts around how
this should or could work for applications [4].

I have not yet started to actually write any code for h3 or quic support in
curl. I plan to base that work on the ngtcp2 library [5], which only does quic
so far. Possibly the h3 layer will then be done using the nghq library [6] (hq
being the old name for h3) but this library is currently a bit behind the
latest h3 drafts...

QUIC and HTTP/3 are scheduled to be "done" by July 2019.

It's a great time to be alive!

  [1] = https://daniel.haxx.se/blog/2018/11/11/http-3/
  [2] = https://daniel.haxx.se/http3-explained/
  [3] = https://tools.ietf.org/html/rfc7838
  [4] = https://github.com/curl/curl/wiki/QUIC-implementation
  [5] = https://github.com/ngtcp2/ngtcp2
  [6] = https://github.com/bbc/nghq

-- 
  / daniel.haxx.se
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.haxx.se/mail/etiquette.html
Received on 2018-11-20