前言
第一篇 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網絡編程基礎API
5.1 socket地址API
5.1.1 主機字節序和網絡字節序
5.1.2 通用socket地址
5.1.3 專用socket地址
5.1.4 IP地址轉換函數
5.2 創建socket
5.3 命名socket
5.4 監聽socket
5.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 網絡信息API
5.12.1 gethostbyname和gethostbyaddr
5.12.2 getservbyname和getservbyport
5.12.3 getaddrinfo
5.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和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.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 API
9.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復用的高級應用一:非阻塞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 發送信號
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 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復用係統調用的超時參數
11.4 高性能定時器
11.4.1 時間輪
11.4.2 時間堆
第12章 高性能IO框架庫Libevent
12.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_PRIVATE
13.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 互斥鎖基礎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.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 tcpdump
17.2 lsof
17.3 nc
17.4 strace
17.5 netstat
17.6 vmstat
17.7 ifstat
17.8 mpstat
參考文獻
· · · · · · (
收起)
評分
☆☆☆☆☆
之前看過APUE, UNP, TCP/IP v1幾本書, 再看這本書, 這本書花瞭起碼2/3篇幅把那幾本書裏麵重點知識或者說是麵試重點再講瞭一遍, 麵試前用來復習很好的一本書,也是很基礎的書. 感覺這本書講得比較好的地方有: 幾個IO多路復用函數的對比總結, 定時器原理以及幾種定時器設計思路(保存定時器的容器+可以充當時鍾的部件), 統一事件源的思想, Reactor模式/Proactor模式的介紹等
評分
☆☆☆☆☆
為什麼看瞭幾頁之後,我覺得是本很好的入門書,至少前幾章是這樣子的
評分
☆☆☆☆☆
Linux C++網絡編程入門書,看這個加上陳碩大佬的那本就夠入門C++服務器開發瞭,然後就是從項目中不斷學習瞭
評分
☆☆☆☆☆
挺好,前幾章內容在tcp,apue,unp裏已經被老stevens寫通透的就沒什麼說瞭。服務器io模型和進程池綫程池等最後幾章歸納得很好,至少還沒見過老外寫的書有這麼具體的總結的。看上去現在服務器後颱貌似都是用C++多瞭?另外有些錯誤的地方,多倒是不多不過看上去不舒服。還有作者可能長年隻戰鬥在Linux上,對POSIX和C可移植性貌似不是特彆敏感,可能是偶爾寫到的時候看到資料裏提瞭,所以同時提瞭一下,一筆帶過。
評分
☆☆☆☆☆
挺好,前幾章內容在tcp,apue,unp裏已經被老stevens寫通透的就沒什麼說瞭。服務器io模型和進程池綫程池等最後幾章歸納得很好,至少還沒見過老外寫的書有這麼具體的總結的。看上去現在服務器後颱貌似都是用C++多瞭?另外有些錯誤的地方,多倒是不多不過看上去不舒服。還有作者可能長年隻戰鬥在Linux上,對POSIX和C可移植性貌似不是特彆敏感,可能是偶爾寫到的時候看到資料裏提瞭,所以同時提瞭一下,一筆帶過。
評分
☆☆☆☆☆
本书内容量极其庞大,第一次读完的时候,觉得很轻松,可是后来越读越可怕,发现里面涵盖的知识点几乎包括了服务器端编程的大部分 如果你作为一个初学者的话,本书不宜入手 建议看看鸟哥的那三本书,入门,网络,和服务器搭建 三本书半年看完,更多的以后去公司学吧
評分
☆☆☆☆☆
在64位的CentOS 6系统上,大小端转换函数定义如下: (man 3 htonl) SYNOPSIS #include <arpa/inet.h> uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(u...
評分
☆☆☆☆☆
我想要对一些应用进行性能优化的书,比如mysql集群和nginx集群优化的技术。 这本书主要是一些功能的开发,并不研究这块。 我想要对一些应用进行性能优化的书,比如mysql集群和nginx集群优化的技术。 这本书主要是一些功能的开发,并不研究这块。
評分
☆☆☆☆☆
在64位的CentOS 6系统上,大小端转换函数定义如下: (man 3 htonl) SYNOPSIS #include <arpa/inet.h> uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(u...
評分
☆☆☆☆☆
我想要对一些应用进行性能优化的书,比如mysql集群和nginx集群优化的技术。 这本书主要是一些功能的开发,并不研究这块。 我想要对一些应用进行性能优化的书,比如mysql集群和nginx集群优化的技术。 这本书主要是一些功能的开发,并不研究这块。