If you look at the final part of the book “Browser APIs and Protocols” it includes WebSockets and WebRTC. It looks completely up to date. You can handle practically any Web network problem with some combination of XHR, WebSockets and WebRTC.
Not having read the book - judging by the (comprehensive!) table of contents - the most obviously missing piece is 5g (assuming it's not covered by the 4g section).
And possibly a "future" bit on http/3 - also a little unclear how much there is about QUIC - but i assume the http/2 section covers it.
At the time of writing the book, the author was referencing state of the art papers for the chapter on mobile networks. Especially the work of Morley Mao from U Michigan, who was the first to study commercial deployments of LTE and how applications where using mobile networks. It was probably the most thorough and approachable introduction to mobile broadband at the time.
But in 10 years a lot have changed. Most notably 5G. It would be interesting to update the book with the more recent papers of the same group studying commercial 5G deployments.
I would also remove anything that has to do with 3G. The state machine of 3G is very different to 4G/5G, so optimising for this might be a bad choice.
Finally, I would discuss more recent transport layer protocols, such as QUIC and congestion control algorithms such as BBR. Early experiments on commercial 5G networks show that legacy congestion control algorithms are not able to take advantage of the very high speeds that 5G can offer.
I would also add some sections about "5G stand alone" usecases, such as massive IoT and ultra reliable low latency communication.
I dont think anything is outdated, other than some figures in Chapter "Speed Is a Feature".
Latency has improved over the years, New York to Sydney is now a 210ms RTT. Compared to ~300. Improvement in Last-mile latencies and Bufferbloat. ( Not perfect but still a little better than 2015 ). I only wish someday we could somehow get Hollow-core Fibers for long distance cable and backbone. Could have lower the New York to Sydney RTT by at least 40ms.
Akamai no longer publish the Internet Report. But I wont be surprise if average Global Internet speed is up by at least 5x. And Mobile Network is up 10x. And we continue to improve on those figures. As the world move to Fibre Optic with High Speed PON and Mobile with 4G/5G.
WiFi 7, 4G/5G, and Router are all thinking latency during its design. It is amazing to think by 2025, how much better things could be compared to 2015.
It doesn't talk about HTTP/3 or QUIC. [1] It does mention WebRTC, but for a book on high performance browser networking, it's not currently mentioning solutions that were created to resolve difficulty in UDP programming (for performance networking) with WebRTC.
I read it for the first time last year and found most of it still very relevant. And there’s an updated version with a chapter on http/2. I’d love to see an http/3 chapter added.
The section on HTTP/2 is definitely out-of-date in some respects.
For starters, server push turned out to be very hard to use effectively, and in some situations could make things worse. It's been deprecated for awhile now, and last year Chrome effectively disabled it by always sending SETTINGS_ENABLE_PUSH = 0, which tells servers not to use it.
The HTTP/2 prioritization scheme was partly deprecated in RFC 9113. The browsers all have different interpretations, and Safari/Edge effectively don't use it. On top of that, many servers have TCP buffers that are too large to allow priority changes to work in time. RFC 9218 introduced simpler prioritization headers for HTTP/3, and it's been suggested as a backwards-compatible replacement for HTTP/2.
That's just in my area of expertise. There's probably more. It looks like a good book, but it seems it hasn't been updated in the decade since publishing.
One of the most valuable books you can read for your career, in my opinion. The only other one is Designing Data Intensive Applications. (I used to have a few more but I'm narrowing down to just these two.)
I interact a lot with a network but that network isn’t the internet and I don’t really interact with web browsers. I think that’s true for plenty of people too, even those who work at big website companies like Facebook or Amazon or Google. That said, networking knowledge does matter and maybe this book imparts some ways to think about more general networking problems, though nothing excited me when I skimmed the table of contents.
Every developer deals with a compiler in some way, therefore "Compilers: Principles, Techniques, and Tools" is the most valuable book you can read for your career :-p
I started reading this book after it was recommended by someone on HN and I found it incredibly useful for learning the foundations of computer networking.
Probably the most under-utilised feature is HTTP pipelining.
For example, almost all dev tools are single-threaded and synchronous. This includes package management tools like Cargo and NuGet, and also debug symbol downloaders like WinDbg.
Starting a debug session in Visual Studio is an excuse to go get a coffee… outside at a cafe. It’ll take it ten minutes to download a few megabytes of symbols over gigabit fibre. One. File. At… a… time.
I wouldn't call it a book but it's surprisingly an easy read, straight and to the point. It's well structured and ordered and explains everything in simple terms, making things easy to understand.
As others say it's a gem, and it could use a bit of polish bringing it up to date with thr current state of the art.
It's essential reading to anyone in tech, especially web developers, networking people, admins, even those who think they understand how things work.
This book sounds fantastic but sadly it isn't available as an audiobook (I really enjoyed "Designing Data Intensive Applications" on audible). Would someone happen to know any good, similar audiobooks (on audible)?
33 comments
[ 3.7 ms ] story [ 66.2 ms ] threadAnd possibly a "future" bit on http/3 - also a little unclear how much there is about QUIC - but i assume the http/2 section covers it.
But in 10 years a lot have changed. Most notably 5G. It would be interesting to update the book with the more recent papers of the same group studying commercial 5G deployments.
I would also remove anything that has to do with 3G. The state machine of 3G is very different to 4G/5G, so optimising for this might be a bad choice.
Finally, I would discuss more recent transport layer protocols, such as QUIC and congestion control algorithms such as BBR. Early experiments on commercial 5G networks show that legacy congestion control algorithms are not able to take advantage of the very high speeds that 5G can offer.
I would also add some sections about "5G stand alone" usecases, such as massive IoT and ultra reliable low latency communication.
Latency has improved over the years, New York to Sydney is now a 210ms RTT. Compared to ~300. Improvement in Last-mile latencies and Bufferbloat. ( Not perfect but still a little better than 2015 ). I only wish someday we could somehow get Hollow-core Fibers for long distance cable and backbone. Could have lower the New York to Sydney RTT by at least 40ms.
Akamai no longer publish the Internet Report. But I wont be surprise if average Global Internet speed is up by at least 5x. And Mobile Network is up 10x. And we continue to improve on those figures. As the world move to Fibre Optic with High Speed PON and Mobile with 4G/5G.
WiFi 7, 4G/5G, and Router are all thinking latency during its design. It is amazing to think by 2025, how much better things could be compared to 2015.
https://ipnetwork.bgtmo.ip.att.net/pws/network_delay.html
Verizon publishes a monthly global update
https://www.verizon.com/business/terms/latency/
[1] https://en.wikipedia.org/wiki/HTTP/3
For starters, server push turned out to be very hard to use effectively, and in some situations could make things worse. It's been deprecated for awhile now, and last year Chrome effectively disabled it by always sending SETTINGS_ENABLE_PUSH = 0, which tells servers not to use it.
The HTTP/2 prioritization scheme was partly deprecated in RFC 9113. The browsers all have different interpretations, and Safari/Edge effectively don't use it. On top of that, many servers have TCP buffers that are too large to allow priority changes to work in time. RFC 9218 introduced simpler prioritization headers for HTTP/3, and it's been suggested as a backwards-compatible replacement for HTTP/2.
That's just in my area of expertise. There's probably more. It looks like a good book, but it seems it hasn't been updated in the decade since publishing.
Some links:
https://jakearchibald.com/2017/h2-push-tougher-than-i-though...
https://developer.chrome.com/blog/removing-push/
https://chromestatus.com/feature/6302414934114304
https://datatracker.ietf.org/doc/html/rfc9218
https://calendar.perfplanet.com/2022/http-3-prioritization-d...
https://blog.cloudflare.com/better-http-2-prioritization-for...
https://calendar.perfplanet.com/2018/http2-prioritization/
https://github.com/andydavies/http2-prioritization-issues
https://book.systemsapproach.org/
https://systemsapproach.substack.com/archive
For example, almost all dev tools are single-threaded and synchronous. This includes package management tools like Cargo and NuGet, and also debug symbol downloaders like WinDbg.
Starting a debug session in Visual Studio is an excuse to go get a coffee… outside at a cafe. It’ll take it ten minutes to download a few megabytes of symbols over gigabit fibre. One. File. At… a… time.
I think you just mean concurrent downloads from the client
As others say it's a gem, and it could use a bit of polish bringing it up to date with thr current state of the art.
It's essential reading to anyone in tech, especially web developers, networking people, admins, even those who think they understand how things work.