Linux高性能服務器編程一書的第一部分講TCP協(xié)議的各狀態(tài),通過tcpdump工具,一個個做實驗,用數(shù)據(jù)包告訴你,tcp是這么進行各狀態(tài)跳轉(zhuǎn)的——由此不難看出作者對tcp/ip協(xié)議和socket的基礎(chǔ)深厚,理解透徹。作為入門書籍Linux高性能服務器編程還是不錯,其中內(nèi)容比較接地氣,必須的部分基本都覆蓋到了,而且篇幅也適合快速上手。本節(jié)內(nèi)容東坡小編為大家整理帶來的這份linux高性能服務器編程高清版電子書為pdf格式,歡迎有需要的朋友前來下載查閱!
Linux高性能服務器編程目錄
前言
第一篇 TCPIP協(xié)議詳解
第1章 TCPIP協(xié)議族
1.1 TCPIP協(xié)議族體系結(jié)構(gòu)以及主要協(xié)議
1.1.1 數(shù)據(jù)鏈路層
1.1.2 網(wǎng)絡層
1.1.3 傳輸層
1.1.4 應用層
1.2 封裝
1.3 分用
1.4 測試網(wǎng)絡
1.5 ARP協(xié)議工作原理
1.5.1 以太網(wǎng)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協(xié)議族的關(guān)系
第2章 IP協(xié)議詳解
2.1 IP服務的特點
2.2 IPv4頭部結(jié)構(gòu)
2.2.1 IPv4頭部結(jié)構(gòu)
2.2.2 使用tcpdump觀察IPv4頭部結(jié)構(gòu)
2.3 IP分片
2.4 IP路由
2.4.1 IP模塊工作流程
2.4.2 路由機制
2.4.3 路由表更新
2.5 IP轉(zhuǎn)發(fā)
2.6 重定向
2.6.1 ICMP重定向報文
2.6.2 主機重定向?qū)嵗?/p>
2.7 IPv6頭部結(jié)構(gòu)
2.7.1 IPv6固定頭部結(jié)構(gòu)
2.7.2 IPv6擴展頭部
第3章 TCP協(xié)議詳解
3.1 TCP服務的特點
3.2 TCP頭部結(jié)構(gòu)
3.2.1 TCP固定頭部結(jié)構(gòu)
3.2.2 TCP頭部選項
3.2.3 使用tcpdump觀察TCP頭部信息
3.3 TCP連接的建立和關(guān)閉
3.3.1 使用tcpdump觀察TCP連接的建立和關(guān)閉
3.3.2 半關(guān)閉狀態(tài)
3.3.3 連接超時
3.4 TCP狀態(tài)轉(zhuǎn)移
3.4.1 TCP狀態(tài)轉(zhuǎn)移總圖
3.4.2 TIME_WAIT狀態(tài)
3.5 復位報文段
3.5.1 訪問不存在的端口
3.5.2 異常終止連接
3.5.3 處理半打開連接
3.6 TCP交互數(shù)據(jù)流
3.7 TCP成塊數(shù)據(jù)流
3.8 帶外數(shù)據(jù)
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抓取傳輸數(shù)據(jù)包
4.4 訪問DNS服務器
4.5 本地名稱查詢
4.6 HTTP通信
4.6.1 HTTP請求
4.6.2 HTTP應答
4.7 實例總結(jié)
第二篇 深入解析高性能服務器編程
第5章 Linux網(wǎng)絡編程基礎(chǔ)API
5.1 socket地址API
5.1.1 主機字節(jié)序和網(wǎng)絡字節(jié)序
5.1.2 通用socket地址
5.1.3 專用socket地址
5.1.4 IP地址轉(zhuǎn)換函數(shù)
5.2 創(chuàng)建socket
5.3 命名socket
5.4 監(jiān)聽socket
5.5 接受連接
5.6 發(fā)起連接
5.7 關(guān)閉連接
5.8 數(shù)據(jù)讀寫
5.8.1 TCP數(shù)據(jù)讀寫
5.8.2 UDP數(shù)據(jù)讀寫
5.8.3 通用數(shù)據(jù)讀寫函數(shù)
5.9 帶外標記
5.10 地址信息函數(shù)
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 網(wǎng)絡信息API
5.12.1 gethostbyname和gethostbyaddr
5.12.2 getservbyname和getservbyport
5.12.3 getaddrinfo
5.12.4 getnameinfo
第6章 高級IO函數(shù)
6.1 pipe函數(shù)
6.2 dup函數(shù)和dup2函數(shù)
6.3 readv函數(shù)和writev函數(shù)
6.4 sendfile函數(shù)
6.5 mmap函數(shù)和munmap函數(shù)
6.6 splice函數(shù)
6.7 tee函數(shù)
6.8 fcntl函數(shù)
第7章 Linux服務器程序規(guī)范
7.1 日志
7.1.1 Linux系統(tǒng)日志
7.1.2 syslog函數(shù)
7.2 用戶信息
7.2.1 UID、EUID、GID和EGID
7.2.2 切換用戶
7.3 進程間關(guān)系
7.3.1 進程組
7.3.2 會話
7.3.3 用ps命令查看進程關(guān)系
7.4 系統(tǒng)資源限制
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 兩種高效的并發(fā)模式
8.5.1 半同步半異步模式
8.5.2 領(lǐng)導者追隨者模式
8.6 有限狀態(tài)機
8.7 提高服務器性能的其他建議
8.7.1 池
8.7.2 數(shù)據(jù)復制
8.7.3 上下文切換和鎖
第9章 IO復用
9.1 select系統(tǒng)調(diào)用
9.1.1 select API
9.1.2 文件描述符就緒條件
9.1.3 處理帶外數(shù)據(jù)
9.2 poll系統(tǒng)調(diào)用
9.3 epoll系列系統(tǒng)調(diào)用
9.3.1 內(nèi)核事件表
9.3.2 epoll_wait函數(shù)
9.3.3 LT和ET模式
9.3.4 EPOLLONESHOT事件
9.4 三組IO復用函數(shù)的比較
9.5 IO復用的高級應用一:非阻塞connect
9.6 IO復用的高級應用二:聊天室程序
9.6.1 客戶端
9.6.2 服務器
9.7 IO復用的高級應用三:同時處理TCP和UDP服務
9.8 超級服務xinetd
9.8.1 xinetd配置文件
9.8.2 xinetd工作流程
第10章 信號
10.1 Linux信號概述
10.1.1 發(fā)送信號
10.1.2 信號處理方式
10.1.3 Linux信號
10.1.4 中斷系統(tǒng)調(diào)用
10.2 信號函數(shù)
10.2.1 signal系統(tǒng)調(diào)用
10.2.2 sigaction系統(tǒng)調(diào)用
10.3 信號集
10.3.1 信號集函數(shù)
10.3.2 進程信號掩碼
10.3.3 被掛起的信號
10.4 統(tǒng)一事件源
10.5 網(wǎng)絡編程相關(guān)信號
10.5.1 SIGHUP
10.5.2 SIGPIPE
10.5.3 SIGURG
第11章 定時器
11.1 socket選項SO_RCVTIMEO和SO_SNDTIMEO
11.2 SIGALRM信號
11.2.1 基于升序鏈表的定時器
11.2.2 處理非活動連接
11.3 IO復用系統(tǒng)調(diào)用的超時參數(shù)
11.4 高性能定時器
11.4.1 時間輪
11.4.2 時間堆
第12章 高性能IO框架庫Libevent
12.1 IO框架庫概述
12.2 Libevent源碼分析
12.2.1 一個實例
12.2.2 源代碼組織結(jié)構(gòu)
12.2.3 event結(jié)構(gòu)體
12.2.4 往注冊事件隊列中添加事件處理器
12.2.5 往事件多路分發(fā)器中注冊事件
12.2.6 eventop結(jié)構(gòu)體
12.2.7 event_base結(jié)構(gòu)體
12.2.8 事件循環(huán)
第13章 多進程編程
13.1 fork系統(tǒng)調(diào)用
13.2 exec系列系統(tǒng)調(diào)用
13.3 處理僵尸進程
13.4 管道
13.5 信號量
13.5.1 信號量原語
13.5.2 semget系統(tǒng)調(diào)用
13.5.3 semop系統(tǒng)調(diào)用
13.5.4 semctl系統(tǒng)調(diào)用
13.5.5 特殊鍵值IPC_PRIVATE
13.6 共享內(nèi)存
13.6.1 shmget系統(tǒng)調(diào)用
13.6.2 shmat和shmdt系統(tǒng)調(diào)用
13.6.3 shmctl系統(tǒng)調(diào)用
13.6.4 共享內(nèi)存的POSIX方法
13.6.5 共享內(nèi)存實例
13.7 消息隊列
13.7.1 msgget系統(tǒng)調(diào)用
13.7.2 msgsnd系統(tǒng)調(diào)用
13.7.3 msgrcv系統(tǒng)調(diào)用
13.7.4 msgctl系統(tǒng)調(diào)用
13.8 IPC命令
13.9 在進程間傳遞文件描述符
第14章 多線程編程
14.1 Linux線程概述
14.1.1 線程模型
14.1.2 Linux線程庫
14.2 創(chuàng)建線程和結(jié)束線程
14.3 線程屬性
14.4 POSIX信號量
14.5 互斥鎖
14.5.1 互斥鎖基礎(chǔ)API
14.5.2 互斥鎖屬性
14.5.3 死鎖舉例
14.6 條件變量
14.7 線程同步機制包裝類
14.8 多線程環(huán)境
14.8.1 可重入函數(shù)
14.8.2 線程和進程
14.8.3 線程和信號
第15章 進程池和線程池
15.1 進程池和線程池概述
15.2 處理多客戶
15.3 半同步半異步進程池實現(xiàn)
15.4 用進程池實現(xiàn)的簡單CGI服務器
15.5 半同步半反應堆線程池實現(xiàn)
15.6 用線程池實現(xiàn)的簡單Web服務器
15.6.1 http_conn類
15.6.2 main函數(shù)
第三篇 高性能服務器優(yōu)化與監(jiān)測
第16章 服務器調(diào)制、調(diào)試和測試
16.1 最大文件描述符數(shù)
16.2 調(diào)整內(nèi)核參數(shù)
16.2.1 procsysfs目錄下的部分文件
16.2.2 procsysnet目錄下的部分文件
16.3 gdb調(diào)試
16.3.1 用gdb調(diào)試多進程程序
16.3.2 用gdb調(diào)試多線程程序
16.4 壓力測試
第17章 系統(tǒng)監(jiān)測工具
17.1 tcpdump
17.2 lsof
17.3 nc
17.4 strace
17.5 netstat
17.6 vmstat
17.7 ifstat
17.8 mpstat
參考文獻
Linux高性能服務器編程內(nèi)容簡介
全書共17章,分為3個部分:第一部分對Linux服務器編程的核心基礎(chǔ)——TCP/IP協(xié)議進行了深入的解讀和闡述,包括TCP/IP協(xié)議族、TCP/IP協(xié)議,以及一個經(jīng)典的TCP/IP通信案例;第二部分對高性能服務器編程的核心要素進行了全面深入的剖析,包含Linux網(wǎng)絡編程API、高級I/O函數(shù)、Linux服務器程序規(guī)范、高性能服務器程序框架、I/O復用、信號、定時器、高性能I/O框架庫Libevent、多進程編程、多線程編程、進程池和線程池等內(nèi)容,原理、技術(shù)與方法并重;第三部分從側(cè)重實戰(zhàn)的角度講解了高性能服務器的優(yōu)化與監(jiān)測,包含服務器的調(diào)制、調(diào)試和測試,以及各種實用系統(tǒng)監(jiān)測工具的使用等內(nèi)容。
本書是Linux服務器編程領(lǐng)域的經(jīng)典著作,由資深Linux軟件開發(fā)工程師撰寫,從網(wǎng)絡協(xié)議、服務器編程核心要素、原理機制、工具框架等多角度全面闡釋了編寫高性能Linux服務器應用的方法、技巧和思想。不僅理論全面、深入,抓住了重點和難點,還包含兩個綜合性案例,極具實戰(zhàn)意義。