《Linux高性能服务器编程》电子书,建议保存

书籍简介

Linux高性能服务器编程

作者: 游双出版社: 机械工业出版社出版年: 2013-5-1页数: 360装帧: 平装丛书: 实战系列

获取方法

转发本文,私信发送:0228,获取下载链接。

目录

前言第一篇 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.2 SIGALRM信号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