You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
5.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 加餐(二) | 书单推荐:网络原理和 Linux 内核实现
你好,我是倪朋飞。欢迎来到 Linux 性能优化专栏的加餐时间。
上一期的专栏加餐,我给你推荐了一些 Linux 入门、体系结构、内核原理再到性能优化的书籍。这里再简单强调一下,主要包括下面这几本。
* Linux基础入门书籍《鸟哥的Linux私房菜》
* 计算机体系结构书籍:《深入理解计算机系统》
* Linux编程书籍《Linux程序设计》和《UNIX环境高级编程》
* Linux内核书籍《深入Linux内核架构》
* 性能优化书籍:《性能之巅:洞悉系统、企业与云计算》
你可以通过学习这些书,进一步深入到系统内部,掌握系统的内部原理。这样,再结合我们专栏中的性能优化方法,你就可以更清楚地理解性能瓶颈的根源,以及性能优化的思路。
根据前面几个模块的学习,你应该也感觉到了,网络知识,要比 CPU、内存和磁盘等更为复杂想解决相应的性能问题也需要更多的基础知识来支撑。
而且,任何一个高性能系统,都是多台计算机通过网络组成的集群系统。网络性能,在大多数情况下,自然也就成了影响整个集群性能的核心因素。
今天,我就来给你推荐一些,关于网络的原理,以及 Linux 内核实现的书籍。
## 计算机网络经典教材《计算机网络第5版
![](https://static001.geekbang.org/resource/image/ce/36/cef3bf15fa095140d499ba56fe4f2e36.png)
既然想优化网络的性能那么第一步当然还是要熟悉网络本身。所以今天我推荐的第一本书就是一本国内外广泛使用的经典教材——《计算机网络第5版》。
这本书按照网络协议模型,自下而上地介绍了计算机网络的基本原理。其中,涵盖范围广是其最大的特点,内容包括了物理层、数据链路层、访问控制层、网络层、传输层和应用层等,是理解计算机网络工作原理的重要参考书。
## 网络协议必读书籍《TCP/IP详解 卷1协议》
![](https://static001.geekbang.org/resource/image/07/56/07732b5c083e68874e0796a6ba708f56.png)
掌握了计算机网络的基本原理后接下来就要深入了解TCP/IP 协议族中各个协议的原理。在这一点上《TCP/IP详解 卷1协议》是当之无愧的圣经级书籍。
这本书按照 TCP/IP 协议族,也是自下而上介绍了各种协议的原理,并且还穿插了大量的实例,帮你更透彻地理解相关知识。我们分析网络性能时经常碰见的那些协议,这本书都有讲解,比如 ARP、ICMP、路由、TCP、UDP、NAT、DNS 等等。
无论是想学习掌握,各种网络协议的工作原理;还是更直接落实在工作上,分析优化复杂环境中的网络性能问题,这本书都是你必不可少的宝典。
## Wireshark 书籍《Wireshark网络分析就这么简单》和《Wireshark网络分析的艺术》
![](https://static001.geekbang.org/resource/image/fe/79/feaf5c9f1b5dd8c4a1546344c67e3979.png)![](https://static001.geekbang.org/resource/image/27/f6/278f19c944ae955de49575bca3fde0f6.png)
在学习网络协议时,最大的难点,就是这些协议初学比较抽象,要理解它们的原理也比较困难。这时,如果可以借助 Wireshark 提供的图形界面,你就可以更直观形象地认识这些协议。
《Wireshark网络分析就这么简单》和《Wireshark网络分析的艺术》就是两本不错的讲解 Wireshark 使用方法的书籍。这两本书通过诙谐风趣的案例,由浅入深地带你使用 Wireshark来分析常见的网络问题。
正如我所说,通俗易懂是其最大特点,相对前面两本大部头来说,你读起来会轻松很多。这两本书在内容上有些重合,内容范围也并不算丰富,但作为入门书籍,却实实在在可以带你,更轻松地理解常见网络问题的分析方法。
## 网络编程书籍《UNIX网络编程》
![](https://static001.geekbang.org/resource/image/74/7e/74f218f137c7a61d7cb40c117831137e.png)
熟悉了协议后,那么接下来自然就是要看,怎么使用这些网络协议,来开发各式各样的应用程序,也就是网络编程。在 Linux 中我们需要通过套接字接口跟网络协议栈交互。所以这里我推荐的是一本介绍套接字接口的书籍——《UNIX网络编程》。
这本书为你详细介绍了,各种套接字 API 的使用方法,还包含了大量可以直接运行的实例。如果你是一个想实现高性能网络的开发者,这本书是很不错的参考。
《UNIX网络编程》主要介绍了套接字接口的使用方法但并不包括 Linux 内核网络协议栈的实现方法。不过没关系网络协议栈相关内容我们上一期加餐推荐过的《深入Linux内核架构》中就已经包括了所以你不需要再借助其他内核书籍。
![](https://static001.geekbang.org/resource/image/e1/5e/e1ed53283b51ed81a96b9c9d2e72d65e.png)
最后,我还是想补充一句,读书不在多,而在于精。哪怕只是啃下我推荐的这几本,你能获得的,一定是质的飞跃。
今天推荐的这些书里,你可能会觉得有些书很难,还觉得有些知识过时了。但你要知道,核心的网络原理基本没有太大变化,总是不过时的。并且网络本身,也是现代互联网和各种高可用、可扩展架构的基石。多花点儿时间坚持学和练,效果一定显而易见。
同时,在进入最后的实战进阶篇前的这几天,我也希望你能抽出时间,来复习或者补全专栏前面的知识。虽然总有人自我调侃,说技术类的东西,学了不一定会用,但是反过来说,不去学,一定不会用。坚持下去,相信在专栏结课时,我们一起,一定能看到一个更好的你。
行动起来吧!