Giter VIP home page Giter VIP logo

http3-explained's Introduction

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.

HTTP/3 explained cover

http3-explained's People

Contributors

0xflotus avatar 5k9m avatar adnam avatar antbryan avatar bagder avatar byronlian avatar derklaro avatar ebiiim avatar eltociear avatar ericlaw1979 avatar inductor avatar jbr avatar jukkume avatar kfv avatar loyalsoldier avatar lsb avatar marcobellaccini avatar mingrammer avatar mmmarcos avatar nanxiao avatar nrkirby avatar outsideris avatar peterfaiman avatar philippgille avatar quantumsheep avatar samnela avatar smaeda-ks avatar tunetheweb avatar vszakats avatar yi-bai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

http3-explained's Issues

List of servers mentions only NGINX and Apache

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).

HTTP/3 explained front page

Anyone with some design skills want to take a stab at making a front page for this document?

  • Size of 1800x2360 pixels for cover.jpg, 200x262 for cover_small.jpg
  • No border
  • Clearly visible book title
  • Any important text should be visible in the small version

The official quic logo might be a good idea to use somehow:

quic
quic-wider

There is no official HTTP/3 logo. It might be amusing to use the "scary" 3 from Mike Bishop's IETF 103 presentation:

http3

Pages in the wrong order

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

Consider adding a glossary

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!

why HTTP/3 at all?

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.

Long sentence in [why-quic] section.

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.

Unclear sentence in "Criticism"

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.

regd. number of frame types

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:

  1. DATA
  2. HEADERS
  3. PRIORITY
  4. CANCEL_PUSH
  5. SETTINGS
  6. PUSH_PROMISE
  7. GOAWAY
  8. MAX_PUSH_ID
  9. DUPLICATE_PUSH

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.

A better font would be good for Japanese

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.

Citing HTTP/3 explained

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?

Gibberish syntax corruption

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.

Some confusing wording and my suggestions

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. feature-http.md and h3.md have the same subtitles, although they have different directorie (SUMMARY.md) titles.

  7. In quic-connections.html, change the "wifi" to "Wi-Fi", "download" to "downloads"? I am not sure.

Spanish translation

I've just finished reading this book and found it very interesting and clear (thanks!). I would love to see a Spanish translation.

Italian translation pending

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

QUIC is an acronym.

/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

[ja] Remove extra spacing

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 トラフィックをブロックするか、あるいは利用制限をかけています。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.