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高性能服务器编程》(作者游双)将服务器程序解构成一个个要素,并采用各个击破的方式,探讨如何提高各要素的性能,以*终提高服务器程序的整体性能。本书第15章给出了两个综合性的实例,这两个实例将前面章节讨论过的各个要素有机地整合在一起,以指导读者如何把理论应用于实践。
Linux 高性能服务器编程 目录
前言
**篇tcpip协议详解
第1章tcpip协议族
1.1tcpip协议族体系结构以及主要协议
1.1.1数据链路层
1.1.2网络层
1.1.3传输层
1.1.4应用层
1.2封装
1.3分用
1.4测试网络
1.5arp协议工作原理
1.5.1以太网arp请求应答报文详解
1.5.2arp高速缓存的查看和修改
1.5.3使用tcpdump观察arp通信过程
1.6dns工作原理
1.6.1dns查询和应答报文详解
1.6.2linux下访问dns服务
1.6.3使用tcpdump观察dns通信过程
1.7socket和tcpip协议族的关系
第2章ip协议详解
2.1ip服务的特点
2.2ipv4头部结构
2.2.1ipv4头部结构
2.2.2使用tcpdump观察ipv4头部结构
2.3ip分片
2.4ip路由
2.4.1ip模块工作流程
2.4.2路由机制
2.4.3路由表更新
2.5ip转发
2.6重定向
2.6.1icmp重定向报文
2.6.2主机重定向实例
2.7ipv6头部结构
2.7.1ipv6固定头部结构
2.7.2ipv6扩展头部
第3章tcp协议详解
3.1tcp服务的特点
3.2tcp头部结构
3.2.1tcp固定头部结构
3.2.2tcp头部选项
3.2.3使用tcpdump观察tcp头部信息
3.3tcp连接的建立和关闭
3.3.1使用tcpdump观察tcp连接的建立和关闭
3.3.2半关闭状态
3.3.3连接超时
3.4tcp状态转移
3.4.1tcp状态转移总图
3.4.2time_wait状态
3.5复位报文段
3.5.1访问不存在的端口
3.5.2异常终止连接
3.5.3处理半打开连接
3.6tcp交互数据流
3.7tcp成块数据流
3.8带外数据
3.9tcp超时重传
3.10拥塞控制
3.10.1拥塞控制概述
3.10.2慢启动和拥塞避免
3.10.3快速重传和快速恢复
第4章tcpip通信案例:访问internet上的web服务器
4.1实例总图
4.2部署代理服务器
4.2.1http代理服务器的工作原理
4.2.2部署squid代理服务器
4.3使用tcpdump抓取传输数据包
4.4访问dns服务器
4.5本地名称查询
4.6http通信
4.6.1http请求
4.6.2http应答
4.7实例总结
第二篇深入解析高性能服务器编程
第5章linux网络编程基础api
5.1socket地址api
5.1.1主机字节序和网络字节序
5.1.2通用socket地址
5.1.3专用socket地址
5.1.4ip地址转换函数
5.2创建socket
5.3命名socket
5.4监听socket
5.5接受连接
5.6发起连接
5.7关闭连接
5.8数据读写
5.8.1tcp数据读写
5.8.2udp数据读写
5.8.3通用数据读写函数
5.9带外标记
5.10地址信息函数
5.11socket选项
5.11.1so_reuseaddr选项
5.11.2so_rcvbuf和so_sndbuf选项
5.11.3so_rcvlowat和so_sndlowat选项
5.11.4so_linger选项
5.12网络信息api
5.12.1gethostbyname和gethostbyaddr
5.12.2getservbyname和getservbyport
5.12.3getaddrinfo
5.12.4getnameinfo
第6章高级io函数
6.1pipe函数
6.2dup函数和dup2函数
6.3readv函数和writev函数
6.4sendfile函数
6.5mmap函数和munmap函数
6.6splice函数
6.7tee函数
6.8fcntl函数
第7章linux服务器程序规范
7.1日志
7.1.1linux系统日志
7.1.2syslog函数
7.2用户信息
7.2.1uid、euid、gid和egid
7.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.1cs模型
8.1.2p2p模型
8.2服务器编程框架
8.3io模型
8.4两种高效的事件处理模式
8.4.1reactor模式
8.4.2proactor模式
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.1select系统调用
9.1.1select api
9.1.2文件描述符就绪条件
9.1.3处理带外数据
9.2poll系统调用
9.3epoll系列系统调用
9.3.1内核事件表
9.3.2epoll_wait函数
9.3.3lt和et模式
9.3.4epolloneshot事件
9.4三组io复用函数的比较
9.5io复用的高级应用一:非阻塞connect
9.6io复用的高级应用二:聊天室程序
9.6.1客户端
9.6.2服务器
9.7io复用的高级应用三:同时处理tcp和udp服务
9.8超级服务xinetd
9.8.1xinetd配置文件
9.8.2xinetd工作流程
第10章信号
10.1linux信号概述
10.1.1发送信号
10.1.2信号处理方式
10.1.3linux信号
10.1.4中断系统调用
10.2信号函数
10.2.1signal系统调用
10.2.2sigaction系统调用
10.3信号集
10.3.1信号集函数
10.3.2进程信号掩码
10.3.3被挂起的信号
10.4统一事件源
10.5网络编程相关信号
10.5.1sighup
10.5.2sigpipe
10.5.3sigurg
第11章定时器
11.1socket选项so_rcvtimeo和so_sndtimeo
11.2 sigalrm信号
11.2.1基于升序链表的定时器
11.2.2处理非活动连接
11.3io复用系统调用的超时参数
11.4高性能定时器
11.4.1时间轮
11.4.2时间堆
第12章高性能io框架库libevent
12.1io框架库概述
12.2libevent源码分析
12.2.1一个实例
12.2.2源代码组织结构
12.2.3event结构体
12.2.4往注册事件队列中添加事件处理器
12.2.5往事件多路分发器中注册事件
12.2.6eventop结构体
12.2.7event_base结构体
12.2.8事件循环
第13章多进程编程
13.1fork系统调用
13.2exec系列系统调用
13.3处理僵尸进程
13.4管道
13.5信号量
13.5.1信号量原语
13.5.2semget系统调用
13.5.3semop系统调用
13.5.4semctl系统调用
13.5.5特殊键值ipc_private
13.6共享内存
13.6.1shmget系统调用
13.6.2shmat和shmdt系统调用
13.6.3shmctl系统调用
13.6.4共享内存的posix方法
13.6.5共享内存实例
13.7消息队列
13.7.1msgget系统调用
13.7.2msgsnd系统调用
13.7.3msgrcv系统调用
13.7.4msgctl系统调用
13.8ipc命令
13.9在进程间传递文件描述符
第14章多线程编程
14.1linux线程概述
14.1.1线程模型
14.1.2linux线程库
14.2创建线程和结束线程
14.3线程属性
14.4posix信号量
14.5互斥锁
14.5.1互斥锁基础api
14.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.1http_conn类
15.6.2main函数
第三篇高性能服务器优化与监测
第16章服务器调制、调试和测试
16.1*大文件描述符数
16.2调整内核参数
16.2.1procsysfs目录下的部分文件
16.2.2procsysnet目录下的部分文件
16.3gdb调试
16.3.1用gdb调试多进程程序
16.3.2用gdb调试多线程程序
16.4压力测试
第17章系统监测工具
17.1tcpdump
17.2lsof
17.3nc
17.4strace
17.5netstat
17.6vmstat
17.7ifstat
17.8mpstat
参考文献
Linux 高性能服务器编程 节选
《Linux高性能服务器编程》编辑推荐:Linux服务器编程领域的经典著作,资深Linux软件开发工程师撰写。从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐述编写高性能Linux服务器应用的方法、技巧和思想,包含两个综合性案例,极具实战意义。