Extra Two Book Recommendation Network Principles and Linux Kernel Implementation

Extra Two Book Recommendation Network Principles and Linux Kernel Implementation #

Hello, I’m Ni Pengfei. Welcome to the extra meal time of the Linux Performance Optimization column.

In the previous extra meal of the column, I recommended some books on Linux introduction, architecture, kernel principles, and performance optimization. Let me briefly emphasize them again, including the following:

  • Linux basic introduction: “The Linux Command Line”

  • Computer architecture: “Computer Systems: A Programmer’s Perspective”

  • Linux programming: “Advanced Programming in the UNIX Environment”

  • Linux kernel: “Understanding the Linux Kernel”

  • Performance optimization: “Systems Performance: Enterprise and the Cloud”

By studying these books, you can delve deeper into the system internals and understand the internal principles of the system. In combination with the performance optimization methods in our column, you will have a clearer understanding of the root causes of performance bottlenecks and the approach to performance optimization.

Based on the previous modules, you should have felt that network knowledge is more complex than CPU, memory, and disk, and solving performance issues in this area requires a solid foundation of knowledge.

Moreover, any high-performance system is composed of multiple computers interconnected by a network. Network performance, in most cases, naturally becomes a core factor affecting the performance of the entire cluster system.

Today, I will recommend some books on network principles and Linux kernel implementation.

Classic Textbook on Computer Networks - “Computer Networks (5th Edition)” #

If you want to optimize the performance of a network, the first step is to familiarize yourself with the network itself. Therefore, today I recommend the first book, which is a widely used classic textbook both domestically and internationally - “Computer Networks (5th Edition)”.

This book introduces the basic principles of computer networks from the bottom up, following the network protocol model. Its biggest feature is its broad coverage, including the physical layer, data link layer, access control layer, network layer, transport layer, and application layer. It is an important reference book for understanding the working principles of computer networks.

Must-read Book on Network Protocols: “TCP/IP Illustrated, Volume 1: The Protocols” #

Once you have grasped the basics of computer networking, the next step is to delve into the principles of the individual protocols within the TCP/IP protocol suite. In this regard, “TCP/IP Illustrated, Volume 1: The Protocols” is truly a seminal book.

This book introduces the principles of various protocols in the TCP/IP protocol suite from bottom to top, and also includes numerous examples to help you gain a deeper understanding of the subject matter. It covers the protocols commonly encountered when analyzing network performance, such as ARP, ICMP, routing, TCP, UDP, NAT, DNS, and so on.

Whether you want to learn and master the workings of various network protocols or apply that knowledge directly to analyze and optimize network performance in complex environments, this book is an indispensable guide for you.

Books on Wireshark: “Wireshark网络分析就这么简单” and “Wireshark网络分析的艺术” #

When studying network protocols, the biggest challenge is that these protocols can be abstract and difficult to understand for beginners. However, if you can make use of the graphical interface provided by Wireshark, you can have a more intuitive understanding of these protocols.

“Wireshark网络分析就这么简单” and “Wireshark网络分析的艺术” are two excellent books that explain the usage of Wireshark. Through humorous and interesting examples, these books gradually guide you through using Wireshark to analyze common network problems.

As I mentioned, one of the greatest features of these books is that they are easy to understand. Compared to other substantial books, reading these two books will be much easier for you. While there is some overlap in content between the two books and the content range is not extensive, they are definitely suitable as introductory books, as they can truly help you understand the analysis methods for common network problems in a more relaxed manner.

Book Recommendation: “UNIX Network Programming” #

Once you are familiar with protocols, the next step naturally is to learn how to use these network protocols in order to develop various types of applications, which is known as network programming. In Linux, we need to interact with the network protocol stack through socket interfaces. Therefore, I recommend a book that introduces socket interfaces called “UNIX Network Programming”.

This book provides detailed instructions on how to use various socket APIs and also includes numerous runnable examples. If you are a developer interested in implementing high-performance networks, this book is a great reference.

“UNIX Network Programming” mainly focuses on the usage of socket interfaces and does not include the implementation of the Linux kernel network protocol stack. However, it’s not a problem because the content related to the network protocol stack has already been covered in the previously recommended book “Deep Dive into Linux Kernel Architecture”. Therefore, you don’t need to rely on other kernel books.

Finally, I’d like to add that it’s not about how many books you read, but rather the depth of your understanding. Even if you only read these few books I recommended, it will definitely be a qualitative leap for you.

You may find some of the books I recommended today difficult, and you may even think that some knowledge is outdated. However, you should know that the core network principles have not changed much and are always relevant. Moreover, networks themselves are the foundation of the modern Internet and various highly available and scalable architectures. Spend some time persistently learning and practicing, and the results will be evident.

At the same time, in these last few days before entering the final practical advanced section, I hope you can make time to review or supplement the knowledge covered earlier in the column. Although some people jokingly say that learning technical things doesn’t guarantee practical usage, the opposite is also true: if you don’t learn, you definitely won’t be able to use it. Keep going, and I believe that when we reach the end of this column, we will see a better version of you.

Take action now!