Linux高性能伺服器编程

Linux高性能伺服器编程【Linux高性能伺服器编程】《Linux高性能伺服器编程》是2013年机械工业出版社出版的图书,作者是游双 。
基本介绍中文名:Linux高性能伺服器编程
製作人:游双
出版时间:2013-05-01
出 版 社::机械工业出版社
基本介绍作 者:游双 着出 版 社:出版时间:2013-05-01所属分类:图书 > 计算机与网际网路 > 作业系统内容简介《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软体开发工程师,对Linux网路编程,尤其是伺服器端的编程,有非常深入的研究,实战经验也十分丰富 。曾就职于摩托罗拉,担任高级Linux软体工程师 。此外,他还精通C++、Android、QT等相关的技术 。活跃于Chinaunix等专业技术社区,发表了大量关于Linux网路编程的文章,深受社区欢迎 。目录前言第一篇 TCPIP协定详解第1章 TCPIP协定族1.1 TCPIP协定族体系结构以及主要协定1.1.1 数据链路层1.1.2 网路层1.1.3 传输层1.1.4 套用层1.2 封装1.3 分用1.4 测试网路1.5 ARP协定工作原理1.5.1 乙太网ARP请求应答报文详解1.5.2 ARP高速快取的查看和修改1.5.3 使用tcpdump观察ARP通信过程1.6 DNS工作原理1.6.1 DNS查询和应答报文详解1.6.2 Linux下访问DNS服务1.6.3 使用tcpdump观察DNS通信过程1.7 socket和TCPIP协定族的关係第2章 IP协定详解2.1 IP服务的特点2.2 IPv4头部结构2.2.1 IPv4头部结构2.2.2 使用tcpdump观察IPv4头部结构2.3 IP分片2.4 IP路由2.4.1 IP模组工作流程2.4.2 路由机制2.4.3 路由表更新2.5 IP转发2.6 重定向2.6.1 ICMP重定向报文2.6.2 主机重定向实例2.7 IPv6头部结构2.7.1 IPv6固定头部结构2.7.2 IPv6扩展头部第3章 TCP协定详解3.1 TCP服务的特点3.2 TCP头部结构3.2.1 TCP固定头部结构3.2.2 TCP头部选项3.2.3 使用tcpdump观察TCP头部信息3.3 TCP连线的建立和关闭3.3.1 使用tcpdump观察TCP连线的建立和关闭3.3.2 半关闭状态3.3.3 连线逾时3.4 TCP状态转移3.4.1 TCP状态转移总图3.4.2 TIME_WAIT状态3.5 复位报文段3.5.1 访问不存在的连线埠3.5.2 异常终止连线3.5.3 处理半打开连线3.6 TCP互动数据流3.7 TCP成块数据流3.8 带外数据3.9 TCP逾时重传3.10 拥塞控制3.10.1 拥塞控制概述3.10.2 慢启动和拥塞避免3.10.3 快速重传和快速恢复第4章 TCPIP通信案例:访问Internet上的Web伺服器4.1 实例总图4.2 部署代理伺服器4.2.1 HTTP代理伺服器的工作原理4.2.2 部署squid代理伺服器4.3 使用tcpdump抓取传输数据包4.4 访问DNS伺服器4.5 本地名称查询4.6 HTTP通信4.6.1 HTTP请求4.6.2 HTTP应答4.7 实例总结第二篇 深入解析高性能伺服器编程第5章 Linux网路编程基础API5.1 socket地址API5.1.1 主机位元组序和网路位元组序5.1.2 通用socket地址5.1.3 专用socket地址5.1.4 IP位址转换函式5.2 创建socket5.3 命名socket5.4 监听socket5.5 接受连线5.6 发起连线5.7 关闭连线5.8 数据读写5.8.1 TCP数据读写5.8.2 UDP数据读写5.8.3 通用数据读写函式5.9 带外标记5.10 地址信息函式5.11 socket选项5.11.1 SO_REUSEADDR选项5.11.2 SO_RCVBUF和SO_SNDBUF选项 5.11.3 SO_RCVLOWAT和SO_SNDLOWAT选项5.11.4 SO_LINGER选项5.12 网路信息API5.12.1 gethostbyname和gethostbyaddr5.12.2 getservbyname和getservbyport5.12.3 getaddrinfo5.12.4 getnameinfo第6章 高级IO函式6.1 pipe函式6.2 dup函式和dup2函式6.3 readv函式和writev函式6.4 sendfile函式6.5 mmap函式和munmap函式6.6 splice函式6.7 tee函式6.8 fcntl函式第7章 Linux伺服器程式规範7.1 日誌7.1.1 Linux系统日誌7.1.2 syslog函式7.2 用户信息7.2.1 UID、EUID、GID和EGID7.2.2 切换用户7.3 进程间关係7.3.1 进程组7.3.2 会话7.3.3 用ps命令查看进程关係7.4 系统资源限制7.5 改变工作目录和根目录7.6 伺服器程式后台化第8章 高性能伺服器程式框架8.1 伺服器模型8.1.1 CS模型8.1.2 P2P模型8.2 伺服器编程框架8.3 IO模型8.4 两种高效的事件处理模式8.4.1 Reactor模式8.4.2 Proactor模式8.4.3 模拟Proactor模式8.5 两种高效的併发模式8.5.1 半同步半异步模式8.5.2 领导者追随者模式8.6 有限状态机8.7 提高伺服器性能的其他建议8.7.1 池8.7.2 数据複製8.7.3 上下文切换和锁第9章 IO复用9.1 select系统调用9.1.1 select API9.1.2 档案描述符就绪条件9.1.3 处理带外数据9.2 poll系统调用9.3 epoll系列系统调用9.3.1 核心事件表9.3.2 epoll_wait函式9.3.3 LT和ET模式9.3.4 EPOLLONESHOT事件9.4 三组IO复用函式的比较9.5 IO复用的高级套用一:非阻塞connect9.6 IO复用的高级套用二:聊天室程式9.6.1 客户端9.6.2 伺服器9.7 IO复用的高级套用三:同时处理TCP和UDP服务9.8 超级服务xinetd9.8.1 xinetd配置档案9.8.2 xinetd工作流程第10章 信号10.1 Linux信号概述 10.1.1 传送信号10.1.2 信号处理方式10.1.3 Linux信号10.1.4 中断系统调用10.2 信号函式10.2.1 signal系统调用10.2.2 sigaction系统调用10.3 信号集10.3.1 信号集函式10.3.2 进程信号掩码10.3.3 被挂起的信号10.4 统一事件源10.5 网路编程相关信号10.5.1 SIGHUP10.5.2 SIGPIPE10.5.3 SIGURG第11章 定时器11.1 socket选项SO_RCVTIMEO和SO_SNDTIMEO11.2SIGALRM信号11.2.1 基于升序鍊表的定时器11.2.2 处理非活动连线11.3 IO复用系统调用的逾时参数11.4 高性能定时器11.4.1 时间轮11.4.2 时间堆第12章 高性能IO框架库Libevent12.1 IO框架库概述12.2 Libevent源码分析12.2.1 一个实例12.2.2 原始码组织结构12.2.3 event结构体12.2.4 往注册事件伫列中添加事件处理器12.2.5 往事件多路分发器中注册事件12.2.6 eventop结构体12.2.7 event_base结构体12.2.8 事件循环第13章 多进程编程13.1 fork系统调用13.2 exec系列系统调用13.3 处理殭尸进程13.4 管道13.5 信号量13.5.1 信号量原语13.5.2 semget系统调用13.5.3 semop系统调用13.5.4 semctl系统调用13.5.5 特殊键值IPC_PRIVATE13.6 共享记忆体13.6.1 shmget系统调用13.6.2 shmat和shmdt系统调用13.6.3 shmctl系统调用13.6.4 共享记忆体的POSIX方法13.6.5 共享记忆体实例13.7 讯息伫列13.7.1 msgget系统调用13.7.2 msgsnd系统调用13.7.3 msgrcv系统调用13.7.4 msgctl系统调用13.8 IPC命令13.9 在进程间传递档案描述符第14章 多执行绪编程14.1 Linux执行绪概述14.1.1 执行绪模型14.1.2 Linux执行绪库14.2 创建执行绪和结束执行绪14.3 执行绪属性14.4 POSIX信号量14.5 互斥锁14.5.1 互斥锁基础API14.5.2 互斥锁属性14.5.3 死锁举例 14.6 条件变数14.7 执行绪同步机制包装类14.8 多执行绪环境14.8.1 可重入函式14.8.2 执行绪和进程14.8.3 执行绪和信号第15章 进程池和执行绪池15.1 进程池和执行绪池概述15.2 处理多客户15.3 半同步半异步进程池实现15.4 用进程池实现的简单CGI伺服器15.5 半同步半反应堆执行绪池实现15.6 用执行绪池实现的简单Web伺服器15.6.1 http_conn类15.6.2 main函式第三篇 高性能伺服器最佳化与监测第16章 伺服器调製、调试和测试16.1 最大档案描述符数16.2 调整核心参数16.2.1 procsysfs目录下的部分档案16.2.2 procsysnet目录下的部分档案16.3 gdb调试16.3.1 用gdb调试多进程程式16.3.2 用gdb调试多执行绪程式16.4 压力测试第17章 系统监测工具17.1 tcpdump17.2 lsof17.3 nc17.4 strace17.5 netstat17.6 vmstat17.7 ifstat17.8 mpstat