Linux高性能伺服器編程

《Linux高性能伺服器編程》是2013年機械工業出版社出版的圖書,作者是游雙。

基本介紹

作 者:游雙 著

出 版 社:

出版時間:2013-05-01

所屬分類:圖書 > 計算機與網際網路 > 作業系統

內容簡介

《Linux高性能伺服器編程》是Linux伺服器編程領域的經典著作,由資深Linux軟體開發工程師撰寫,從網路協定、伺服器編程核心要素、原理機制、工具框架等多角度全面闡釋了編寫高性能Linux伺服器套用的方法、技巧和思想。不僅理論全面、深入,抓住了重點和難點,還包含兩個綜合性案例,極具實戰意義。

《Linux高性能伺服器編程》共17章,分為3個部分:第一部分對Linux伺服器編程的核心基礎——TCP/IP協定進行了深入的解讀和闡述,包括TCP/IP協定族、TCP/IP協定,以及一個經典的TCP/IP通信案例;第二部分對高性能伺服器編程的核心要素進行了全面深入的剖析,包含Linux網路編程API、高級I/O函式、Linux伺服器程式規範、高性能伺服器程式框架、I/O復用、信號、定時器、高性能I/O框架庫Libevent、多進程編程、多執行緒編程、進程池和執行緒池等內容,原理、技術與方法並重;第三部分從側重實戰的角度講解了高性能伺服器的最佳化與監測,包含伺服器的調製、調試和測試,以及各種實用系統監測工具的使用等內容。

本書另外免費贈送一個負載均衡伺服器程式的完整實際項目的原始碼!

作者簡介

游 雙,資深Linux軟體開發工程師,對Linux網路編程,尤其是伺服器端的編程,有非常深入的研究,實戰經驗也十分豐富。曾就職於摩托羅拉,擔任高級Linux軟體工程師。此外,他還精通C++、Android、QT等相關的技術。活躍於Chinaunix等專業技術社區,發表了大量關於Linux網路編程的文章,深受社區歡迎 。

目錄

前言

第一篇 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

相關詞條

熱門詞條

聯絡我們