基本信息

编辑推荐
Linux服务器编程领域的经典著作,资深Linux软件开发工程师撰写
从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐述编写高性能Linux服务器应用的方法、技巧和思想,包含两个综合性案例,极具实战意义
更多精彩好书推荐,请点击以下图片查看:
内容简介
计算机书籍
《Linux高性能服务器编程》是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、技巧和思想。不仅理论全面、深入,抓住了重点和难点,还包含两个综合性案例,极具实战意义。
全书共17章,分为3个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深入的解读和阐述,包括TCP/IP协议族、TCP/IP协议,以及一个经典的TCP/IP通信案例;第二部分对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多线程编程、进程池和线程池等内容,原理、技术与方法并重;第三部分从侧重实战的角度讲解了高性能服务器的优化与监测,包含服务器的调制、调试和测试,以及各种实用系统监测工具的使用等内容。
《Linux高性能服务器编程》另外免费赠送一个负载均衡服务器程序的完整实际项目的源代码!
作译者
目录
前言
第一篇 TCP/IP协议详解
第1章 TCP/IP协议族 / 2
1.1 TCP/IP协议族体系结构以及主要协议 / 2
1.1.1 数据链路层 / 2
1.1.2 网络层 / 3
1.1.3 传输层 / 4
1.1.4 应用层 / 5
1.2 封装 / 6
1.3 分用 / 7
1.4 测试网络 / 8
1.5 ARP协议工作原理 / 9
1.5.1 以太网ARP请求/应答报文详解 / 9
1.5.2 ARP高速缓存的查看和修改 / 10
1.5.3 使用tcpdump观察ARP通信过程 / 10
1.6 DNS工作原理 / 12
1.6.1 DNS查询和应答报文详解 / 12
1.6.2 Linux下访问DNS服务 / 14
1.6.3 使用tcpdump观察DNS通信过程 / 15
前言
目前国内计算机书籍的一个明显弊病就是内容宽泛而空洞。很多书籍长篇大论,恨不得囊括所有最新的技术,但连一个最基本的技术细节也无法解释清楚。有些书籍给读者展现的是网络上随处可见的知识,基本没有自己的观点,甚至连一点自己的总结都没有。反观大师们的经典书籍,整本书只专注于一个问题,而且对每个技术细节的描述都是精雕细琢。最关键的是,我们在阅读这些经典书籍时,似乎是在用心与一位编程高手交流,这绝对是一种享受。
我们把问题缩小到计算机网络编程领域。关于计算机网络编程的相关书籍,不得不提的是已故网络教育巨匠W·Richard Stevens先生的《TCP/IP协议详解》(三卷本),以及《UNIX网络编程》(两卷本)。作为一名网络程序员,即使没有阅读过这几本书,也应该听说过它们。但这几本书中的内容实在是太庞大了,没有耐心的读者根本不可能把它们全部读完。而且对于英文不太好的朋友来说,选择阅读其翻译版本又有失原汁原味。
基于以上两点原因,笔者编写了这本《Linux高性能服务器编程》。本书是笔者多年来学习网络编程之总结,是在充分理解大师的作品并融入自己的理解和见解后写成的。本书讨论的主题和定位很明确。简单来说就是:如何通过各种手段编写高性能的服务器程序。
网络技术是在不断向前发展的,比如Linux提供的epoll机制就是在内核2.6版本之后才正式引入的。但是,编程思想却可以享用一辈子。我们在不断学习并使用新技术,不断适应新环境的同时,书中提到的网络编程思想能让我们看得更远,想得更多。笔者相信,没有谁会认为W·Richard Stevens先生的网络编程书籍过时了。
读者对象
阅读本书之前,读者需要了解基本的计算机网络知识,并具有一定的Linux系统编程和C++编程基础,否则阅读起来会有些困难。本书读者对象主要包括:
Linux网络应用程序开发人员
Linux系统程序开发人员
C/C++程序开发人员
对网络编程技术感兴趣,或希望参与网络程序开发的人员
开设相关课程的大专院校师生
本书特色
本书的特点:不求内容宽泛,但求专而精,深入地剖析服务器编程的要素;不求内容精准,但求融入笔者自己的理解和观点,可谓“另眼”看服务器编程。
如何提高服务器程序性能是本书要着重讨论的。第6、8、9、11、12、15、16等章中都用了相当的篇幅讨论这一主题。其论述方法是:首先,探讨提高服务器程序性能的一般原则,比如使用“池”以牺牲空间换取效率,使用零拷贝函数以避免内核和用户空间的切换等;其次,介绍一些高效的编程模式及其应用,比如使用有限状态机来分析用户数据,使用进程池或线程池来处理用户请求;最后,探讨如何通过调整系统参数来从服务器程序外部提高其整体性能。
光说不练假把式。如果没有实例,或者只是给出几个“Hello World”,那么本书就真没有出版的必要了。笔者要做的是让读者能真正把理论和实践完美地结合起来。在写作本书之前,笔者阅读了不少开源社区的优秀服务器软件的源代码,自己也写过相当多的小型服务器程序。这些软件中那些最精彩的部分,在书中都有充分的体现。比如第15章给出的两个实例——用进程池实现的简单CGI服务器和用线程池实现的简单Web服务器,就充分展现了如何利用各种提高服务器性能的手段来高效地解决实际问题。
此外,为了帮助读者进一步把书中的知识融汇到实际项目中,笔者还特意编写了一个较为完整的负载均衡服务器程序springsnail。该程序能从所有逻辑服务器中选取负荷最小的一台来处理新到的客户连接。在这个程序中,使用了进程池、有限状态机、高效数据结构来提高其性能;同时,细致地封装了每个函数和模块,使之更符合实际工程项目。由于篇幅的限制,笔者未将该程序的源代码列在书中,读者可从华章网站上下载它。
如何阅读本书
本书分为三篇:
第一篇(第1~4章)介绍TCP/IP协议族及各种重要的网络协议。只有很好地理解了底层TCP/IP通信的过程,才能编写出高质量的网络应用程序。毕竟,坚实的基础设施造就稳固的上层建筑。