High Performance Browser Networking
Author: Ilya Grigorik
Review created: 2015-10-28
One day at work I noticed that I did not know as much about SSL/TSL, certificates and such stuff that I ought to. So I did what I usually do in such situations: I searched Amazon for an appropriate book from which I could learn the things I needed to know. This time I found High Performance Browser Networking by Ilya Grigorik. I saw in the description of the book that it wasn't specifically about TSL in particular even security in general, but that it included a substantial section about TSL and also contained material on other topics that I found interesting. So I decided to by the book. When having read it, I must say that I'm not disappointed that I bought the book. Here's my impressions of it.
The book is divided into three parts each consisting of a number of chapters. The parts are:
- Networking 101
- Performance of Wireless Networks
- HTTP
- Browser APIs and Protocols
The first part, Networking 101, contained the material on TSL that was my primary reason for buying the book. After having read the TSL chapter I was satisfied. It contain about a much information about TSL that I needed. It covered the TSL handshake, certificates, chains of trust and much more.
As the book is called High Performance..., each and every chapter also includes comprehensive material on how to optimize the technology that is the main focus of the chapter and each chapter ends with a Performance Checklist which is a list of things to remember/consider when optimizing the technology in question. The TSL chapter was no exemption. It includes a lot of things to keep in mind when trying to optimize the TSL usage of one's server.
The Networking 101 part of the book does not, however, start with the TSL chapter. It starts with a chapter on latency and bandwidth in which, well, latency and bandwidth are described in quite a detail. After that, the book continues with chapters on TCP and UDP. Those chapters were really interesting. When at university I took some networking classes and I've come in contact with some networking stuff at work, but when reading the chapters about TCP and UDP I really learnd a lot. Not that I plan to start working in the networking field, but it is always good to have some basic knowledge about the topic. I feel that I got that from the TCP and UDP chapters.
The second part of the book is about wireless networking. In quite a detail, the book describes the history of wireless networks and the different technologies that exist. It compares the technologies and gives advice on how to optimize them. In general this part of the book contained stuff that I found interesting but that I will probably not have any use for in my work. One really nice tip that the book gave was that if you dial *#*#4636#*#* from your Android phone, a diagnostics screen will open up. In that screen info about battery state, connection state and much more will be display. Really nice tip!
The next part of the book contains material on HTTP. The first chapter in this part describes the history of HTTP, later chapters describes its different versions and how to optmize the usage of HTTP. The chapter I found most interesting was the one on HTTP 2.0. I hadn't looked into that topic at all, now the book gave me a thorough introduction to it. I must say that I really liked it.
The last part of the book describes some different web technologies. The following is covered:
- XHR - XML HTTP Request
- SSE - Server Sent Events
- WebSockets
- WebRTC - Web Real Time Communication
XHR I've used a bit, but the stuff contained in the XHR chapter was still interesting. Especially the advice on what XHR stuff to use, and what should be avoided.
For the rest of the technologies, SSE, WebSockets and WebRTC, I hadn't used any of them, so reading those chapters was really useful for me. Of course I cannot say that I really know the technologies after having read the chapters, but I feel that I have a basic understanding of them and know their main strenghts and weaknesses.
Overall, I think that High Performance Browser Networking is a good book. It is very detailed, which is good if you are interested in the topic and a little less good if you just want to have an overview of it. For me the level of detail was OK. I liked it for the most part, but the part about wireless networking was a little bit too detailed for my taste. The most interesting chapter in the book was that about HTML 2.0. As I didn't know anything about it earlier, it was interesting and useful to learn something about it.
The book is fairly easy to read. The author have a relaxed writing style, but the level of detail makes the book somewhat dry.
The author seems to really know the subjects he's talking about, which is always nice. He is employed at Google for working with pioneering optimizing strategies for web applications. I rather good background for writing a book with the title High Performance Browser Networking I would say.
What about the TSL stuff that I originally bought the book for? After having read the book, I feel like I know the things about TSL that I need to know right now. I'm by no means a TSL expert, but that wasn't the purpose of buying the book either.
I would recommend the book to anyone that would like to have an overview of the technologies the book covers: TCP, UDP, TSL, HTTP, SSE, XHR, Websockets and WebRTC. The optimizing tips and tricks are useful, for anyone that wants to speed up their web application (and has full control over their deployment environment). I got what I wanted, and more, out of the book. Recommended!