How prepared are you when it comes to building network-enabled applications? This book provides what every web developer should know about the network—from fundamental limitations that affect performance to major innovations for building even more powerful browser apps. By understanding what the browser can and cannot do, you’ll be able to make better design decisions and deliver faster web applications to your users.
Author Ilya Grigorik—a developer advocate and web performance engineer at Google—starts with the building blocks of TCP and UDP, and then dives into newer technologies such as HTTP 2.0, WebSockets, and WebRTC. This book explains the benefits of these technologies and helps you determine which ones to use for your next application.
- Learn how TCP affects the performance of HTTP - Understand why mobile networks are slower than wired networks - Use best practices to address performance bottlenecks in HTTP - Discover how HTTP 2.0 (based on SPDY) will improve networking - Learn how to use Server Sent Events (SSE) for push updates, and WebSockets for XMPP chat - Explore WebRTC for browser-to-browser applications such as P2P video chat - Examine the architecture of a simple app that uses HTTP 2.0, SSE, WebSockets, and WebRTC
Ilya Grigorik is a web performance engineer at Google, co-chair of the W3C Web Performance Working group, and author of High Performance Browser Networking (O'Reilly) book.
A must-read for every software developer. If you never cared about performance and speed down to the details, this book will change it.
Part I (Networking 101) is a good refresher for TCP/UDP but also a good intro to TLS. It helped me clear up some of the confusion I had for SSL and TLS. I was expecting greater overhead when using TLS but Ilya brought real data that made me realize I was wrong.
Part II (Performance of Wireless Networks) made me appreciate the book. To be honest, the rate at which mobile networks evolve makes it really hard to keep up. I'm sure I still don't get everything, but I learnt a lot and surely will revisit this part.
Part III (HTTP) is probably the thing that excited us the most about this book and its author Ilya Grigorik - SPDY and HTTP2. The Binary Framing Layer is explained dead simple yet in enough details to catch the pros and cons. But the server pushing is something that could need the author's blog post example to be understood better - https://www.igvita.com/2013/06/12/inn...
I hope the book gets updated when HTTP2.0 is officially released.
Most comprehensive overview of web performance I've seen. Book talks about Internet connectivity; fiber speeds and how LTE works. Configuring your edge; TLS version, HTTP2, and TCP tuning, and, how to structure your assets for performance. It doesn't go into server-side response time, databases, and so on, since that's highly specific to your stack. It goes in depth with what's constant between web application. I'd consider this necessary reading for those who are working on web performance, to consider the full picture when looking at performance, not just server response time.
Favorite things I learned: One of the major battery drainers on a mobile device is the radio that we use for LTE/4G/3G. Phones will usually turn this off after a few seconds of inactivity (think, like a car that turns off its engine when stopped at a light). The cell tower will maintain its TCP sessions, so pushing is effective—however, if you have a polling loop that sends a request just after the interval at which the radio turns off, you've got a terrible, terrible battery-draining software cocktail in play. Ouch.
TCP will go back to slow-start (i.e. slow down) after a few seconds of inactivity (because TCP was designed for constant streams of data, not sprints, which is what HTTP is for). `tcp_slow_start_after_idle` disables this. If you have a website that's over 15kib (how much data you can transfer in the slow-start congestion window), that's bad news for you. Definitely bad news on a CDN.
For 5 stars, I would've liked to have seen more performance studies. How do performant applications differ? Why is it so important? We know it boosts conversion, but what are other examples? I was hoping to find a chapter on that in the book, but no dice. I'd also have like to seen a chapter on how to prevent performance regressions. This is a tricky thing to build in a fashion that'll age well and not be flaky.
Between 4 and 5. I like a lot that the books starts with fundamentals and then move to upper layers. So for a person who doesn't know much about networks, this book will help a lot to develop a taste and appreciation. Also the book is heavily focused on performance techniques and optimizations. Though the selection of those feels a bit random, this book is a good reference of what one can try to improve performance.
Why not 5 stars then? The book is a bit uneven. The chapters on low level protocols are great. But they cover may be 30-35% of the topic. I kinda have to say that this is not the book to learn about TCP. It's just not deep enough. Chapter on mobile networks covers surprisingly wide area. Breadth-wise is pretty cool. Later chapters on more high-level protocols are fine, but pretty plain and vanilla.
This is the best book on web development (in a very wide sense) I've read since "Tangled Web". As one of very few it doesn't stop at HTTP level, actually totally contrary - there's very little about HTTP here - it goes down through all the OSI layers & helps you to get truly familiar with optimization techniques you could apply that are aimed at TCP, UDP or even IP. I've done a lot of web development (as a developer & architect), but shamelessly I need to admit I've still learned a lot while reading this book.
What's interesting (& I've really enjoyed it) this book doesn't really give you pre-made prescriptions, it doesn't shower you with set solutions, preferred libraries or anything like that -> it provides sheer, low-level facts & it's due to you, your awareness & understanding of the topic, how will you approach particular problem. That's my preferred way, yay ;D
If you're wondering what level of detail is described here - IMHO (I still may be wrong ...) it's 0.01% top-notch world class level. These are considerations that may not be important at all for small sites used by 200 users, but they are absolutely critical if you release for hundreds of millions - like Gmail or something.
This book can be easily considered one of the pillars of optimization.
It is really incredible how the author begins the journey from the lowest OSI layer to the browser and the newest trends in realtime communication.
The book starts with detailing each different medium (fiber, satellite , radio , wifi) we can nowadays use in order to send packets over the network.Interestingly enough he gets you into data transmission , signal processing , electronics and physics in order to give you an idea on how each medium impacts your app's performance and their hidden latencies.
The book then shifts to TCP and UDP, TLS, TURN , ICE and STUN protocols.Awesome chapter , i would have never known the intricacies of TCP and its adaptability regarding the unreliability of the underlying network.(The congestion window mechanisms part was insane).
Another chapter is dedicated to wireless networks.
The most interesting part was the one regarding mobile networks. The author does a terrific job by first explaining how your handset works , how it efficiently uses its battery in order to accomodate the ever consuming radio(s) (2G,3G,4G) , its complicated RRC (radio resource controller) protocol that manages the exchanges with the radio tower and handles your phone state-machine that manages your battery and its sensible connection with its radio.
Then he goes overdrive detailing LTE radio networks , with their architecture and components (RAN, ETC-SGW,PGW,MME) , the way they manage to serve users that are in constant motion (MME) switching them from radio tower to radio tower , updating their position in realtime and performing billing and security checks ; the way they direct packets from the public internet to their gateways ,parse , corect them , resolve users , find corresponding tower and negotiate protocols with the user handset to in the end forward the message. Its really interesting that the principles of clustering and load balacing that apply nowadays to any web application component (database, api , web app) were present in the telecom domain for a very long time and more importantly , not only for software but for radio towers as well.
The book then moves to HTTP , HTTPS , XHR(interesting history part here ) , SSE , Websockets and last but not least WebRTC.
Even though the last part was detailed and interesting i found it nowhere close to the one regarding mobile networks( could be due to the fact that i was already familiar with the concepts)
Awesome read and i recommend it wholeheartedly for anyone interested in building high performance applications.It is one of those reads which takes a hollistic view on all the layers and components involved to give you a neat idea on how to build something !
This entire review has been hidden because of spoilers.
This book is very good and I think that it should a must-read for every developer of web-applications, but also for developers of mobile applications. It starts with the basics like Networking 101 where the most used transport protocols (IP, TCP, UDP) are discussed. Be aware that this is not a protocols book, so don't look for very in-depth details for the protocols' part.
After that talks about wireless networks, WiFi standards, and mobile networks as well. This part was hard for me because I don't have an electrical engineering background. This is the primary reason why I rate the book with 4/5 stars, rather than 5/5.
Then it goes up in the ISO OSI stack talking about high-level protocols such as HTTP1.x, HTTP2, SSL/TLS, and how to optimize an application that leverages these protocols.
In the last chapter, there are discussed protocols such as XHR, SSE, WebSocket, and WebRTC. I like that here in the last chapter the author tries to not take part in any protocol, exposing the consequences of using each of them. I think that if you will be in face of choosing a protocol for your application, then you can easily use this book as a starting point for making the decision.
Why I read it: Few colleagues praised the book as a very useful read.
Short summary: The book goes through most layers of the network stack with great detail, explaining (in the following order) TCP, UPD, TLS, how WiFI and mobile networks work, HTTP and various browser APIs. The author's idea is to really explain the working principles of these technologies and then use that deep understanding to suggest performance optimizations. Each chapter builds on previous ones and reiterates some ideas helping to understand and memorize things even better.
What I liked about it: I was pleasantly surprised how much I liked the book. One of the people who recommended it to me said it was 'very useful but also a difficult read'. But for me it somehow connected my interest in reading non fiction books for the sake of understanding the world better and the wish to learn new things in order to be more efficient at work. For example, author explained very well how mobile networks work - what all the generations mean, how the data travels from some server through mobile signal towers all the way to your phone (just a general interesting thing) and how each of the components of mobile networks contributes to the latency of the signal and how the network traffic should be optimized to save battery life (might come in handy some day at work).
From time to time I attempt understanding how the internet works - google something, watch a documentary, read a technical blog post. But I never came across a resource that would explain it in a way that would really stick. Until I found this book. The way how author explains things, how he goes through entire network stack and how each part builds on another really worked for me. I'm sure I won't be able to remember all of it after awhile, but it will be very easy to get back to the book for a quick reference as a lot of things (like TCP and TLS handshakes) were also visualized in a very clear way.
What I disliked: The book is a little outdated. The version I had says the newest edition was released in 2015 and the cover proudly brags about it being updated for HTTP/2. But we are already at 5G and HTTP/3.
There were two sides to the book: explaining in detail how different technologies/ protocols work and providing tips on how to optimise them for better performance. Since I wasn't very familiar with a lot of things explained in the book, I focused solely on understanding the basics and skimmed the performance optimization parts a little (especially those concerning some configurations on the server) as it felt like to much information in the moment. Though suppose I might get back to those specific chapters later.
Not all chapters were equally interesting. Once I got the last part 'Browser APIs and Protocols' discussing things like WebSocket and WebRTC I noticed my reading got slower and slower and I really struggled to get through it.
This is one of the best books about networks dedicated for pragmatic software developers. If you want to read only two books on that subject, I'd recommend it together with A. Tanenbaum's "Computer Networks".
It covers in depth specifics of most common upper parts of the OSI stack - TCP, TLS, UDP, HTTP 1.1 and 2.0, WebSockets, WebRTC and their extensions - as well as providing some details about cellular networks, which is increasingly common use case in modern day web.
What's important, it's not a dry knowledge presented only for its own sake. There's a ton of practical tips on how awareness of network stack and its capabilities can be used to optimize everyday web services, cut down requests latency, bandwidth usage and make your web application respect battery lifetime of mobile devices.
The only small thing is that reading this book nowadays is not closing all necessary corners, eg. the edition I was reading was describing LTE and HTTP 2.0 as novel approaches, therefore even more recent network-related innovations are simply not there. However it's not the fault of the book itself, and it doesn't diminish the usefulness and applicability of its content.
Great book that allowed me to revisit everything from the basics of computer networking to building higher level applications. The in-depth yet approachable explanations of TCP and TLS were especially good.
My only complaint is that the subject matter covered seemed to be somewhat arbitrary -- a huge portion of the book was devoted to describing various types of wireless standards, but without really making it into that much depth on wireless communication. It was still quite interesting though -- I finally understand the difference between 3GPP and 3GPP2 standards and how they're related to each other.
This is a thorough, though arcane and broadly difficult to read, examination of the history and architecture of the internet. The bulk of the book has nothing to do with web development and will be of no use to a developer. It is badly marketed and not very well written, correct though it may be.
The thing with this book is that it consists of both long-term theoretical knowledge and short-term practical knowledge (like browser API examples). In the end, there are chapters which have a potential of being an "infinite source of truth" but there are also moments that have already become a bit stale.
Anyways, this is a great book.
I especially enjoyed the initial chapters about networking (TCP, UDP, HTTP etc.) from the efficiency perspective. The knowledge is delivered in a concise and professional manner. I liked how the author emphasizes some important messages and heuristics over the book (for example, an importance of understanding the consequences of differentiating latency and bandwidth). It was so nice to recall fundamental stuff which is the foundation of everything in software really, Also, HTTP was covered excellently. I love how all the optimization hacks for HTTP/1.1 have been thoroughly explained. Subsequently, a chapter about HTTP/2 proofed how it solves all of them out of the box!
I haven't fully read Mobile Networks and WebRTC stuff (only skimmed through it). It was not what I was looking for (maybe in the future though).
Four stars eventually. I recommend it - a lot of high-quality content!
While I reading it, a lot of flashback from my past appearing in the mind such as "only if I knew that before" or "what if I could supplement my arguments with this information" or so. I would recommend to web developers with prior one year experience otherwise you will hand full with basic.
This book introduces readers to many technologies - old and new (ish). It doesn't go very deep into any one particular technology, it is a great book that can act as a refresher, crash-course reference.
It discusses on how to optimize website's performance. I also suggest High Performance Web Sites and Even Faster Web Sites both by Steve Souders.
TCP, UDP, TLS, WiFi, and mobile networks sections / chapters have good amount of detail and some of it was new to me. The chapter on HTTP 2.0 was quite interesting and found it in-depth as well.
Though the language is simple and effective for the complex topics covered in this book, some parts are repetitive. For example, 'Latency, not bandwidth, is the performance bottleneck for most websites.', is mentioned in many times in the book.
This is a pretty good book. Exposes some of the complex networking concepts in a lucid manner. The modern networking chapters ( Mobile networks, HTTP 2.0, SSE, WebSockets, WebRTC ) are notably good. Independent books have been written on each chapter the author covers, so you can imagine each chapter as a condensed summary of the underlying concept. However, author does cover more than just a summary.
Overall, the book is very informative and left me wanting for more and in search of deeper material. I'll recommend this to anyone who wants to raise their game by covering gaps in their knowledge.
I didn't expect to get emotional over a book of internet protocols. And yet. It's honestly an inspiring read. As we moved through various protocols, I could feel the half-century of engineering that went into designing all these procedures and standards - millions of hours of work across thousands of people. It taught me a lot about different protocols, their tradeoffs and details. I learned a lot about high performance networking. But honestly, it just made me excited to be a network engineer. Really feel like I'm standing on the shoulders of giants.
Excellent book that every front and back-end developer should read to understand low-level details of protocols that they use - if you already have knowledge in mentioned topics then it will be a good idea to refresh your knowledge. Topics covered: TCP/UDP, HTTP 0.9-2.0/TLS/SPDY, XHR/SSE/WebSocket, WebRTC, Wireless networks (Wifi, GSM, CDMA). I would give it 5+ if it also included information on QUIC protocol :)
An excellent overview of networking from the perspective of web and mobile clients, through the lens of application performance.
The information is timely, clearly presented, and very accessible. I especially appreciated the overviews of mobile networking and newer web protocols including HTTP 2.0 and WebRTC.
Highly recommended for anyone developing web or mobile clients or servers.
This was very educational. A lot of the complaints seem to be that they can't apply this to their code, but the point of the book was to understand the fundamentals of networking and how the entire system works. I personally found the second half of the book was more useful, once you get to HTTP, Websockets, etc. It's not always the funnest read, but it does the job.
Full review coming soon but short version: super detailed look at the elements that go in to browser performance; this isn't about concatenating your JavaScript, it's about latency and what causes it (and how to deal with it).
Well written and providing nice overview of current state and trends in browser and application networking, mostly long-distance. Good explanation of latency vs bandwidth, flow control and other inner workings. Disclaimer: I know the author.
Great book, that every frontend engineer should read (actually all IT professionals working with distributed systems). It is so good that it would be nice to have second edition as many things happened between 2013 and 2020 (some of the progress was lead by the author himself).
I think this book is a must-read for any web developer.
mind = blown.
It's full of content that I never thought to consider studying or to look at whilst optimising the performance of a website. It's dense and I had to revisit a few pages to learn and remember, I think the author explains all of the concepts very well.
You could argue it's a little outdated at 6 years old but I think having a foundation of underlying technologies and how the current ones improve on them.
It brushes on a broad range of concepts and technologies, which you can then continue to explore with a more specialist book.
Although I bought the book because I like to have a physical copy, you can find it online for free on the author's website at https://hpbn.co/
If you're a web developer and you don't have a reasonable understanding of: UDP, TCP, HTTP, HTTP/1.1, HTTP2, WebRTC, WebSockets.... - Then I think you should read this book. Better than any online course I've done - and it's free!!!
For me this book gets 4.5 stars, though I decided to rate it 5.
The chapters that I liked the most are those on tcp, udp, mobile devices, http and webrtc.
I did not know much about those topics (other than common generic 5-10 sentences).
The chapter on http/2 was fine, but I think I knew more on that topic, so it didn't surprise me too much.
I think that this book could have deserved another 200 pages, and that http/2 could have been detailed a little more. With the current page count, it feels like the book is neither clearly an introductory book, nor an in-depth guide.
It was just fine however, and the amount of details was very much worth the time and price.
Took quite a while to finish and it indeed is a comprehensive book. Covers on the basic level, goes both deeper and wider. All the topics covered are indispensable for any engineer who is building for the web (and mobile). Of course, all the major concepts will need their own books to explore properly, but here we get a good sneak peek into each of them that is good enough to get the grasp. In short, it is probably whole of your computer networks summarized neatly with the highlights required. The first 3 chapters were, I consider, one of the best primers on the building blocks of networks. Surely, worth many reads. You know, the subject is quite deep.
I wanted to like this book since Ilya Grigorik has written some great articles but unfortunately, it is too low-level and overly technical. If you want to make your web site or mobile app faster, there are very few practical tips and too many long-winded explanations of network protocols or networking architectures.
If all this information interests you, great! But if you want some practical real-life web performance examples, I recommend the book Web Performance in Action by Jeremy Wagner instead.
It's awesome book. Anyone who really cares about network level optimization should read this book. I never thought about the use cases that can harm the mobile users. But with this book one can clearly understand why we should care about the mobile devices in terms of bandwidth. It has great explanation about HTTP 2 which will optimize the application to another level. The examples mentioned in the books are also great. Examples are from real life applications such as how facebook handle chat messaging, how google Hangouts use webRTC etc. I really enjoyed by reading this book