当前位置:主页 > 书籍配套资源 > Linux配套资源
《Linux高性能服务器编程》源代码

《Linux高性能服务器编程》源代码

  • 更新:2022-04-21
  • 大小:5.7 MB
  • 类别:Linux
  • 作者:游双
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书是Linux服务器编程领域的经典著作,由资深Linux软件开发工程师撰写,从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释了编写高性能Linux服务器应用的方法、技巧和思想。不仅理论全面、深入、抓住了重点和难点,而且还包含两个综合性案例,极具实战意义。

全书一共17章,分为三个部分:第一部分对Linux服务器编程的核心基础——TCP/IP协议进行了深刻的解读和阐述,包括TCP/IP协议簇、TCP/协议,以及一个经典的TCP/IP通信案例;第二部分对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、Linux服务器程序规范、高性能服务器程序框架、I/O复用、信号、定时器、高性能I/O框架库Libevent、多进程编程、多线程编程、进程池和线程池等内容,原理、技术与方法并重;第三部分从侧重实战的角度讲解了高性能服务器的优化与监测,包含服务器的调制、调试和测试,以及各种高效系统检测工具的使用等内容。

封面图

目录

  • 前言
  • 第一篇TCP/IP协议详解
  • 第1章TCP/IP协议族 / 2
  • 1.1TCP/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.5ARP协议工作原理 / 9
  • 1.5.1以太网ARP请求/应答报文详解 / 9
  • 1.5.2ARP高速缓存的查看和修改 / 10
  • 1.5.3使用tcpdump观察ARP通信过程 / 10
  • 1.6DNS工作原理 / 12
  • 1.6.1DNS查询和应答报文详解 / 12
  • 1.6.2Linux下访问DNS服务 / 14
  • 1.6.3使用tcpdump观察DNS通信过程 / 15
  • 1.7socket和TCP/IP协议族的关系 / 16
  • 第2章IP协议详解 / 17
  • 2.1IP服务的特点 / 17
  • 2.2IPv4头部结构 / 18
  • 2.2.1IPv4头部结构 / 18
  • 2.2.2使用tcpdump观察IPv4头部结构 / 20
  • 2.3IP分片 / 21
  • 2.4IP路由 / 22
  • 2.4.1IP模块工作流程 / 23
  • 2.4.2路由机制 / 24
  • 2.4.3路由表更新 / 25
  • 2.5IP转发 / 25
  • 2.6重定向 / 26
  • 2.6.1ICMP重定向报文 / 26
  • 2.6.2主机重定向实例 / 27
  • 2.7IPv6头部结构 / 27
  • 2.7.1IPv6固定头部结构 / 28
  • 2.7.2IPv6扩展头部 / 29
  • 第3章TCP协议详解 / 30
  • 3.1TCP服务的特点 / 30
  • 3.2TCP头部结构 / 32
  • 3.2.1TCP固定头部结构 / 32
  • 3.2.2TCP头部选项 / 33
  • 3.2.3使用tcpdump观察TCP头部信息 / 35
  • 3.3TCP连接的建立和关闭 / 37
  • 3.3.1使用tcpdump观察TCP连接的建立和关闭 / 37
  • 3.3.2半关闭状态 / 39
  • 3.3.3连接超时 / 39
  • 3.4TCP状态转移 / 40
  • 3.4.1TCP状态转移总图 / 41
  • 3.4.2TIME_WAIT状态 / 43
  • 3.5复位报文段 / 44
  • 3.5.1访问不存在的端口 / 44
  • 3.5.2异常终止连接 / 45
  • 3.5.3处理半打开连接 / 45
  • 3.6TCP交互数据流 / 46
  • 3.7TCP成块数据流 / 48
  • 3.8带外数据 / 50
  • 3.9TCP超时重传 / 51
  • 3.10拥塞控制 / 53
  • 3.10.1拥塞控制概述 / 53
  • 3.10.2慢启动和拥塞避免 / 54
  • 3.10.3快速重传和快速恢复 / 55
  • 第4章TCP/IP通信案例:访问Internet上的Web服务器 / 57
  • 4.1实例总图 / 57
  • 4.2部署代理服务器 / 58
  • 4.2.1HTTP代理服务器的工作原理 / 58
  • 4.2.2部署squid代理服务器 / 59
  • 4.3使用tcpdump抓取传输数据包 / 60
  • 4.4访问DNS服务器 / 62
  • 4.5本地名称查询 / 63
  • 4.6HTTP通信 / 64
  • 4.6.1HTTP请求 / 65
  • 4.6.2HTTP应答 / 66
  • 4.7实例总结 / 68
  • 第二篇深入解析高性能服务器编程
  • 第5章Linux网络编程基础API / 70
  • 5.1socket地址API / 70
  • 5.1.1主机字节序和网络字节序 / 70
  • 5.1.2通用socket地址 / 71
  • 5.1.3专用socket地址 / 72
  • 5.1.4IP地址转换函数 / 73
  • 5.2创建socket / 74
  • 5.3命名socket / 75
  • 5.4监听socket / 76
  • 5.5接受连接 / 78
  • 5.6发起连接 / 80
  • 5.7关闭连接 / 80
  • 5.8数据读写 / 81
  • 5.8.1TCP数据读写 / 81
  • 5.8.2UDP数据读写 / 85
  • 5.8.3通用数据读写函数 / 86
  • 5.9带外标记 / 87
  • 5.10地址信息函数 / 87
  • 5.11socket选项 / 87
  • 5.11.1SO_REUSEADDR选项 / 89
  • 5.11.2SO_RCVBUF和SO_SNDBUF选项 / 89
  • 5.11.3SO_RCVLOWAT和SO_SNDLOWAT选项 / 93
  • 5.11.4SO_LINGER选项 / 93
  • 5.12网络信息API / 94
  • 5.12.1gethostbyname和gethostbyaddr / 94
  • 5.12.2getservbyname和getservbyport / 95
  • 5.12.3getaddrinfo / 96
  • 5.12.4getnameinfo / 98
  • 第6章高级I/O函数 / 100
  • 6.1pipe函数 / 100
  • 6.2dup函数和dup2函数 / 101
  • 6.3readv函数和writev函数 / 103
  • 6.4sendfile函数 / 106
  • 6.5mmap函数和munmap函数 / 107
  • 6.6splice函数 / 108
  • 6.7tee函数 / 110
  • 6.8fcntl函数 / 112
  • 第7章Linux服务器程序规范 / 114
  • 7.1日志 / 114
  • 7.1.1Linux系统日志 / 114
  • 7.1.2syslog函数 / 115
  • 7.2用户信息 / 116
  • 7.2.1UID、EUID、GID和EGID / 116
  • 7.2.2切换用户 / 117
  • 7.3进程间关系 / 118
  • 7.3.1进程组 / 118
  • 7.3.2会话 / 118
  • 7.3.3用ps命令查看进程关系 / 119
  • 7.4系统资源限制 / 119
  • 7.5改变工作目录和根目录 / 120
  • 7.6服务器程序后台化 / 121
  • 第8章高性能服务器程序框架 / 123
  • 8.1服务器模型 / 123
  • 8.1.1C/S模型 / 123
  • 8.1.2P2P模型 / 124
  • 8.2服务器编程框架 / 125
  • 8.3I/O模型 / 126
  • 8.4两种高效的事件处理模式 / 127
  • 8.4.1Reactor模式 / 128
  • 8.4.2Proactor模式 / 128
  • 8.4.3模拟Proactor模式 / 129
  • 8.5两种高效的并发模式 / 130
  • 8.5.1半同步/半异步模式 / 131
  • 8.5.2领导者/追随者模式 / 134
  • 8.6有限状态机 / 136
  • 8.7提高服务器性能的其他建议 / 144
  • 8.7.1池 / 144
  • 8.7.2数据复制 / 145
  • 8.7.3上下文切换和锁 / 145
  • 第9章I/O复用 / 146
  • 9.1select系统调用 / 146
  • 9.1.1select API / 146
  • 9.1.2文件描述符就绪条件 / 148
  • 9.1.3处理带外数据 / 148
  • 9.2poll系统调用 / 150
  • 9.3epoll系列系统调用 / 151
  • 9.3.1内核事件表 / 151
  • 9.3.2epoll_wait函数 / 152
  • 9.3.3LT和ET模式 / 153
  • 9.3.4EPOLLONESHOT事件 / 157
  • 9.4三组I/O复用函数的比较 / 161
  • 9.5I/O复用的高级应用一:非阻塞connect / 162
  • 9.6I/O复用的高级应用二:聊天室程序 / 165
  • 9.6.1客户端 / 165
  • 9.6.2服务器 / 167
  • 9.7I/O复用的高级应用三:同时处理TCP和UDP服务 / 171
  • 9.8超级服务xinetd / 175
  • 9.8.1xinetd配置文件 / 175
  • 9.8.2xinetd工作流程 / 176
  • 第10章信号 / 178
  • 10.1Linux信号概述 / 178
  • 10.1.1发送信号 / 178
  • 10.1.2信号处理方式 / 179
  • 10.1.3Linux信号 / 179
  • 10.1.4中断系统调用 / 181
  • 10.2信号函数 / 181
  • 10.2.1signal系统调用 / 181
  • 10.2.2sigaction系统调用 / 181
  • 10.3信号集 / 182
  • 10.3.1信号集函数 / 182
  • 10.3.2进程信号掩码 / 183
  • 10.3.3被挂起的信号 / 183
  • 10.4统一事件源 / 184
  • 10.5网络编程相关信号 / 188
  • 10.5.1SIGHUP / 188
  • 10.5.2SIGPIPE / 189
  • 10.5.3SIGURG / 190
  • 第11章定时器 / 193
  • 11.1socket选项SO_RCVTIMEO和SO_SNDTIMEO / 193
  • 11.2 SIGALRM信号 / 195
  • 11.2.1基于升序链表的定时器 / 195
  • 11.2.2处理非活动连接 / 200
  • 11.3I/O复用系统调用的超时参数 / 205
  • 11.4高性能定时器 / 206
  • 11.4.1时间轮 / 206
  • 11.4.2时间堆 / 211
  • 第12章高性能I/O框架库Libevent / 218
  • 12.1I/O框架库概述 / 218
  • 12.2Libevent源码分析 / 220
  • 12.2.1一个实例 / 220
  • 12.2.2源代码组织结构 / 222
  • 12.2.3event结构体 / 224
  • 12.2.4往注册事件队列中添加事件处理器 / 226
  • 12.2.5往事件多路分发器中注册事件 / 230
  • 12.2.6eventop结构体 / 233
  • 12.2.7event_base结构体 / 235
  • 12.2.8事件循环 / 236
  • 第13章多进程编程 / 239
  • 13.1fork系统调用 / 239
  • 13.2exec系列系统调用 / 240
  • 13.3处理僵尸进程 / 240
  • 13.4管道 / 241
  • 13.5信号量 / 243
  • 13.5.1信号量原语 / 243
  • 13.5.2semget系统调用 / 244
  • 13.5.3semop系统调用 / 245
  • 13.5.4semctl系统调用 / 247
  • 13.5.5特殊键值IPC_PRIVATE / 249
  • 13.6共享内存 / 251
  • 13.6.1shmget系统调用 / 251
  • 13.6.2shmat和shmdt系统调用 / 252
  • 13.6.3shmctl系统调用 / 253
  • 13.6.4共享内存的POSIX方法 / 254
  • 13.6.5共享内存实例 / 254
  • 13.7消息队列 / 263
  • 13.7.1msgget系统调用 / 263
  • 13.7.2msgsnd系统调用 / 264
  • 13.7.3msgrcv系统调用 / 264
  • 13.7.4msgctl系统调用 / 265
  • 13.8IPC命令 / 266
  • 13.9在进程间传递文件描述符 / 267
  • 第14章多线程编程 / 269
  • 14.1Linux线程概述 / 269
  • 14.1.1线程模型 / 269
  • 14.1.2Linux线程库 / 270
  • 14.2创建线程和结束线程 / 271
  • 14.3线程属性 / 273
  • 14.4POSIX信号量 / 275
  • 14.5互斥锁 / 276
  • 14.5.1互斥锁基础API / 276
  • 14.5.2互斥锁属性 / 277
  • 14.5.3死锁举例 / 278
  • 14.6条件变量 / 279
  • 14.7线程同步机制包装类 / 280
  • 14.8多线程环境 / 282
  • 14.8.1可重入函数 / 282
  • 14.8.2线程和进程 / 283
  • 14.8.3线程和信号 / 284
  • 第15章进程池和线程池 / 287
  • 15.1进程池和线程池概述 / 287
  • 15.2处理多客户 / 288
  • 15.3半同步/半异步进程池实现 / 289
  • 15.4用进程池实现的简单CGI服务器 / 298
  • 15.5半同步/半反应堆线程池实现 / 301
  • 15.6用线程池实现的简单Web服务器 / 304
  • 15.6.1http_conn类 / 304
  • 15.6.2main函数 / 318
  • 第三篇高性能服务器优化与监测
  • 第16章服务器调制、调试和测试 / 324
  • 16.1最大文件描述符数 / 324
  • 16.2调整内核参数 / 325
  • 16.2.1/proc/sys/fs目录下的部分文件 / 325
  • 16.2.2/proc/sys/net目录下的部分文件 / 325
  • 16.3gdb调试 / 326
  • 16.3.1用gdb调试多进程程序 / 326
  • 16.3.2用gdb调试多线程程序 / 328
  • 16.4压力测试 / 329
  • 第17章系统监测工具 / 333
  • 17.1tcpdump / 333
  • 17.2lsof / 334
  • 17.3nc / 336
  • 17.4strace / 338
  • 17.5netstat / 341
  • 17.6vmstat / 342
  • 17.7ifstat / 344
  • 17.8mpstat / 344
  • 参考文献 / 346

资源下载

资源下载地址1:https://pan.baidu.com/s/1oewKYLnNlUDfxM8j3nIxLA

相关资源

网友留言