frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

HTTP3 Explained

https://http3-explained.haxx.se
103•weinzierl•6h ago

Comments

ahoka•4h ago
Anyone else blocks UDP 80/443 due to privacy concerns?
detaro•4h ago
What privacy concern do you have that does not apply to TCP 80/443?
ahoka•4h ago
Tracking sessions across different physical connections has some non-trivial privacy implications:

https://http3-explained.haxx.se/en/quic/quic-connections#con...

NavinF•4h ago
How do you imagine other protocols handle switching physical connections? With HTTP 1, you send your session ID as a cookie after wasting time creating a new TCP connection
ahoka•3h ago
Yes, obviously, but we already know how that is used. This is a more complex protocol that might enable attack vectors that were not possible before and we do not think about when accessing websites:

But see the notes taken from the HTTP/3 RFC itself, written by the authors:

10.11. Privacy Considerations

   Several characteristics of HTTP/3 provide an observer an opportunity
   to correlate actions of a single client or server over time.  These
   include the value of settings, the timing of reactions to stimulus,
   and the handling of any features that are controlled by settings.

   As far as these create observable differences in behavior, they could
   be used as a basis for fingerprinting a specific client.

   HTTP/3's preference for using a single QUIC connection allows
   correlation of a user's activity on a site.  Reusing connections for
   different origins allows for correlation of activity across those
   origins.

   Several features of QUIC solicit immediate responses and can be used
   by an endpoint to measure latency to their peer; this might have
   privacy implications in certain scenarios.
MallocVoidstar•4h ago
No.
frmdstryr•51m ago
Yes, no performance difference either.
ckbkr10•4h ago
Sounds overly complicated, I doubt this will have a widespread adoption
ofrzeta•4h ago
"As of September 2024, HTTP/3 is supported by more than 95% of major web browsers in use and 34% of the top 10 million websites."

https://en.wikipedia.org/wiki/HTTP/3

karel-3d•4h ago
A lot of servers still don't support that.

Go http webserver doesn't support http 3 without external libraries. Nginx doesn't support http 3. Apache doesn't support http 3. node.js doesn't support http 3. Kubernetes ingress doesn't support http 3.

should I go on?

edit: even curl itself - which created the original document linked above - has http 3 just in an experimental build.

miyuru•4h ago
>Nginx doesn't support http 3

nginx do support it.

https://nginx.org/en/docs/quic.html

karel-3d•3h ago
ah okay i was wrong there, mea culpa
dotancohen•3h ago
The guy's point still stands - lots of popular software do not yet support http3.
karel-3d•3h ago
And I see I was not that wrong; the module is still marked as "experimental" and not built by default.

https://nginx.org/en/docs/http/ngx_http_v3_module.html

aleks_me2•2h ago
Well this statement have to be precised.

caddyserver v2 supports HTTP/3 and it's an webserver written in go https://caddyserver.com/features

FYI: There is also an rust webserver which supports HTTP/3. https://v2.ferronweb.org/

karel-3d•2h ago
Go built-in webserver.
pimterry•3h ago
Yes and, at the same time practical support within programming language standard libraries & common tooling lags way behind: https://httptoolkit.com/blog/http3-quic-open-source-support-...
taffer•2h ago
You will get most of the benefits of HTTP 3 even if your app libraries run HTTP 1.1, as long as the app is behind a reverse proxy that speaks HTTP 3.
theandrewbailey•2h ago
I use HAproxy to get HTTP/3.

https://www.haproxy.org/

https://haproxy.debian.net/

https://www.haproxy.com/blog/how-to-enable-quic-load-balanci...

gucci-on-fleek•4h ago
About 30% percent of traffic to Cloudflare uses HTTP/3 [0], so it seems pretty popular already. For comparison, this is 3× as much traffic as HTTP/1.1.

[0]: https://radar.cloudflare.com/adoption-and-usage#http1x-vs-ht...

mgaunard•3h ago
and then cloudflare converts that to http/2 or even 1.1 for the backend
vanviegen•3h ago
So? Those protocols work fine within the reliable low latency network of a datacenter.
wongarsu•3h ago
I'd even go as far as claiming that on reliable wired connections (like between cloudflare and your backend) HTTP/2 is superior to HTTP/3. Choosing HTTP/3 for that part of the journey would be a downgrade
klempner•2h ago
At the very least, the benefits of QUIC are very very dubious for low RTT connections like inside a datacenter, especially when you're losing a bunch of hardware support and moving a fair bit of actual work to userspace where threads need to be scheduled etc. On the other hand Cloudflare to backend is not necessarily low RTT and likely has nonzero congestion.

With that said, I am 100% in agreement that the primary benefits of QUIC in most cases would be between client and CDN, whereas the costs are comparable at every hop.

hshdhdhehd•1h ago
Is CF typically serving from the edge, or serving from the nearest to the server? I imagine it would be from the edge so that it can CDN what it can. So... most of the time it wont be a low latency connection from CF to backend. Unless your back end is globally distributed too.
frmdstryr•33m ago
Also apparently slower over fast connections https://arxiv.org/pdf/2310.09423
code_martial•4h ago
Here’s a conceptual background about how and why HTTP/3 came to be (recollected from memory):

HTTP/1.0 was built primarily as a textual request-response protocol over the very suitable TCP protocol which guaranteed reliable byte stream semantics. The usual pattern was to use a TCP connection to exchange a request and response pair.

As websites grew more complex, a web page was no longer just one document but a collection of resources stitched together into a main document. Many of these resources came from the same source, so HTTP/1.1 came along with one main optimisation — the ability to reuse a connection for multiple resources using Keep Alive semantics.

This was important because TCP connections and TLS (nee SSL) took many round-trips to get established and transmitting at optimal speed. Latency is one thing that cannot be optimised by adding more hardware because it’s a function of physical distance and network topology.

HTTP/2 came along as a way to improve performance for dynamic applications that were relying more and more on continuous bi-directional data exchange and not just one-and-done resource downloads. Two of its biggest advancements were faster (fewer round-trips) TLS negotiation and the concept of multiple streams over the same TCP connection.

HTTP/2 fixed pretty much everything that could be fixed with HTTP performance and semantics for contemporary connected applications but it was still a protocol that worked over TCP. TCP is really good when you have a generally stable physical network (think wired connections) but it performs really badly with frequent interruptions (think Wi-Fi with handoffs and mobile networks).

Besides the issues with connection reestablishment, there was also the challenge of “head of the line blocking” — since TCP has no awareness of multiplexed HTTP/2 streams, it blocks everything if a packet is dropped, instead of blocking only the stream to which the packet belonged. This renders HTTP/2 multiplexing a lot less effective.

In parallel with HTTP/2, work was also being done to optimise the network connection experience for devices on mobile and wireless networks. The outcome was QUIC — another L4 protocol over UDP (which itself is barebones enough to be nicknamed “the null protocol”). Unlike TCP, UDP just tosses data packets between endpoints without much consideration of their fate or the connection state.

QUIC’s main innovation is to integrate encryption into the transport layer and elevate connection semantics to the application space, and allow for the connection state to live at the endpoints rather than in the transport components. This allows retaining context as devices migrate between access points and cellular towers.

So HTTP/3? Well, one way to think about it is that it is HTTP/2 semantics over QUIC transport. So you get excellent latency characteristics over frequently interrupted networks and you get true stream multiplexing semantics because QUIC doesn’t try to enforce delivery order or any such thing.

Is HTTP/3 the default option going forward? Maybe not until we get the level of support that TCP enjoys at the hardware level. Currently, managing connection state in application software means that over controlled environments (like E-W communications within a data centre), HTTP/3 may not have as good a throughput as HTTP/2.

NeutralForest•2h ago
Thanks for taking the time to make this, that was helpful!
code_martial•2h ago
Glad you found it helpful! Most of it is distilled from High Performance Browser Networking (https://hpbn.co/). It’s a very well organised, easy to follow book. Highly recommended!

Unfortunately, it’s not updated to include QUIC and HTTP/3 so I had to piece together the info from various sources.

newpavlov•1h ago
Thank you for a great overview! I wish HTTP3/QUIC was the "default option" and had much wider adoption.

Unfortunately, software implementations of QUIC suffer from dealing with UDP directly. Every UDP packet involves one syscall, which is relatively expensive in modern times. And accounting for MTU further makes the situation ~64 times worse.

In-kernel implementations and/or io-uring may improve this unfortunate situation, but today in practice it's hard to achieve the same throughput as with plain TCP. I also vaguely remember that QUIC makes load-balancing more challenging for ISPs, since they can not distinguish individual streams as with TCP.

Finally, QUIC arrived a bit too late and it gets blocked in some jurisdictions (e.g. Russia) and corporate environments similarly to ESNI.

akdor1154•4h ago
Damn it's nice reading a simple static site like this. Links open instantly to the next fully laid out page of content. If only the rest of the web could be like this..
INTPenis•3h ago
Agreed but where is the actual git repo? I see a text saying this "contents get updated automatically on every commit to this git repository" but where is "this git repository"?

I can't find a link to the source anywhere.

Cthulhu_•3h ago
After a quick google: https://github.com/bagder/http3-explained

(using a search engine is faster than asking for a link on HN)

Zambyte•3h ago
I found it on HN faster than I could have with a search engine because they asked :)
rchard2scout•3h ago
The introduction has a "help out" section which links to the github repo: https://github.com/bagder/http3-explained
dobladov•3h ago
https://github.com/bagder/http3-explained
madeofpalk•1h ago
Worth nothing, that react application (using React Server Components?)! If you have javascript enabled, it renders as a single page app, fetching each additional page via an API. If you disable JS, it renders it all on the server.
tomalbrc•39m ago
Wow almost as good as handwritten HTML!
mb2100•23m ago
yes, that's why performance metric and on low-powered phones is so terrible. Look at that: https://pagespeed.web.dev/analysis/https-http3-explained-hax...
gramakri2•3h ago
Where can I download the pdf? It seems the link points to itself
panki27•3h ago
It's hidden in the "Copy" drop down at the top right.

https://http3-explained.haxx.se/~gitbook/pdf?limit=100

sedatk•2h ago
The document is now five years old and full of statements like “we’ll see that in the upcoming years”. I think it’s due for an update.
derelicta•1h ago
It's still crazy how quickly http3 got adopted by web actors. Can't wait til we do the same for IMAP and SMTP
kevg123•1h ago
> As the packet loss rate increases, HTTP/2 performs less and less well. At 2% packet loss (which is a terrible network quality, mind you), tests have proven that HTTP/1 users are usually better off - because they typically have up to six TCP connections to distribute lost packets over. This means for every lost packet the other connections can still continue.

Why doesn't HTTP/2 use more than one socket?

thwarted•1h ago
Because one thing it tries to optimize for is avoiding TLS session negotiation.
kevg123•29m ago
Makes sense. One idea would be if the browser could detect packet loss (e.g. netstat -s and look for TCP retransmissions, and equivalent on other OSes) and open more sockets if there is.
sharts•50m ago
Will there be HTTP/4 ?

The Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel 2025

https://www.nobelprize.org/prizes/economic-sciences/2025/summary/
24•k2enemy•1h ago•6 comments

Spotlight on pdfly, the Swiss Army knife for PDF files

https://chezsoi.org/lucas/blog/spotlight-on-pdfly.html
131•Lucas-C•4h ago•42 comments

Matrices can be your Friends

https://www.sjbaker.org/steve/omniv/matrices_can_be_your_friends.html
34•todsacerdoti•2h ago•17 comments

American solar farms

https://tech.marksblogg.com/american-solar-farms.html
93•marklit•3h ago•62 comments

More random home lab things I've recently learned

https://chollinger.com/blog/2025/10/more-homelab-things-ive-recently-learned/
29•otter-in-a-suit•1w ago•3 comments

Clockss: Digital preservation services run by academic publishers and libraries

https://clockss.org/
22•robtherobber•5d ago•6 comments

Wireguard FPGA

https://github.com/chili-chips-ba/wireguard-fpga
565•hasheddan•20h ago•137 comments

US Junk Bonds Post Worst Losses in Six Months, Spreads Widen

https://www.bloomberg.com/news/articles/2025-10-13/us-junk-bonds-post-worst-losses-in-six-months-...
30•zerosizedweasle•1h ago•12 comments

Some graphene firms have reaped its potential but others are struggling

https://www.theguardian.com/business/2025/oct/13/lab-to-fab-are-promises-of-a-graphene-revolution...
33•robaato•4h ago•10 comments

Putting a dumb weather station on the internet

https://colincogle.name/blog/byo-weather-station/
74•todsacerdoti•5d ago•15 comments

LaTeXpOsEd: A Systematic Analysis of Information Leakage in Preprint Archives

https://arxiv.org/abs/2510.03761
32•oldfuture•4h ago•11 comments

Modern Linux tools

https://ikrima.dev/dev-notes/linux/linux-modern-tools/
84•randomint64•3h ago•73 comments

Switch to Jujutsu Already: A Tutorial

https://www.stavros.io/posts/switch-to-jujutsu-already-a-tutorial/
18•birdculture•3h ago•14 comments

Tauri binding for Python through Pyo3

https://github.com/pytauri/pytauri
126•0x1997•5d ago•34 comments

Making regular GPS ultra-precise

https://norwegianscitechnews.com/2025/10/making-regular-gps-ultra-precise/
21•giuliomagnifico•6d ago•19 comments

Jeffrey Hudson the Court Dwarf of the English Queen Henrietta Maria of France

https://en.wikipedia.org/wiki/Jeffrey_Hudson
30•daverol•5d ago•11 comments

Ask HN: What are you working on? (October 2025)

263•david927•17h ago•724 comments

MicroPythonOS – An Android-like OS for microcontrollers

https://micropythonos.com
131•alefnula•4d ago•34 comments

Two Paths to Memory Safety: CHERI and OMA

https://ednutting.com/2025/10/05/cheri-vs-oma.html
8•yvdriess•3h ago•3 comments

Control your Canon Camera wirelessly

https://github.com/JulianSchroden/cine_remote
3•nklswbr•5d ago•0 comments

Show HN: Baby's first international landline

https://wip.tf/posts/telefonefix-building-babys-first-international-landline/
164•nbr23•4d ago•46 comments

gsay: Fetch pronunciation of English vocabulary from Google

https://github.com/pvonmoradi/gsay
7•pooyamo•3h ago•0 comments

MPTCP for Linux

https://www.mptcp.dev/
12•SweetSoftPillow•3h ago•1 comments

HTTP3 Explained

https://http3-explained.haxx.se
103•weinzierl•6h ago•48 comments

Three ways formally verified code can go wrong in practice

https://buttondown.com/hillelwayne/archive/three-ways-formally-verified-code-can-go-wrong-in/
149•todsacerdoti•1d ago•89 comments

Emacs agent-shell (powered by ACP)

https://xenodium.com/introducing-agent-shell
195•Karrot_Kream•16h ago•26 comments

We need (at least) ergonomic, explicit handles

https://smallcultfollowing.com/babysteps/blog/2025/10/13/ergonomic-explicit-handles/
9•emschwartz•1h ago•0 comments

Bird photographer of the year gives a lesson in planning and patience

https://www.thisiscolossal.com/2025/09/2025-bird-photographer-of-the-year-contest/
154•surprisetalk•1w ago•33 comments

Nobel Prize in Economic Sciences 2025

https://www.nobelprize.org/prizes/economic-sciences/2025/popular-information/
5•pykello•3h ago•1 comments

3D-Printed Automatic Weather Station

https://3dpaws.comet.ucar.edu
87•hyperbovine•3d ago•18 comments