本书主要针对lighttpd源码进行了深度剖析。主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速传输方式,以及基本插件模块。本书针对的lighttpd项目版本为稳定版本1.4.20。 本书适合使用lighttpd的人员和爱好者参考。 |
前言 第1章 lighttpd介绍与分析准备工作1 1.1 lighttpd介绍1 1.1.1 什么是lighttpd1 1.1.2 lighttpd功能概述1 1.2 源码分析的准备工作3 1.2.1 lighttpd源码下载与组织结构3 1.2.2 lighttpd源码分析工具4 1.2.3 系统编译环境6 1.2.4 lighttpd编译运行6 1.2.5 其他准备7 1.3 本书内容综述7 1.4 本章总结8 第2章 lighttpd网络服务主模型9 2.1 概述9 2.2 lighttpd主进程执行流程10 2.2.1 lighttpd进程守护化10 2.2.2 lighttpd多进程网络服务模型14 2.3 lighttpd信号处理机制20 2.3.1 信号的概念20 .2.3.2 lighttpd中信号处理机制21 2.4 lighttpd工作进程处理模型25 2.5 本章总结26 第3章 lighttpd数据结构27 3.1 概述27 3.2 bitset数据结构27 3.2.1 结构说明27 3.2.2 结构定义27 3.2.3 结构操作30 3.3 buffer数据结构32 3.3.1 结构说明32 3.3.2 结构定义32 3.3.3 结构操作33 3.4 data_xxxxx数据结构65 3.4.1 结构说明65 3.4.2 结构定义65 3.4.3 结构操作67 3.5 array数据结构67 3.5.1 结构说明67 3.5.2 结构定义68 3.5.3 结构操作69 3.6 chunk数据结构78 3.6.1 结构说明78 3.6.2 结构定义78 3.6.3 结构操作80 3.7 keyvalue数据结构88 3.7.1 结构说明88 3.7.2 结构定义88 3.7.3 结构操作91 3.8 本章总结92 第4章 伸展树93 4.1 概述93 4.2 伸展树基础知识93 4.2.1 伸展树介绍93 4.2.2 伸展树的自底向上伸展94 4.2.3 伸展树的自顶向下伸展98 4.3 lighttpd中伸展树实现源码解析101 4.3.1 结构定义101 4.3.2 结构操作102 4.4 本章总结106 4.5 参考文献106 第5章 日志系统108 5.1 概述108 5.2 日志源码解析108 5.2.1 日志系统头文件108 5.2.2 日志系统实现文件109 5.3 本章总结124 第6章 文件状态缓存器125 6.1 概述125 6.2 etag知识125 6.2.1 etag的定义125 6.2.2 etag的功能126 6.2.3 etag的优势127 6.2.4 lighttpd中etag的实现128 6.2.5 lighttpd中etag的使用130 6.3 文件状态缓存器134 6.3.1 缓存器设计思路134 6.3.2 缓存器结构定义134 6.3.3 缓存器实现137 6.4 本章总结159 第7章 配置信息加载160 7.1 概述160 7.2 配置信息范例与程序加载结果160 7.2.1 lighttpd配置信息的范例160 7.2.2 lighttpd配置信息范例的加载结果164 7.3 加载配置信息的源码分析167 7.3.1 lighttpd配置信息存储结构167 7.3.2 lighttpd配置信息加载的函数 调用流程172 7.4 客户端连接配置信息203 7.4.1 条件配置信息缓存存储结构203 7.4.2 客户端连接配置信息动态获取204 7.5 本章总结215 第8章 i/o多路复用技术模型216 8.1 概述216 8.2 i/o模型基础知识216 8.2.1 i/o模型分类介绍216 8.2.2 常见i/o多路复用实现技术221 8.3 lighttpd中多路复用技术模型应用236 8.3.1 整合多种复用技术模型的数据结 构封装237 8.3.2 i/o多路复用技术模型的使用250 8.3.3 六种i/o多路复用技术模型的实现256 8.4 本章总结279 第9章 插件链280 9.1 概述280 9.2 插件内部结构280 9.2.1 数据结构280 9.2.2 函数接口283 9.3 插件组织结构286 9.3.1 串链结构286 9.3.2 插件组织结构源码分析286 9.4 本章总结296 第10章 网络请求服务响应流程297 10.1 概述297 10.2 简单网络服务通信模型297 10.3 lighttpd网络服务通信模型298 10.3.1 通信模型总图298 10.3.2 通信模型源码分析299 10.4 本章总结402 第11章 请求响应数据快速传输方式403 11.1 概述403 11.2 三种数据传输方式403 11.2.1 内核系统调用架构403 11.2.2 read/write数据读写传输方式405 11.2.3 readv/writev数据读写传输方式408 11.2.4 “零拷贝”(sendfile)数据读 写传输方式409 11.3 传输方式程序实现413 11.3.1 源码network_write.c分析413 11.3.2 源码network_writev.c分析417 11.3.3 源码network_linux_sendfile.c 分析423 11.4 本章总结428 第12章 基本插件模块429 12.1 概述429 12.2 mod_indexfile插件模块429 12.2.1 数据结构429 12.2.2 函数接口430 12.3 mod_dirlisting插件模块433 12.3.1 数据结构433 12.3.2 梳子排序439 12.4 mod_staticfile插件模块441 12.4.1 数据结构442 12.4.2 函数接口442 12.5 本章总结443 后记444 附录一 ascii码字符表445 附录二 扩展ascii码字符表446 附录三 客户端请求连接的有限状态 机转换图447 附录四 http状态码简介448 附录五 参考资料449 |
商品评论(0条)