HTTP/3 explained is a collaborative effort to document the HTTP/3 and the QUIC protocols. Join in and help!
Get the Web or PDF versions on http3-explained.haxx.se.
The contents get updated automatically on every commit to this git repository.
A document describing the HTTP/3 and QUIC protocols
Home Page: https://http3-explained.haxx.se/
License: Creative Commons Attribution 4.0 International
HTTP/3 explained is a collaborative effort to document the HTTP/3 and the QUIC protocols. Join in and help!
Get the Web or PDF versions on http3-explained.haxx.se.
The contents get updated automatically on every commit to this git repository.
The list of servers supporting QUIC mention only NGINX and Apache, but other servers support QUIC already.
Or is there a requirement for production-readyness or popularity (e.g. number of servers on the internet running the server) for it to be listed in the book? That would be a valid point, but then maybe it could be mentioned in the beginning of the section (like "The following servers are production-ready and have an estimated deployment percentage of >1% on the web:" or so).
https://http3-explained.haxx.se/en/specs.html
Original:
TLS
Using Transport Layer Security (TLS) to Secure QUIC
The linked URL refers to: https://tools.ietf.org/html/draft-ietf-quic-tls-16
Update it to: https://tools.ietf.org/html/draft-ietf-quic-tls-17
Anyone with some design skills want to take a stab at making a front page for this document?
The official quic logo might be a good idea to use somehow:
There is no official HTTP/3 logo. It might be amusing to use the "scary" 3 from Mike Bishop's IETF 103 presentation:
... might be a catchier name, following the successor?
I think you should change HTTP over QUIC
to HTTP/3
in the documents.
Bootstrapping http/3 using DNS is already implemented by major vendors, but the book only mentions bootstrapping using the alt-svc
HTTP header.
Please provide a 繁體中文 version.
All since we switched away from the "legacy" gitbooks site, the http3 explained book get the pages in seemingly random order both in the web version and in the PDF version.
Identical problem to the one in http2 explained: bagder/http2-explained#205
This is a feature request, I suppose. I've been reading through this book and finding it very interesting! However, I'm not familiar with all the acronyms and was wondering if a glossary could be added to expand the acronyms so other readers will know what they mean?
The particular acronym that I wasn't familiar with was RTT
(Round Trip Time).
Thanks!
add a mention somewhere. New section?
zh/why-h2.md 最后一句有错误
It seems the only real benefit is the avoidance of HTTP stalls - but given all of the infrastructure limitations in existence - anything over UDP seems unlikely. As the author of a major system that used UDP to avoid some of the same TCP drawbacks, I can confirm that it is a struggle using UDP over the internet.
So, why not just use HTTP/2 and then open multiple connections and bond them. Seems it solves the major problem that QUIC is trying to solve.
Generated with:
docker run --rm -v "$PWD:/docs:Z" heshihao/gitbook gitbook epub . ./http3-explained_2021-08-28_4b82e3b.epub
https://github.com/jtagcat/jtagcat/raw/main/pl/comment/http3-explained_2021-08-28_4b82e3b.epub
(any searches for 'epub' should come up with this closed issue)
According to [why-h2] page and this blog post, are connection coalescing and ud/desharding two different names for a method?
It seems the first sentence in the second paragraph is long and we could break it in to two separate sentence.
Here is the main sentence:
QUIC is in many ways what could be seen as a way of doing a new reliable and
secure transport protocol that is suitable for a protocol like HTTP and that
can address some of the known shortcomings of doing HTTP/2 over TCP and
TLS.
In a "Criticism" section there's this part of a sentence:
a server must not send more than three times the size of the request in response without receiving a packet from the client in response.
I don't understand this. It sounds like if a client sends an initial request of size x, then the server may send a response up to size 3*x. And there's an exception where the server may send a bigger response, which is when the client sends a packet in response to the response? How is the security mechanism supposed to know whether there will be a response by the client in order to allow a larger response by the server?
Maybe the part of the sentence can be rephrased or expanded on to make it easier to understand.
https://http3-explained.haxx.se/en/h3-streams.html
Original:
HTTP/3 frames
HTTP/3 means setting up QUIC streams and sending over a set of frames to the
other end. There's but a small fixed number (eight!) of known frames in HTTP/3.
I was reading https://tools.ietf.org/html/draft-ietf-quic-http-17 It list 9 frames:
So may be you can change the "eight" into "nine"? Alternatively, you can remove "eight" altogether, just in case if they add/remove any frames in future drafts.
https://http3-explained.haxx.se/en/specs.html
Original:
HTTP
Hypertext Transfer Protocol (HTTP) over QUIC
The linked URL refers to: https://tools.ietf.org/html/draft-ietf-quic-http-16
Update it to: https://tools.ietf.org/html/draft-ietf-quic-http-17
It seems in PDF Japanese uses not a very good font especially for documentation.
How do you generate the PDF? I wonder what format of fonts we can use for it.
I've run into the "issue" of wanting to cite this book. I have a hard time finding example s of properly cited gitbooks.
@book{StenbergHTTP2018,
title = {{{HTTP}}/3 Explained},
author = {Stenberg, Daniel},
year = {2018},
edition = {2020-10-11},
publisher = {{gitbooks}},
url = {https://http3-explained.haxx.se/},
abstract = {This book effort was started in March 2018. The plan is to document HTTP/3 and its underlying protocol: QUIC. Why, how they work, protocol details, the implementations and more. The book is entirely free and is meant to be a collaborative effort involving anyone and everyone who wants to help out.},
langid = {english}
}
Do you think the above is a good enough citation in bib(la)tex?
Example:
Stenberg, D. (2018). HTTP/3 explained (2020-10-11). gitbooks.
If its good enough I'll add it as a pull request to the readme as well. Perhaps its possible to have a rolling edition date as well?
Hi there,
the german translation on https://http3-explained.haxx.se/de/ just has the Introduction, but is missing the other sections.
Seems like the SUMMARY.md is missing for the german translation (according to https://twitter.com/bagder/status/1151084419421265920)
https://http3-explained.haxx.se/en/specs.html
Original:
QUIC: A UDP-Based Multiplexed and Secure Transport
The linked URL refers to https://tools.ietf.org/html/draft-ietf-quic-transport-16
Update it to: https://tools.ietf.org/html/draft-ietf-quic-transport-17
https://datatracker.ietf.org/doc/html/rfc9369 was published as QUIC version 2. It might be worth changing the title of the QUIC v2 section.
https://http3-explained.haxx.se/en/specs.html
Original:
Recovery
QUIC Loss Detection and Congestion Control
The linked URL refers to: https://tools.ietf.org/html/draft-ietf-quic-recovery-16
Update it to: https://tools.ietf.org/html/draft-ietf-quic-recovery-17
In en/h3-altsvc.md:
"The information given in such an Alt-svc response has an expiry timer making clients will information that for a period of time so that subsequent connections and requests can go directly to the alternative host using the suggested alternative protocol."
I honestly don't understand what you're trying to say here. I'm fairly sure that the issue resides somewhere in the "...making clients will information that for a period of time..." substring, but apart from that I'm at a loss.
The repository's link "https://daniel.haxx.se/http3-explained/" returns 404.
Can you change the URL somewhere working or fix the site?
So that those who try to fix mistranslation/typo and assign to a right person as a reviewer properly
https://github.com/bagder/http3-explained/blob/master/HOWTO-TRANSLATE.md#push-rights
I have read this book recently, it is good, but a little wording seems to be confusing to the reader, so I sent my comments here for improvement.
and there are never any unencrypted QUIC connections.
in feature-tls.html
This sounds a bit like there is no plaintext messages, even if it is a handshake message. I understand it is saying there is no leak of the transmitted data.
official QUIC protocol
in proc-status.html
I understand the Google's QUIC protocol is proprietary, but it is popular and used, so the "official" is confusing, The used The IETF QUIC protocol
may be better.
Based on UDP it also then uses UDP port numbers to identify specific servers on a given machine.
in feature-udp.html
"specific servers on a given machine." is a less obvious concept, I used to think that it said "services", but it may also be saying that the servers is behind a NAT router. Maybe it can be said "identify specific servers behind a given address."? Or it's my problem, I first think of the servers as a host rather than running server software behind a port.
Version negotiation
in quic-connections.html
This mechanism seems similar to the TLS handshake, but as a general reader, I can't quite understand why and how to select the protocol version from the client.
Back then, QUIC was still claimed to be an acronym for "Quick UDP Internet Connections", but that has been dropped since then.
in proc.html
I hope it provides a reference as it seems not easy to find.
feature-http.md and h3.md have the same subtitles, although they have different directorie (SUMMARY.md) titles.
In quic-connections.html, change the "wifi" to "Wi-Fi", "download" to "downloads"? I am not sure.
Is it possible to provide epub version, I can pay
I've just finished reading this book and found it very interesting and clear (thanks!). I would love to see a Spanish translation.
https://http3-explained.haxx.se/en/h3-push.html
Original:
Problematic
[...]
Pushing is never "free", since while it saves a half round-trip it still uses
bandwidth. It is often hard or impossible for the server-side to actually know
with a high level a certainty if a resource should be pushed or not.
"high level a certainty" --> "high level of certainty".
Hello @bagder
In the next few hours an Italian translation of your book "HTTP/3 explained" will be ready.
Will open PR soon and hope to get it right !
Ciao ciao,
Max
/en/why-quic.md:
"QUIC is a name, not an acronym. "
QUIC is an acronym by Quick UDP Internet Connections.
What is QUIC?
QUIC (Quick UDP Internet Connections) is a new transport protocol for the internet, developed by
Google.
In this https://www.chromium.org/quic page. Documentation - QUIC overview
Since markdown's line break in Japanese is interpreted as a space, I think that it is better to remove the line breaks...
For example (in ja/criticism.md):
ポート53 (DNS に使われる) 以外の UDP トラフィックをブロックするか、あるいは
利用制限をかけています。
This is rendered in HTML in this way:
ポート53 (DNS に使われる) 以外の UDP トラフィックをブロックするか、あるいは 利用制限をかけています。
It makes it more readable by modifying the md file as follows:
ポート53 (DNS に使われる) 以外の UDP トラフィックをブロックするか、あるいは利用制限をかけています。
There is a RFC for Bootstrapping WebSockets with HTTP/2 what's the plan for WS in HTTP/3?
https://http3-explained.haxx.se/en/specs.html
Original:
QPACK
QPACK: Header Compression for HTTP over QUIC
The linked URL refers to: https://tools.ietf.org/html/draft-ietf-quic-qpack-03
Update it to: https://tools.ietf.org/html/draft-ietf-quic-qpack-05
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.