Linux珍藏系列圖書

Linux從入門到精通

第1篇 基 礎 篇.
第1章 Linux概述 2
1.1 Linux的起源和發展 2
1.1.1 Linux的起源 2
1.1.2 追溯到UNIX 2
1.1.3 影響世界的開源潮流 3
1.1.4 GNU公共許可證:GPL 4
1.2 爲什麼選擇Linux 4
1.2.1 作爲服務器 4
1.2.2 作爲桌面 5
1.3 Linux的發行版本 5
1.3.1 不同的發行版本 5
1.3.2 哪種發行版本最好 7
1.3.3 本書選擇的發行版本 7
1.4 Internet上的Linux資源 9
1.5 小結 9
第2章 Linux安裝 11
2.1 安裝前的準備工作 11
2.1.1 我能從哪裏獲得Linux 11
2.1.2 硬件要求 11

.2.1.3 與Windows“同處一室” 12
2.1.4 虛擬機的使用 12
2.1.5 免費的虛擬機軟件:VMware Server 13
2.2 安裝Linux至硬盤 14
2.2.1 第一步:從光驅啓動 14
2.2.2 關於硬盤分區 15
2.2.3 選擇軟件包 19
2.2.4 設置用戶和口令 20
2.2.5 第一次啓動 20
2.3 獲取幫助信息 21
2.4 進階:修復受損的Grub 21
2.4.1 Windows惹的禍 22
2.4.2 使用救援光盤 22
2.4.3 重新安裝Grub 23
2.5 小結 24
第3章 Linux基本配置 26
3.1 關於超級用戶root 26
3.1.1 root可以做什麼 26
3.1.2 避免災難 27
3.1.3 Debian和Ubuntu的root用戶 27
3.2 依賴於發行版本的系統管理工具 28
3.3 中文支持 29
3.4 關於硬件驅動程序 30
3.5 獲得更新 31
3.6 進階:配置Grub 31
3.6.1 Grub的配置文件 31
3.6.2 使用Grub命令行 33
3.7 小結 34
第4章 桌面環境 35
4.1 快速熟悉你的工作環境 35
4.1.1 運行應用程序 35
4.1.2 瀏覽文件系統 35
4.1.3 創建一個文本文件 35
4.2 個性化設置 37
4.2.1 桌面背景和字體 38
4.2.2 屏幕保護程序 39
4.2.3 顯示器分辨率 40
4.2.4 代理服務器 40
4.2.5 鼠標和鍵盤 41
4.2.6 鍵盤快捷鍵 42
4.2.7 登錄界面 43
4.3 進階1:究竟什麼是“桌面” 43
4.3.1 可以卸載的圖形環境 43
4.3.2 X窗口系統的基本組成 44
4.3.3 X系統的啓動過程 45
4.3.4 啓動X應用程序 45
4.3.5 桌面環境:KDE和Gnome誰更好 46
4.4 進階2:配置X服務器 47
4.4.1 理解配置文件 47
4.4.2 配置顯卡 48
4.4.3 配置顯示器 48
4.4.4 聯繫顯卡和顯示器 48
4.4.5 如果顯示出了問題 49
4.5 小結 49
第2篇 系統管理篇
第5章 Shell基本命令 52
5.1 Shell簡介 52
5.2 印刷約定 52
5.3 快速上手:瀏覽你的硬盤 53
5.4 提高效率:使用命令行補全和通配符 54
5.5 查看目錄和文件 56
5.5.1 顯示當前目錄:pwd 56
5.5.2 改變目錄:cd 56
5.5.3 列出目錄內容:ls 57
5.5.4 列出目錄內容:dir和vdir 58
5.5.5 查看文本文件:cat和more 59
5.5.6 閱讀文件的開頭和結尾:head和tail 60
5.5.7 更好的文本閱讀工具:less 61
5.5.8 查找文件內容:grep 62
5.6 我的東西在哪——find命令 63
5.7 更快速地定位文件——locate命令 64
5.8 從終端運行程序 65
5.9 查找特定程序:whereis 65
5.10 用戶及版本信息查看 65
5.11 尋求幫助——man命令 66
5.12 獲取命令簡介:whatis和apropos 67
5.13 小結 68
第6章 文件目錄管理 69
6.1 Linux文件系統的架構 69
6.2 快速上手:和你的團隊共享文件 70
6.3 建立文件和目錄 71
6.3.1 建立目錄:mkdir 71
6.3.2 建立一個空文件:touch 72
6.4 移動、複製和刪除 72
6.4.1 移動和重命名:mv 72
6.4.2 複製文件和目錄:cp 74
6.4.3 刪除目錄和文件:rmdir和rm 74
6.5 文件和目錄的權限 75
6.5.1 權限設置針對的用戶 75
6.5.2 需要設置哪些權限 76
6.5.3 查看文件和目錄的屬性 76
6.5.4 改變文件所有權:chown和chgrp 77
6.5.5 改變文件權限:chmod 78
6.5.6 文件權限的八進制表示 79
6.6 文件類型 79
6.6.1 查看文件類型 80
6.6.2 建立鏈接:ln 80
6.7 輸入輸出重定向和管道 82
6.7.1 輸出重定向 82
6.7.2 輸入重定向 83
6.7.3 管道:

Linux環境C程序設計

目錄回到頂部↑

第1篇 Linux基礎.
第1章 Linux系統概述和安裝 2
1.1 引言 2
1.1.1 GNU項目簡介 2
1.1.2 Linux起源 2
1.1.3 Linux發展現狀 3
1.1.4 免費軟件與開源軟件 4
1.2 Linux內核與版本 4
1.2.1 Linux內核介紹 4
1.2.2 Linux所支持的硬件平臺 5
1.2.3 常用Linux版本 5
1.3 系統安裝 6
1.3.1 安裝前準備 7
1.3.2 系統需求 7
1.3.3 硬盤分區 7
1.3.4 圖形方式安裝Linux 8
1.3.5 升級最新內核 16
1.3.6 安裝中文支持 16
1.4 小結 16
第2章 Linux基本操作 17

.2.1 登錄 17
2.1.1 shell程序 17
2.1.2 控制檯 17
2.1.3 終端 18
2.2 文件和目錄 18
2.2.1 文件系統 19
2.2.2 文件名 20
2.2.3 路徑名 20
2.2.4 工作目錄 21
2.2.5 起始目錄 21
2.3 輸入和輸出 21
2.3.1 文件描述符 21
2.3.2 標準輸入、標準輸出和標準錯誤 21
2.3.3 標準輸入輸出函數 22
2.4 小結 22
第3章 Linux GCC/G++編譯器與調試器 23
3.1 GCC/G++編譯器 23
3.1.1 GCC/G++編譯器安裝 23
3.1.2 GCC/G++編譯命令 23
3.1.3 GCC/G++編譯選項 24
3.1.4 GCC/G++編譯器執行過程 24
3.2 程序和進程 25
3.2.1 程序 25
3.2.2 進程和PID 25
3.3 ANSI C標準 25
3.3.1 函數原型 26
3.3.2 類屬指針 26
3.3.3 原始系統數據類型 26
3.4 編譯hello world 26
3.4.1 使用VI編寫源代碼 27
3.4.2 程序的編譯與連接 27
3.4.3 使用終端運行程序 28
3.5 GDB調試器 28
3.5.1 GDB調試器概述 28
3.5.2 GDB調試器安裝 28
3.5.3 GDB常用調試命令 29
3.5.4 在GDB下運行程序 29
3.5.5 檢查數據 29
3.6 小結 30
第4章 Linux開發環境 31
4.1 文本編輯工具 31
4.1.1 VIM使用方法 31
4.1.2 Emacs使用方法 32
4.2 集成開發環境 33
4.2.1 Eclipse介紹 33
4.2.2 Kdevelop介紹 33
4.3 使用Eclipse開發C/C++語言程序 34
4.3.1 安裝與配置Eclipse 34
4.3.2 Eclipse界面 34
4.3.3 編譯與運行源代碼 35
4.3.4 Debug源代碼 36
4.4 小結 37
第2篇 C/C++語言基礎
第5章 C語言編程基礎 40
5.1 程序設計語言的發展 40
5.1.1 機器語言 40
5.1.2 彙編語言 40
5.1.3 高級語言 40
5.2 C語言的特點 41
5.2.1 C語言是中級語言 41
5.2.2 C語言是結構化語言 42
5.2.3 C語言是程序員的語言 42
5.3 C語言的程序結構 42
5.3.1 基本程序結構 43
5.3.2 函數庫和鏈接 44
5.3.3 開發一個C語言程序 45
5.3.4 C語言的關鍵字 45
5.4 算法 46
5.4.1 流程圖與算法的結構化描述 46
5.4.2 用N-S圖描述算法 48
5.4.3 用PAD圖描述算法 48
5.5 軟件工程概覽 48
5.5.1 認識軟件工程 48
5.5.2 瀑布模型及其改進 50
5.5.3 迭代發佈模型 50
5.5.4 樸素軟件工程思想 51
5.6 小結 52
第6章 數據類型、運算符和表達式 53
6.1 C語言的數據類型 53
6.1.1 基本類型的字長與範圍 53
6.1.2 聚合類型與修飾符 54
6.2 常量與變量 55
6.2.1 標識符命名 55
6.2.2 常量 55
6.2.3 變量 56
6.3 整型數據 56
6.3.1 整型常量 57
6.3.2 整型變量 57
6.4 浮點型數據 58
6.4.1 浮點型常量 58
6.4.2 浮點型變量 58
6.5 字符型數據 58
6.5.1 字符常量 59
6.5.2 字符串常量 59
6.5.3 轉義字符 59
6.5.4 符號常量 60
6.5.5 字符變量 60
6.6 運算符 61
6.6.1 算術運算符 61
6.6.2 自增和自減 61
6.6.3 關係和邏輯運算符 62
6.6.4 位操作符 63
6.6.5 問號操作符 63
6.6.6 逗號操作符 64
6.6.7 優先級 64
6.7 表達式 65
6.7.1 表達式中的類型轉換 65
6.7.2 構成符cast 65
6.7.3 空格與括號 65
6.7.4 C語言中的簡寫形式 66
6.8 C語言的預處理命令 66
6.8.1 宏替換命令 66
6.8.2 終止編譯命令 67
6.8.3 文件包含命令 67
6.8.4 條件編譯命令 68
6.8.5 修改行號命令 69
6.8.6 編譯指示命令 70
6.8.7 預定義的宏名 70
6.8.8 註釋 71
6.9 小結 71
第7章 程序控制結構 72
7.1 程序的3種基本結構 72
7.2 數據的輸入與輸出 72
7.2.1 scanf()函數 72
7.2.2 printf()函數 74
7.2.3 getchar()函數與putchar()函數 75
7.3 條件控制語句 76
7.3.1 if語句 76
7.3.2 switch語句 77
7.4 循環控制語句 78
7.4.1 while語句 78
7.4.2 do-while語句 79
7.4.3 for語句 80
7.4.4 break與continue語句 80
7.5 媒體播放器——建立程序結構 81
7.5.1 編寫僞代碼 82
7.5.2 建立媒體播放器程序結構 82
7.6 小結 85
第8章 數組與指針 86
8.1 一維數組 86
8.1.1 一維數組的一般形式 86
8.1.2 字符串使用的一維數組 88
8.2 二維數組 89
8.2.1 二維數組的一般形式 89
8.2.2 二維字符串數組 89
8.3 多維數組 90
8.4 指針與指針變量 91
8.5 指針變量的定義與引用 92
8.5.1 指針變量的定義 92
8.5.2 指針變量的引用 93
8.6 指針與數組 94
8.6.1 指針與一維數組 94
8.6.2 指針與二維數組 95
8.6.3 指針與字符串數組 96
8.7 指針的地址分配 96
8.8 指針數組 97
8.9 指向指針的指針 97
8.10 媒體播放器——建立播放列表 98
8.10.1 建立一個播放列表 98
8.10.2 對播放列表排序 103
8.11 小結 104
第9章 函數 105
9.1 函數說明與返回值 105
9.1.1 函數的類型說明 105
9.1.2 返回語句 106
9.2 函數的作用域規則 107
9.2.1 局部變量 107
9.2.2 全局變量 108
9.2.3 動態存儲變量 109
9.2.4 靜態存儲變量 110
9.3 函數的調用與參數 110
9.3.1 形式參數與實際參數 110
9.3.2 賦值調用與引用調用 111
9.4 遞歸 111
9.5 實現問題 112
9.5.1 參數和通用函數 113
9.5.2 效率 113
9.6 函數庫和文件 113
9.6.1 程序文件的大小 114
9.6.2 分類組織文件 114
9.6.3 函數庫 115
9.7 main()函數的參數 116
9.8 媒體播放器——建立核心控制模塊 117
9.8.1 通過函數傳遞參數 117
9.8.2 建立媒體播放器核心控制模塊 120
9.9 小結 124
第10章 字符及字符串處理 125
10.1 字符編碼 125
10.1.1 ASCII編碼 125
10.1.2 Unicode編碼 126
10.2 字符處理庫 126
10.3 字符串轉換函數 127
10.4 字符串處理函數 129
10.5 字符串比較函數 130
10.6 字符串查找函數 131
10.7 字符串內存函數 132
10.8 字符串其他函數 134
10.9 媒體播放器——實現播放列表檢索功能 134
10.9.1 對播放列表中整個字符串進行排序 134
10.9.2 在播放列表中查找字符串 135
10.10 小結 140
第11章 結構體與共用體 141
11.1 結構體類型變量的定義和引用 141
11.1.1 結構體類型變量的定義 141
11.1.2 結構體類型變量的引用 142
11.1.3 結構體類型變量的初始化 143
11.2 結構體數組的定義和引用 144
11.3 結構體指針的定義和引用 144
11.3.1 指向結構體類型變量的使用 145
11.3.2 指向結構體類型數組的指針的使用 145
11.4 共用體 146
11.4.1 共用體的定義 146
11.4.2 共用體變量的引用 147
11.5 媒體播放器——建立媒體庫 148
11.5.1 設計媒體庫中的數據結構 148
11.5.2 媒體庫的基本操作 151
11.5.3 添加文件到媒體庫 153
11.5.4 在媒體庫中查找文件 155
11.5.5 從媒體庫刪除選定文件 157
11.5.6 從媒體庫刪除所有文件 158
11.6 小結 158
第12章 C++語言編程基礎 159
12.1 類和數據抽象 159
12.1.1 用類實現數據抽象 159
12.1.2 類作用域和訪問類成員 161
12.1.3 從實現中分離接口 161
12.1.4 控制訪問成員 162
12.1.5 構造函數和析構函數 162
12.1.6 const對象和const成員函數 163
12.1.7 friend對象和friend類 163
12.1.8 this指針 165
12.1.9 動態內存分配 165
12.1.10 static類成員 165
12.2 C++特性 166
12.2.1 運算符重載 166
12.2.2 繼承 167
12.2.3 虛擬函數和多態性 168
12.2.4 流輸入與輸出 169
12.2.5 模板 169
12.2.6 異常處理 170
12.3 小結 170
第3篇 Linux系統編程
第13章 文件操作 172
13.1 文件屬性與權限 172
13.1.1 文件屬性 172
13.1.2 文件權限 173
13.1.3 管理文件權限 173
13.2 文件管理 174
13.2.1 系統調用原理 174
13.2.2 打開文件、新建文件和關閉文件操作 174
13.2.3 文件狀態和屬性操作 177
13.2.4 目錄操作 179
13.2.5 刪除目錄或文件操作 181
13.2.6 錯誤處理 182
13.3 媒體播放器——增強媒體庫功能 182
13.3.1 添加目錄到媒體庫 183
13.3.2 搜索本地磁盤中所有媒體文件 184
13.4 小結 184
第14章 文件I/O操作 185
14.1 非緩衝文件操作 185
14.1.1 使用read()讀取文件 185
14.1.2 使用write()寫入文件 186
14.1.3 隨機讀寫文件 187
14.2 緩衝文件操作 188
14.2.1 打開與關閉文件流 188
14.2.2 讀取與寫入文件流 189
14.2.3 文件流的格式化輸入與輸出 191
14.2.4 文件流的定位操作 192
14.2.5 文件流操作的其他函數 193
14.2.6 文件流操作的錯誤處理 193
14.3 媒體播放器——完善播放列表 194
14.3.1 讀取播放列表文件 194
14.3.2 將播放列表保存爲文件 196
14.4 小結 197
第15章 進程控制 198
15.1 進程的基本概念 198
15.1.1 進程狀態和狀態轉換 199
15.1.2 進程控制 201
15.1.3 進程調度 202
15.2 進程基本操作 202
15.2.1 fork系統調用 202
15.2.2 exec系統調用 204
15.2.3 exit系統調用 205
15.2.4 wait系統調用 206
15.2.5 sleep函數調用 207
15.3 進程的特殊操作 207
15.3.1 獲得進程ID 207
15.3.2 setuid和setgid系統調用 208
15.3.3 setpgrp和setpgid系統調用 208
15.3.4 chdir系統調用 209
15.3.5 chroot系統調用 209
15.3.6 nice系統調用 209
15.4 小結 209
第16章 進程間通信 210
16.1 進程間使用管道通信 210
16.1.1 pipe系統調用 211
16.1.2 dup系統調用 212
16.2 進程間使用D-Bus通信 213
16.2.1 D-Bus的基本概念 213
16.2.2 D-Bus的用例 214
16.3 媒體播放器——完善退出和音量控制功能 217
16.3.1 媒體播放器在桌面環境退出時響應 217
16.3.2 調整系統音量 218
16.4 小結 220
第17章 線程控制 221
17.1 線程基本概念 221
17.2 線程的實現 221
17.2.1 用戶態線程 222
17.2.2 內核態線程 222
17.3 POSIX線程庫 222
17.3.1 創建線程 222
17.3.2 結束線程 223
17.4 同步 226
17.4.1 用信號量進行同步 226
17.4.2 用互斥量進行同步 228
17.5 取消線程 230
17.6 多線程的實現 231
17.7 小結 233
第4篇 Linux網絡編程與數據庫編程
第18章 網絡編程基礎 236
18.1 計算機網絡組成 236
18.1.1 網絡結構 236
18.1.2 OSI 參考模型 238
18.1.3 TCP/IP參考模型 238
18.2 TCP/IP協議.. 240
18.2.1 IP協議與Internet 240
18.2.2 IP互聯網協議地址 241
18.2.3 TCP協議 242
18.2.4 UDP協議 243
18.3 Socket套接字 244
18.3.1 Socket套接字簡介 244
18.3.2 創建套接字 245
18.3.3 套接字地址 246
18.3.4 套接字的名字 247
18.3.5 創建套接字隊列 247
18.3.6 接受連接 248
18.3.7 請求連接 248
18.3.8 關閉連接 249
18.3.9 套接字通信 249
18.4 網絡通信 251
18.4.1 查詢主機名稱 251
18.4.2 Internet守護進程 253
18.5 小結 254
第19章 網絡編程函數庫 255
19.1 HTTP與FTP函數庫 255
19.1.1 libcurl函數庫簡介 255
19.1.2 libcurl中的主要函數 256
19.1.3 使用libcurl實現簡單的HTTP訪問 258
19.2 SMTP、POP與IMAP函數庫 259
19.2.1 使用libESMTP函數庫實現電子郵件發送 260
19.2.2 使用libspopc函數庫實現POP訪問 261
19.2.3 使用mailutils函數庫實現IMAP訪問 263
19.3 即時通信函數庫 264
19.3.1 libpurple函數庫簡介 264
19.3.2 即時通信軟件工作機制 264
19.3.3 使用libpurple函數庫接入服務器 266
19.4 小結 272
第20章 數據庫 273
20.1 數據的存儲與訪問 273
20.1.1 使用數據文件 273
20.1.2 使用數據庫 277
20.2 Berkeley DB數據包 279
20.2.1 Berkeley DB數據包簡介 279
20.2.2 Berkeley DB數據包連接和使用 282
20.2.3 Berkeley DB數據包訪問 287
20.2.4 Berkeley DB數據包中的遊標 289
20.3 PostgreSQL數據庫服務器介紹 292
20.3.1 PostgreSQL基本概念 292
20.3.2 數據庫連接函數 294
20.3.3 命令執行函數 299
20.3.4 檢索查詢結果函數 303
20.4 小結 306
第21章 Linux系統常用數據庫及接口 307
21.1 SQLite數據庫 307
21.1.1 SQLite簡介 307
21.1.2 連接SQLite數據庫 309
21.1.3 SQLite命令執行函數 312
21.1.4 SQLite檢索查詢結果函數 314
21.2 MySQL數據庫 316
21.2.1 MySQL簡介 316
21.2.2 連接MySQL數據庫 318
21.2.3 查詢MySQL數據庫 321
21.2.4 處理MySQL查詢結果 322
21.3 大型數據庫與通用數據庫接口 325
21.3.1 連接Oracle數據庫 325
21.3.2 通用數據庫接口 328
21.4 媒體播放器——媒體庫的數據庫實現 334
21.4.1 建立和連接數據庫 335
21.4.2 建立媒體庫數據表 336
21.4.3 管理媒體庫數據表 337
21.5 小結 341
第5篇 Linux界面開發
第22章 界面開發基礎 344
22.1 Linux常用桌面環境 344
22.1.1 GNOME桌面環境 344
22.1.2 KDE桌面環境 346
22.1.3 移動設備與HILDON桌面環境 348
22.2 GTK+圖形環境介紹 349
22.3 GLib庫介紹 350
22.3.1 基礎類型 351
22.3.2 對核心應用的支持 351
22.3.3 實用功能 353
22.3.4 數據類型 353
22.4 GObject對象介紹 354
22.4.1 對象系統 355
22.4.2 GObject系統中宏定義 356
22.4.3 GTypeInfo結構 358
22.4.4 信號機制 359
22.5 2D圖形引擎Cairo介紹 359
22.6 多媒體庫GStreamer介紹 361
22.6.1 過濾器 362
22.6.2 襯墊 363
22.6.3 箱櫃 365
22.6.4 精靈襯墊 366
22.7 搭建GTK+開發環境 367
22.8 小結 370
第23章 界面構件開發 371
23.1 常用界面構件 371
23.1.1 按鈕構件 371
23.1.2 調整對象 374
23.1.3 範圍構件 374
23.1.4 標籤構件 375
23.1.5 箭頭構件 376
23.1.6 工具提示對象 377
23.1.7 進度條 377
23.1.8 對話框 378
23.1.9 標尺 379
23.1.10 狀態欄 381
23.1.11 文本輸入構件 382
23.1.12 微調按鈕 384
23.1.13 組合輸入框 387
23.1.14 日曆 389
23.1.15 顏色選擇 391
23.1.16 文件選擇 394
23.2 複合構件 396
23.2.1 快捷標籤 396
23.2.2 繪圖區 399
23.2.3 字體選擇對話框 407
23.2.4 消息對話框 411
23.2.5 圖像構件 413
23.2.6 文本視區 417
23.3 菜單構件 418
23.3.1 菜單欄 418
23.3.2 菜單構件 419
23.3.3 菜單項 421
23.3.4 圖形菜單項 424
23.3.5 複選菜單項 426
23.3.6 單選菜單項 428
23.3.7 分隔菜單項 429
23.4 RC文件 429
23.4.1 使用RC文件 430
23.4.2 RC文件格式 431
23.5 小結 434
第24章 界面佈局 435
24.1 界面佈局基本概念 435
24.1.1 界面的寬度與高度 435
24.1.2 窗體基本組成 437
24.1.3 佈局約定 439
24.2 組裝盒構件 441
24.2.1 組裝盒的原理 441
24.2.2 組裝盒示範程序 442
24.2.3 表組裝的原理 444
24.2.4 表組裝示例 445
24.3 容器 447
24.3.1 事件盒 447
24.3.2 對齊構件 448
24.3.3 固定容器 450
24.3.4 佈局容器 451
24.3.5 框架構件 453
24.3.6 比例框架 455
24.3.7 分欄窗體構件 456
24.3.8 視角構件 457
24.3.9 滾動條窗體 458
24.3.10 按鈕盒 459
24.3.11 工具欄 462
24.3.12 筆記本 464
24.4 媒體播放器——實現界面 469
24.4.1 使用原型法設計媒體播放器界面 469
24.4.2 編寫媒體播放器界面代碼 472
24.5 小結 481
第25章 信號與事件處理 482
25.1 信號函數與回調函數 482
25.1.1 信號函數 482
25.1.2 回調函數 486
25.2 常用GTK+信號與事件 488
25.2.1 GtkObject類信號 488
25.2.2 GtkWidget界面構件信號 489
25.2.3 GtkWindow窗體構件信號 498
25.2.4 GtkContainer容器構件信號 499
25.2.5 GtkCalendar日曆構件信號 499
25.2.6 GtkTextView文本視區構件信號 500
25.3 小結 501
第26章 Glade設計程序界面 502
26.1 Glade簡介 502
26.2 構造圖形界面 503
26.2.1 添加窗體 503
26.2.2 添加容器 509
26.2.3 添加構件 516
26.2.4 設置構件屬性 519
26.2.5 添加事件和回調 520
26.3 C語言代碼聯編 522
26.3.1 libglade函數庫編程基礎 522
26.3.2 使用libglade多語言支持 524
26.4 小結 528
第6篇 Linux環境C編程項目實踐
第27章 媒體播放器——項目完整實踐 530
27.1 軟件工程實戰 530
27.1.1 項目需求分析 530
27.1.2 軟件需求說明 531
27.1.3 項目視圖的解決方案 532
27.2 軟件設計 533
27.2.1 需求分析 533
27.2.2 制訂開發計劃 534
27.2.3 分工協作 535
27.3 版本控制 536
27.3.1 CVS服務器配置 536
27.3.2 CVS服務器管理 537
27.4 在Eclipse中使用CVS客戶端 540
27.4.1 從CVS服務器簽出模塊並創建項目 541
27.4.2 簽入文件 543
27.4.3 使用Eclipse項目創建CVS模塊 544
27.4.4 比較文件 545
27.4.5 管理CVS服務器 545
27.4.6 斷開項目與CVS服務器之間的關聯 546
27.5 音量控制對話框 547
27.5.1 創建對話框 547
27.5.2 添加垂直比例尺 547
27.5.3 測試 548
27.6 播放列表對話框 550
27.6.1 創建對話框 550
27.6.2 創建工具條和工具條按鈕 551
27.6.3 創建樹視圖 552
27.6.4 創建對話框按鈕 553
27.6.5 測試 553
27.7 媒體庫對話框 554
27.7.1 創建對話框 555
27.7.2 創建工具條和工具條按鈕 555
27.7.3 創建分類部件和媒體信息顯示部件 557
27.7.4 創建搜索部件 559
27.7.5 創建對話框按鈕 559
27.7.6 測試 560
27.8 播放控制模塊實現 562
27.8.1 播放控制模塊程序結構 562
27.8.2 MP3播放功能實現 564
27.8.3 播放中的回調處理 567
27.9 系統集成 569
27.10 主程序文件實現 570
27.10.1 頭文件和主函數入口 570
27.10.2 媒體庫模塊初始化 571
27.10.3 圖形界面初始化 571
27.10.4 退出前清理 572
27.10.5 編譯和運行 572
27.11 媒體庫功能集成 572
27.11.1 初始化 573
27.11.2 顯示媒體庫對話框 573
27.11.3 添加文件 580
27.11.4 添加目錄 582
27.11.5 刪除文件信息 584
27.11.6 刪除所有文件信息 585
27.11.7 搜索本地文件 586
27.11.8 傳遞到播放列表 587
27.11.9 查找 589
27.12 播放列表功能集成 590
27.12.1 初始化 590
27.12.2 顯示播放列表對話框 591
27.12.3 添加文件 593
27.12.4 添加目錄 595
27.12.5 打開文件 596
27.12.6 保存文件 597
27.12.7 刪除文件 598
27.12.8 刪除全部 600
27.12.9 排序 600
27.13 播放控制模塊集成 601
27.13.1 播放模式設置 601
27.13.2 開始播放 602
27.13.3 暫停播放 603
27.13.4 停止播放 603
27.13.5 播放上一首 603
27.13.6 播放下一首 604
27.14 小結... 605

Linux網絡編程

目錄回到頂部↑

第1篇 Linux網絡開發基礎.
第1章 Linux操作系統概述 2
1.1 Linux發展歷史 2
1.1.1 Linux的誕生和發展 2
1.1.2 Linux名稱的由來 3
1.2 Linux的發展要素 3
1.2.1 UNIX操作系統 4
1.2.2 Minix操作系統 4
1.2.3 POSIX 標準 4
1.3 Linux與UNIX的異同 5
1.4 操作系統類型選擇和內核版本的選擇 5
1.4.1 常見的不同公司發行的Linux異同 6
1.4.2 內核版本的選擇 6
1.5 Linux的系統架構 7
1.5.1 Linux內核的主要模塊 7
1.5.2 Linux的文件結構 9
1.6 GNU通用公共許可證 10
1.6.1 GPL許可證的歷史 10
1.6.2 GPL的自由理念 10
1.6.3 GPL的基本條款 11

.1.6.4 關於GPL許可證的爭議 12
1.7 Linux軟件開發的可借鑑之處 12
1.8 小結 13
第2章 Linux編程環境 14
2.1 Linux環境下的編輯器 14
2.1.1 vim使用簡介 14
2.1.2 使用vim建立文件 15
2.1.3 使用vim編輯文本 16
2.1.4 vim的格式設置 18
2.1.5 vim配置文件.vimrc 19
2.1.6 使用其他編輯器 19
2.2 Linux下的GCC編譯器工具集 19
2.2.1 GCC簡介 19
2.2.2 編譯程序的基本知識 21
2.2.3 單個文件編譯成執行文件 22
2.2.4 編譯生成目標文件 22
2.2.5 多文件編譯 23
2.2.6 預處理 24
2.2.7 編譯成彙編語言 24
2.2.8 生成和使用靜態鏈接庫 25
2.2.9 生成動態鏈接庫 26
2.2.10 動態加載庫 29
2.2.11 GCC常用選項 31
2.2.12 編譯環境的搭建 33
2.3 Makefile文件簡介 34
2.3.1 一個多文件的工程例子 34
2.3.2 多文件工程的編譯 36
2.3.3 Makefile的規則 37
2.3.4 Makefile中使用變量 39
2.3.5 搜索路徑 43
2.3.6 自動推導規則 44
2.3.7 遞歸make 44
2.3.8 Makefile中的函數 46
2.4 用GDB調試程序 47
2.4.1 編譯可調試程序 48
2.4.2 使用GDB調試程序 49
2.4.3 GDB常用命令 52
2.4.4 其他的GDB 59
2.5 小結 60
第3章 文件系統簡介 61
3.1 Linux下的文件系統 61
3.1.1 Linux下文件的內涵 61
3.1.2 文件系統的創建 62
3.1.3 掛接文件系統 64
3.1.4 索引節點inode 65
3.1.5 普通文件 66
3.1.6 設備文件 66
3.1.7 虛擬文件系統VFS 68
3.2 文件的通用操作方法 72
3.2.1 文件描述符 72
3.2.2 打開創建文件open()、create()函數 72
3.2.3 關閉文件close()函數 76
3.2.4 讀取文件read()函數 77
3.2.5 寫文件write()函數 79
3.2.6 文件偏移lseek()函數 80
3.2.7 獲得文件狀態fstat()函數 83
3.2.8 文件空間映射mmap()函數 85
3.2.9 文件屬性fcntl()函數 88
3.2.10 文件輸入輸出控制ioctl()函數 92
3.3 socket文件類型 93
3.4 小結 93
第4章 程序、進程和線程 94
4.1 程序、進程和線程的概念 94
4.1.1 程序和進程的差別 94
4.1.2 Linux環境下的進程 95
4.1.3 進程和線程 96
4.2 進程產生的方式 96
4.2.1 進程號 96
4.2.2 進程複製fork() 97
4.2.3 system()方式 98
4.2.4 進程執行exec()函數系列 99
4.2.5 所有用戶態進程的產生進程init 100
4.3 進程間通信和同步 101
4.3.1 半雙工管道 101
4.3.2 命名管道 107
4.3.3 消息隊列 108
4.3.4 消息隊列的一個例子 114
4.3.5 信號量 116
4.3.6 共享內存 121
4.3.7 信號 124
4.4 Linux下的線程 127
4.4.1 多線程編程實例 127
4.4.2 Linux下線程創建函數pthread_create() 129
4.4.3 線程的結束函數pthread_join()和pthread_exit() 129
4.4.4 線程的屬性 130
4.4.5 線程間的互斥 132
4.4.6 線程中使用信號量 133
4.5 小結 136
第2篇 Linux用戶層網絡編程
第5章 TCP/IP協議族簡介 138
5.1 OSI網絡分層介紹 138
5.1.1 OSI網絡分層結構 138
5.1.2 OSI的7層網絡結構 139
5.1.3 OSI參考模型中的數據傳輸 140
5.2 TCP/IP協議棧 141
5.2.1 TCP/IP協議棧參考模型 141
5.2.2 主機到網絡層協議 143
5.2.3 IP協議 144
5.2.4 網際控制報文協議(ICMP) 146
5.2.5 傳輸控制協議(TCP) 150
5.2.6 用戶數據報文協議(UDP) 154
5.2.7 地址解析協議(ARP) 156
5.3 IP地址分類與TCP/UDP端口 158
5.3.1 因特網中IP地址的分類 159
5.3.2 子網掩碼(subnet mask address) 161
5.3.3 IP地址的配置 162
5.3.4 端口 163
5.4 主機字節序和網絡字節序 163
5.4.1 字節序的含義 164
5.4.2 網絡字節序的轉換 164
5.5 小結 166
第6章 應用層網絡服務程序簡介 167
6.1 HTTP協議和服務 167
6.1.1 HTTP協議概述 167
6.1.2 HTTP協議的基本過程 168
6.2 FTP協議和服務 170
6.2.1 FTP協議概述 170
6.2.2 FTP協議的工作模式 172
6.2.3 FTP協議的傳輸方式 172
6.2.4 一個簡單的FTP過程 173
6.2.5 常用的FTP工具 173
6.3 TELNET協議和服務 174
6.3.1 遠程登錄的基本概念 174
6.3.2 使用TELNET協議進行遠程登錄的工作過程 174
6.3.3 TELNET協議 174
6.4 NFS協議和服務 176
6.4.1 安裝NFS服務器和客戶端 176
6.4.2 服務器端的設定 176
6.4.3 客戶端的操作 177
6.4.4 showmount命令 177
6.5 自定義網絡服務 177
6.5.1 xinetd/inetd 178
6.5.2 xinetd服務配置 178
6.5.3 自定義網絡服務 179
6.6 小結 180
第7章 TCP網絡編程基礎 181
7.1 套接字編程基礎知識 181
7.1.1 套接字地址結構 181
7.1.2 用戶層和內核層交互過程 183
7.2 TCP網絡編程流程 184
7.2.1 TCP網絡編程架構 184
7.2.2 創建網絡插口函數socket() 186
7.2.3 綁定一個地址端口對bind() 189
7.2.4 監聽本地端口listen 192
7.2.5 接受一個網絡請求accept() 194
7.2.6 連接目標網絡服務器connect() 199
7.2.7 寫入數據函數write() 200
7.2.8 讀取數據函數read() 201
7.2.9 關閉套接字函數close() 201
7.3 服務器/客戶端的簡單例子 202
7.3.1 例子功能描述 202
7.3.2 服務器網絡程序 203
7.3.3 服務器讀取和顯示字符串 205
7.3.4 客戶端的網絡程序 205
7.3.5 客戶端讀取和顯示字符串 206
7.3.6 編譯運行程序 206
7.4 截取信號的例子 207
7.4.1 信號處理 207
7.4.2 信號SIGPIPE 208
7.4.3 信號SIGINT 208
7.5 小結 208
第8章 服務器和客戶端信息的獲取 210
8.1 字節序 210
8.1.1 大端字節序和小端字節序 210
8.1.2 字節序轉換函數 212
8.1.3 一個字節序轉換的例子 214
8.2 字符串IP地址和二進制IP地址的轉換 217
8.2.1 inet_xxx()函數 217
8.2.2 inet_pton()和inet_ntop()函數 219
8.2.3 使用8.2.1節地址轉換函數的例子 220
8.2.4 使用函數inet_pton()和函數inet_ntop()的例子 223
8.3 套接字描述符判定函數issockettype() 223
8.3.1 進行文件描述符判定的函數issockettype() 224
8.3.2 main()函數 224
8.4 IP地址與域名之間的相互轉換 225
8.4.1 DNS原理 225
8.4.2 獲取主機信息的函數 226
8.4.3 使用主機名獲取主機信息的例子 228
8.4.4 函數gethostbyname()不可重入的例子 230
8.5 協議名稱處理函數 232
8.5.1 xxxprotoxxx()函數 232
8.5.2 使用協議族函數的例子 233
8.6 小結 236
第9章 數據的IO和複用 237
9.1 IO函數 237
9.1.1 使用recv()函數接收數據 237
9.1.2 使用send()函數發送數據 239
9.1.3 使用readv()函數接收數據 240
9.1.4 使用writev()函數發送數據 240
9.1.5 使用recvmsg()函數接收數據 242
9.1.6 使用sendmsg()函數發送數據 244
9.1.7 IO函數的比較 246
9.2 使用IO函數的例子 246
9.2.1 客戶端處理框架的例子 246
9.2.2 服務器端程序框架 248
9.2.3 使用recv()和send()函數 249
9.2.4 使用readv()和write()函數 251
9.2.5 使用recvmsg()和sendmsg()函數 253
9.3 IO模型 256
9.3.1 阻塞IO模型 256
9.3.2 非阻塞IO模型 257
9.3.3 IO複用 257
9.3.4 信號驅動IO模型 258
9.3.5 異步IO模型 258
9.4 select()函數和pselect()函數 259
9.4.1 select()函數 259
9.4.2 pselect()函數 261
9.5 poll()函數和ppoll()函數 262
9.5.1 poll()函數 263
9.5.2 ppoll()函數 264
9.6 非阻塞編程 264
9.6.1 非阻塞方式程序設計介紹 264
9.6.2 非阻塞程序設計的例子 264
9.7 小結 266
第10章 基於UDP協議的接收和發送 267
10.1 UDP編程框架 267
10.1.1 UDP編程框圖 267
10.1.2 UDP服務器編程框架 269
10.1.3 UDP客戶端編程框架 269
10.2 UDP協議程序設計的常用函數 270
10.2.1 建立套接字socket()和綁定套接字bind() 270
10.2.2 接收數據recvfrom()/recv() 270
10.2.3 發送數據sendto()/send() 275
10.3 UDP接收和發送數據的例子 279
10.3.1 UDP服務器端 279
10.3.2 UDP服務器端數據處理 280
10.3.3 UDP客戶端 281
10.3.4 UDP客戶端數據處理 281
10.3.5 測試UDP程序 282
10.4 UDP協議程序設計中的幾個問題 282
10.4.1 UDP報文丟失數據 282
10.4.2 UDP數據發送中的亂序 284
10.4.3 UDP協議中的connect()函數 287
10.4.4 UDP缺乏流量控制 287
10.4.5 UDP協議中的外出網絡接口 289
10.4.6 UDP協議中的數據報文截斷 290
10.5 小結 291
第11章 高級套接字 292
11.1 UNIX域函數 292
11.1.1 UNIX域函數的地址結構 292
11.1.2 套接字函數 293
11.1.3 使用UNIX域函數進行套接字編程 293
11.1.4 傳遞文件描述符 296
11.1.5 socketpair()函數 296
11.1.6 傳遞文件描述符的例子 297
11.2 廣播 302
11.2.1 廣播的IP地址 302
11.2.2 廣播與單播的比較 303
11.2.3 廣播的示例 304
11.3 多播 310
11.3.1 多播的概念 310
11.3.2 廣域網的多播 311
11.3.3 多播的編程 311
11.3.4 內核中的多播 313
11.3.5 一個多播例子的服務器端 317
11.3.6 一個多播例子的客戶端 318
11.4 數據鏈路層訪問 319
11.4.1 SOCK_PACKET類型 319
11.4.2 設置套接口以捕獲鏈路幀的編程方法 320
11.4.3 從套接口讀取鏈路幀的編程方法 321
11.4.4 定位IP包頭的編程方法 322
11.4.5 定位TCP報頭的編程方法 323
11.4.6 定位UDP報頭的編程方法 325
11.4.7 定位應用層報文數據的編程方法 326
11.4.8 使用SOCK_PACKET編寫ARP請求程序的例子 326
11.5 小結 329
第12章 套接字選項 330
12.1 獲取和設置套接字選項getsocketopt()/setsocketopt() 330
12.1.1 getsockopt()函數和setsocketopt()函數的介紹 330
12.1.2 套接字選項 331
12.1.3 套接字選項簡單示例 332
12.2 SOL_SOCKET協議族選項 336
12.2.1 SO_BROADCAST廣播選項 336
12.2.2 SO_DEBUG調試選項 337
12.2.3 SO_DONTROUTE不經過路由選項 337
12.2.4 SO_ERROR錯誤選項 338
12.2.5 SO_KEEPALIVE保持連接選項 338
12.2.6 SO_LINGER緩衝區處理方式選項 339
12.2.7 SO_OOBINLINE帶外數據處理方式選項 342
12.2.8 SO_RCVBUF和SO_SNDBUF緩衝區大小選項 342
12.2.9 SO_RCVLOWAT和SO_SNDLOWAT緩衝區下限選項 343
12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收發超時選項 343
12.2.11 SO_REUSERADDR地址重用選項 344
12.2.12 SO_EXCLUSIVEADDRUSE端口獨佔選項 344
12.2.13 SO_TYPE套接字類型選項 345
12.2.14 SO_BSDCOMPAT與BSD套接字兼容選項 345
12.2.15 SO_BINDTODEVICE套接字網絡接口綁定選項 345
12.2.16 SO_PRIORITY套接字優先級選項 346
12.3 IPPROTO_IP選項 347
12.3.1 IP_HDRINCL選項 347
12.3.2 IP_OPTNIOS選項 347
12.3.3 IP_TOS選項 347
12.3.4 IP_TTL選項 347
12.4 IPPROTO_TCP選項 348
12.4.1 TCP_KEEPALIVE選項 348
12.4.2 TCP_MAXRT選項 348
12.4.3 TCP_MAXSEG選項 349
12.4.4 TCP_NODELAY和TCP_CORK選項 349
12.5 使用套接字選項 351
12.5.1 設置和獲取緩衝區大小 351
12.5.2 獲取套接字類型的例子 355
12.5.3 使用套接字選項的綜合例子 356
12.6 ioctl()函數 361
12.6.1 ioctl()函數的命令選項 361
12.6.2 ioctl()函數的IO請求 363
12.6.3 ioctl()函數的文件請求 365
12.6.4 ioctl()函數的網絡接口請求 365
12.6.5 使用ioctl()函數對ARP高速緩存操作 372
12.6.6 使用ioctl()函數發送路由表請求 374
12.7 fcntl()函數 374
12.7.1 fcntl()函數的選項 375
12.7.2 使用fcntl()函數修改套接字非阻塞屬性 375
12.7.3 使用fcntl()函數設置信號屬主 376
12.8 小結 376
第13章 原始套接字 377
13.1 概述 377
13.2 原始套接字的創建 379
13.2.1 SOCK_RAW選項 379
13.2.2 IP_HDRINCL套接字選項 379
13.2.3 不需要bind()函數 380
13.3 原始套接字發送報文 380
13.4 原始套接字接收報文 380
13.5 原始套接字報文處理時的結構 381
13.5.1 IP頭部的結構 381
13.5.2 ICMP頭部結構 382
13.5.3 UDP頭部結構 384
13.5.4 TCP頭部結構 386
13.6 ping的例子 387
13.6.1 協議格式 388
13.6.2 校驗和函數 389
13.6.3 設置ICMP發送報文的頭部 390
13.6.4 剝離ICMP接受報文的頭部 391
13.6.5 計算時間差 392
13.6.6 發送報文 393
13.6.7 接收報文 394
13.6.8 主函數過程 395
13.6.9 主函數main() 397
13.6.10 編譯測試 400
13.7 洪水攻擊 400
13.8 ICMP洪水攻擊 401
13.8.1 ICMP洪水攻擊的原理 401
13.8.2 ICMP洪水攻擊的例子 401
13.9 UDP洪水攻擊 405
13.10 SYN洪水攻擊 409
13.10.1 SYN洪水攻擊的原理 409
13.10.2 SYN洪水攻擊的例子 409
13.11 小結 413
第14章 服務器模型選擇 414
14.1 循環服務器 414
14.1.1 UDP循環服務器 414
14.1.2 TCP循環服務器 417
14.2 簡單併發服務器 420
14.2.1 併發服務器的模型 420
14.2.2 UDP併發服務器 420
14.2.3 TCP併發服務器 423
14.3 TCP的高級併發服務器模型 426
14.3.1 單客戶端單進程,統一accept() 426
14.3.2 單客戶端單線程,統一accept() 429
14.3.3 單客戶端單線程,各線程獨自accept(),使用互斥鎖 431
14.4 IO複用循環服務器 435
14.4.1 IO複用循環服務器模型介紹 435
14.4.2 IO複用循環服務器模型的例子 436
14.5 小結 440
第15章 IPv6簡介 441
15.1 IPv4的缺陷 441
15.2 IPv6的特點 442
15.3 IPv6的地址 443
15.3.1 IPv6的單播地址 443
15.3.2 可聚集全球單播地址 443
15.3.3 本地使用單播地址 444
15.3.4 兼容性地址 445
15.3.5 IPv6多播地址 446
15.3.6 IPv6任播地址 446
15.3.7 主機的多個IPv6地址 447
15.4 IPv6的頭部 447
15.4.1 IPv6頭部格式 447
15.4.2 與IPv4頭部的對比 448
15.4.3 IPv6的TCP頭部 449
15.4.4 IPv6的UDP頭部 449
15.4.5 IPv6的ICMP頭部 449
15.5 IPv6運行環境 451
15.5.1 加載IPv6模塊 451
15.5.2 查看是否支持IPv6 452
15.6 IPv6的結構定義 453
15.6.1 IPv6的地址族和協議族 453
15.6.2 套接字地址結構 453
15.6.3 地址兼容考慮 455
15.6.4 IPv6通用地址 455
15.7 IPv6的套接字函數 456
15.7.1 socket()函數 456
15.7.2 沒有發生改變的函數 456
15.7.3 發生改變的函數 457
15.8 IPv6的套接字選項 457
15.8.1 IPv6的套接字選項 457
15.8.2 單播跳限IPV6_UNICAST_HOPS 459
15.8.3 發送和接收多播包 459
15.8.4 IPv6中獲得時間戳的ioctl命令 460
15.9 IPv6的庫函數 460
15.9.1 地址轉換函數的差異 460
15.9.2 域名解析函數的差異 461
15.9.3 測試宏 463
15.10 IPv6的編程的一個簡單例子 463
15.10.1 服務器程序 464
15.10.2 客戶端程序 465
15.10.3 編譯調試 467
15.11 小結 467
第3篇 Linux內核網絡編程
第16章 Linux內核中網絡部分結構以及分佈 470
16.1 概述 470
16.1.1 代碼目錄分佈 470
16.1.2 內核中網絡部分流程簡介 472
16.1.3 系統提供修改網絡流程點 474
16.1.4 sk_buff結構 475
16.1.5 網絡協議數據結構inet_protosw 478
16.2 軟中斷CPU報文隊列及其處理 479
16.2.1 Linux內核網絡協議層的層間傳遞手段——軟中斷 479
16.2.2 網絡收發處理軟中斷的實現機制 481
16.3 socket數據如何在內核中接收和發送 482
16.3.1 socket()的初始化 482
16.3.2 接收網絡數據recv() 482
16.3.3 發送網絡數據send() 483
16.4 小結 484
第17章 netfilter框架內報文處理 485
17.1 netfilter 485
17.1.1 netfilter簡介 485
17.1.2 netfilter框架 486
17.1.3 netfilter檢查時的表格.. 487
17.1.4 netfilter的規則 487
17.2 iptables和netfilter 488
17.2.1 iptables簡介 488
17.2.2 iptables的表和鏈 488
17.2.3 使用iptables設置過濾規則 489
17.3 內核模塊編程 492
17.3.1 內核“Hello,World!”程序 492
17.3.2 內核模塊的基本架構 494
17.3.3 內核模塊加載和卸載過程 496
17.3.4 內核模塊初始化和清理函數 497
17.3.5 內核模塊初始化和清理過程的容錯處理 497
17.3.6 內核模塊編譯所需的Makefile 498
17.4 5個鉤子點 499
17.4.1 netfilter的5個鉤子點 499
17.4.2 NF_HOOK宏 500
17.4.3 鉤子的處理規則 501
17.5 註冊/註銷鉤子 502
17.5.1 結構nf_hook_ops 502
17.5.2 註冊鉤子 503
17.5.3 註銷鉤子 504
17.5.4 註冊註銷函數 504
17.6 鉤子的簡單處理例子 505
17.6.1 功能描述 505
17.6.2 需求分析 506
17.6.3 ping回顯屏蔽實現 506
17.6.4 禁止向目的IP地址發送數據的實現 506
17.6.5 端口關閉實現 506
17.6.6 動態配置實現 508
17.6.7 可加載內核實現代碼 509
17.6.8 應用層測試代碼實現 516
17.6.9 編譯運行 516
17.7 一點多個鉤子的優先級 517
17.8 校驗和問題 518
17.9 小結 518
第4篇 綜 合 案 例
第18章 一個簡單Web服務器的例子SHTTPD 522
18.1 SHTTPD的需求分析 522
18.1.1 SHTTPD啓動參數可動態配置的需求 523
18.1.2 SHTTPD的多客戶端支持的需求 524
18.1.3 SHTTPD支持方法的需求 525
18.1.4 SHTTPD支持的HTTP協議版本的需求 526
18.1.5 SHTTPD支持頭部的需求 527
18.1.6 SHTTPD定位URI的需求 527
18.1.7 SHTTPD支持CGI的需求 528
18.1.8 SHTTPD錯誤代碼的需求 529
18.2 SHTTPD的模塊分析和設計 530
18.2.1 SHTTPD的主函數 530
18.2.2 SHTTPD命令行解析的分析設計 531
18.2.3 SHTTPD配置文件解析的分析設計 532
18.2.4 SHTTPD的多客戶端支持的分析設計 534
18.2.5 SHTTPD頭部解析的分析設計 536
18.2.6 SHTTPD對URI的分析設計 537
18.2.7 SHTTPD支持方法的分析設計 537
18.2.8 SHTTPD支持CGI的分析設計 538
18.2.9 SHTTPD錯誤處理的分析設計 540
18.3 SHTTPD各模塊的實現 542
18.3.1 SHTTPD命令行解析的實現 543
18.3.2 SHTTPD文件配置解析的實現 545
18.3.3 SHTTPD的多客戶端支持的實現 547
18.3.4 SHTTPD所請求URI解析的實現 551
18.3.5 SHTTPD方法解析的實現 552
18.3.6 SHTTPD響應方法的實現 552
18.3.7 SHTTPD支持CGI的實現 556
18.3.8 SHTTPD支持HTTP協議版本的實現 559
18.3.9 SHTTPD內容類型的實現 559
18.3.10 SHTTPD錯誤處理的實現 561
18.3.11 SHTTPD生成目錄下文件列表文件的實現 563
18.3.12 SHTTPD主函數的實現 565
18.4 SHTTPD的編譯、調試和測試 566
18.4.1 建立源文件 566
18.4.2 製作Makefile 566
18.4.3 製作執行文件 567
18.4.4 使用不同的瀏覽器測試服務器程序 567
18.5 小結 568
第19章 一個簡單網絡協議棧的例子SIP 569
19.1 SIP網絡協議棧的功能描述 569
19.1.1 SIP網絡協議棧的基本功能描述 570
19.1.2 SIP網絡協議棧的分層功能描述 570
19.1.3 SIP網絡協議棧的用戶接口功能描述 571
19.2 SIP網絡協議棧的架構 571
19.3 SIP網絡協議棧的存儲區緩存 572
19.3.1 SIP存儲緩衝的結構定義 573
19.3.2 SIP存儲緩衝的處理函數 577
19.4 SIP網絡協議棧的網絡接口層 579
19.4.1 SIP網絡接口層的架構 579
19.4.2 SIP網絡接口層的數據結構 580
19.4.3 SIP網絡接口層的初始化函數 581
19.4.4 SIP網絡接口層的輸入函數 583
19.4.5 SIP網絡接口層的輸出函數 586
19.5 SIP網絡協議棧的ARP層 588
19.5.1 SIP地址解析層的架構 588
19.5.2 SIP地址解析層的數據結構 588
19.5.3 SIP地址解析層的映射表 590
19.5.4 SIP地址解析層的ARP映射表維護函數 591
19.5.5 SIP地址解析層的ARP網絡報文構建函數 593
19.5.6 SIP地址解析層的ARP網絡報文收發處理函數 595
19.6 SIP網絡協議棧的IP層 598
19.6.1 SIP網際協議層的架構 598
19.6.2 SIP網際協議層的數據結構 599
19.6.3 SIP網際協議層的輸入函數 601
19.6.4 SIP網際協議層的輸出函數 605
19.6.5 SIP網際協議層的分片函數 606
19.6.6 SIP網際協議層的分片組裝函數 607
19.7 SIP網絡協議棧的ICMP層 611
19.7.1 SIP控制報文協議的數據結構 611
19.7.2 SIP控制報文協議的協議支持 612
19.7.3 SIP控制報文協議的輸入函數 613
19.7.4 SIP控制報文協議的回顯應答函數 614
19.8 SIP網絡協議棧的UDP層 615
19.8.1 SIP數據報文層的數據結構 615
19.8.2 SIP數據報文層的控制單元 615
19.8.3 SIP數據報文層的輸入函數 617
19.8.4 SIP數據報文層的輸出函數 618
19.8.5 SIP數據報文層的建立函數 618
19.8.6 SIP數據報文層的釋放函數 619
19.8.7 SIP數據報文層的綁定函數 620
19.8.8 SIP數據報文層的發送數據函數 621
19.8.9 SIP數據報文層的校驗和計算 622
19.9 SIP網絡協議棧的協議無關層 623
19.9.1 SIP協議無關層的系統架構 623
19.9.2 SIP協議無關層的函數形式 624
19.9.3 SIP協議無關層的接收數據函數 624
19.10 SIP網絡協議棧的BSD接口層 625
19.10.1 SIP用戶接口層的架構 625
19.10.2 SIP用戶接口層的套接字建立函數 626
19.10.3 SIP用戶接口層的套接字關閉函數 627
19.10.4 SIP用戶接口層的套接字綁定函數 627
19.10.5 SIP用戶接口層的套接字連接函數 628
19.10.6 SIP用戶接口層的套接字接收數據函數 628
19.10.7 SIP用戶接口層的發送數據函數 629
19.11 SIP網絡協議棧的編譯 630
19.11.1 SIP的文件結構 630
19.11.2 SIP的Makefile 631
19.11.3 SIP的編譯運行 631
19.12 小結 631
第20章 一個簡單防火牆的例子SIPFW 633
20.1 SIPFW防火牆的功能描述 633
20.1.1 SIPFW防火牆對主機進行網絡數據過濾的功能描述 633
20.1.2 SIPFW防火牆用戶設置防火牆規則的功能描述 634
20.1.3 SIPFW防火牆配置文件等附加功能的功能描述 634
20.2 SIPFW需求分析 634
20.2.1 SIPFW防火牆條件和動作 635
20.2.2 SIPFW防火牆支持過濾的類型和內容 635
20.2.3 SIPFW防火牆過濾的方式和動作 638
20.2.4 SIPFW防火牆的配置文件 640
20.2.5 SIPFW防火牆命令行配置格式 640
20.2.6 SIPFW防火牆的規則文件格式 642
20.2.7 SIPFW防火牆的日誌文件數據格式 643
20.2.8 SIPFW防火牆構建所採用的技術方案 644
20.3 使用netlink進行用戶空間和內核空間數據交互 645
20.3.1 netlink的用戶空間程序設計 645
20.3.2 netlink的內核空間API 648
20.4 使用proc進行內存數據用戶空間映射 650
20.4.1 proc虛擬文件系統的結構 650
20.4.2 創建proc虛擬文件 651
20.4.3 刪除proc虛擬文件 652
20.4.4 proc文件的寫函數 652
20.4.5 proc文件的讀函數 653
20.5 內核空間的文件操作函數 654
20.5.1 內核空間的文件結構 654
20.5.2 內核空間的文件建立操作 655
20.5.3 內核空間的文件讀寫操作 656
20.5.4 內核空間的文件關閉操作 657
20.6 SIPFW防火牆的模塊分析和設計 657
20.6.1 SIPFW防火牆的總體架構 657
20.6.2 SIPFW防火牆的用戶命令解析 660
20.6.3 SIPFW用戶空間與內核空間的交互 663
20.6.4 SIPFW防火牆內核鏈上的規則處理 666
20.6.5 SIPFW防火牆的PROC虛擬文件系統 668
20.6.6 SIPFW防火牆的配置文件和日誌文件處理 669
20.6.7 SIPFW防火牆的過濾模塊設計 671
20.7 SIPFW防火牆各功能模塊的實現 673
20.7.1 SIPFW防火牆的命令解析代碼 674
20.7.2 SIPFW防火牆的過濾規則解析模塊代碼 678
20.7.3 SIPFW防火牆的網絡數據攔截模塊代碼 680
20.7.4 SIPFW防火牆的PROC虛擬文件系統 681
20.7.5 SIPFW防火牆對配置文件的解析 683
20.7.6 SIPFW防火牆內核模塊初始化和退出 684
20.7.7 用戶空間處理主函數 685
20.8 編譯、調試和測試 686
20.8.1 用戶程序和內核程序的Makefile 686
20.8.2 編譯及運行 687
20.8.3 下發過濾規則,測試過濾結果 688
20.9 小結... 690

ARM嵌入式Linux系統開發詳解

卡 423
23.6.6 發送數據包 425
23.6.7 接收數據包 427
23.6.8 中斷和定時器處理 429
23.7 小結 431
第24章 Flash設備驅動 432
24.1 Linux Flash驅動結構 432
24.1.1 什麼是MTD 432
24.1.2 MTD系統結構 433
24.2 Flash設備基礎 434
24.2.1 存儲原理 434
24.2.2 性能比較 435
24.3 內核MTD層 436
24.3.1 mtd_info結構 436
24.3.2 mtd_part結構 439
24.3.3 mtd_partition結構 440
24.3.4 map_info結構 440
24.3.5 nand_chip結構 442
24.4 Flash設備框架 443
24.4.1 NOR Flash設備驅動框架 443
24.4.2 NAND Flash設備驅動框架 444
24.5 Flash設備驅動實例——NOR Flash設備驅動剖析 445
24.5.1 數據結構 446
24.5.2 驅動初始化 446
24.5.3 驅動卸載 447
24.6 Flash設備驅動實例——NAND Flash設備驅動分析 448
24.6.1 S3C2440 NAND控制器介紹 448
24.6.2 數據結構 450
24.6.3 驅動初始化 450
24.6.4 驅動卸載 454
24.6.5 初始化NAND控制器 455
24.6.6 設置芯片操作 456
24.6.7 電源管理 458
24.7 小結 459
第25章 USB驅動開發 460
25.1 USB體系介紹 460
25.1.1 USB設計目標 460
25.1.2 USB體系概述 461
25.1.3 USB體系工作流程 462
25.2 USB驅動程序框架 462
25.2.1 Linux內核USB驅動框架 462
25.2.2 主機驅動結構 465
25.2.3 設備驅動結構 468
25.2.4 USB驅動程序框架 470
25.3 USB驅動實例剖析 473
25.3.1 USB串口驅動 473
25.3.2 USB鍵盤驅動 475
25.4 小結... 478

Linux系統管理與網絡管理
內容簡介回到頂部↑

經過多年的發展,Linux已成爲了當今世界的主流操作系統之一,無論在桌面還是服務器領域都得到了廣泛的應用。本書以Red Hat Enterprise Linux 5.2平臺爲基礎,循序漸進、深入淺出、全面系統地介紹了由Linux系統管理到各種網絡服務器配置所涉及的所有知識,內容包括Linux系統簡介、Linux系統安裝、圖形桌面系統管理、命令行界面、Linux系統啓動過程、用戶和用戶組管理、磁盤分區管理、文件系統管理、軟件包管理、進程管理、網絡管理、系統監控、Shell編程、Linux系統安全、FTP服務器配置和管理、Web服務器配置與管理、動態Web服務器配置與管理、DNS服務器配置和管理、郵件服務器配置和管理、DHCP服務器配置和管理、代理服務器配置和管理、VPN服務器配置和管理、NFS服務器配置和管理、Samba服務器配置和管理、NAT服務器配置和管理、MySQL數據庫服務器配置和管理、Webmin的配置和管理、Oracle服務器配置和管理以及Oracle RAC服務器配置和管理。.
本書附帶1張DVD光盤,內容爲專門爲本書錄制的6.5小時教學視頻、Ubuntu安裝光盤的鏡像文件和另外贈送的37小時Linux專題學習視頻。..
本書內容詳盡,語言通俗易懂,敘述深入淺出,適合廣大Linux初學者、Linux系統管理員、對Linux感興趣的人員及各大中專院校的學生和社會培訓學生閱讀,是一本不可多得的Linux參考教材。...

目錄回到頂部↑

第1篇 基 礎 篇.
第1章 Linux系統簡介 2
1.1 Linux系統的起源 2
1.2 Linux版本 3
1.2.1 Linux內核版本 3
1.2.2 Linux發行套件版本 3
1.3 Red Hat Enterprise Linux 5.2簡介 5
第2章 Linux系統安裝 7
2.1 安裝前的準備 7
2.1.1 硬件配置與兼容要求 7
2.1.2 選擇安裝方式 7
2.2 通過光盤安裝Linux 8
2.2.1 啓動安裝程序 8
2.2.2 進行語言和鍵盤設置 11
2.2.3 磁盤分區 13
2.2.4 引導裝載程序 18
2.2.5 網絡設置 19
2.2.6 時區配置 20
2.2.7 設置root用戶口令 21
2.2.8 選擇安裝的軟件包 22

.2.2.9 準備安裝 23
2.2.10 安裝軟件包 23
2.3 系統第一次啓動 24
2.3.1 歡迎界面和許可協議 24
2.3.2 防火牆 24
2.3.3 配置SElinux訪問控制 25
2.3.4 配置Kdump內核崩潰轉存 25
2.3.5 設置日期和時間 26
2.3.6 設置軟件更新 27
2.3.7 創建用戶 27
2.3.8 設置聲卡 28
2.3.9 附加光盤 29
2.3.10 登錄系統 29
2.4 其他安裝方式 30
2.4.1 製作安裝引導光盤 30
2.4.2 硬盤安裝方式 30
2.4.3 NFS安裝方式 31
2.4.4 FTP安裝方式 32
2.4.5 HTTP安裝方式 33
2.5 升級和刪除Linux 33
2.5.1 升級安裝 34
2.5.2 刪除Linux系統 35
2.6 使用虛擬機安裝Linux 36
2.7 系統安裝時的常見問題處理 41
2.7.1 無法使用圖形安裝方式 41
2.7.2 加載第三方的驅動程序 41
2.7.3 無法找到光驅 42
2.7.4 無法使用硬盤的所有剩餘空間 42
2.7.5 分區後無法進入下一個安裝界面 42
2.7.6 保存安裝過程中的錯誤跟蹤信息 43
第3章 圖形桌面系統管理 44
3.1 桌面系統簡介 44
3.1.1 X-Window系統簡介 44
3.1.2 KDE和GNOME的簡介 45
3.2 GNOME的使用 46
3.2.1 GNOME桌面 46
3.2.2 文件管理 48
3.2.3 GNOME面板 51
3.2.4 菜單 53
3.2.5 輸入法 54
3.2.6 屏幕分辨率 54
3.2.7 屏幕保護程序 54
3.2.8 添加刪除軟件 55
3.2.9 搜索文件 56
3.2.10 設置系統字體與主題 57
3.2.11 日期時間 57
3.2.12 使用軟盤、光盤和移動硬盤 57
3.2.13 更改GNOME語言環境 58
3.2.14 註銷和關機 59
3.3 常用應用軟件 60
3.3.1 Firefox瀏覽器 60
3.3.2 gThumb圖像瀏覽器 60
3.3.3 gedit文本編輯器 61
3.3.4 Evince pdf文檔查看器 62
3.3.5 遠程訪問 62
3.4 常見問題處理 66
3.4.1 無法掛載光盤和USB存儲設備 66
3.4.2 無法註銷系統 68
3.4.3 開機無法進入圖形環境 68
第4章 命令行界面 70
4.1 命令行簡介 70
4.1.1 爲什麼要使用命令行 70
4.1.2 Shell簡介 71
4.2 命令行的使用 71
4.2.1 進入命令行 71
4.2.2 處理多個終端 72
4.2.3 終端配置文件 72
4.2.4 終端基本操作 73
4.3 常用的基本命令 77
4.3.1 man命令:查看幫助信息 77
4.3.2 date命令:顯示時間 77
4.3.3 hostname命令:主機名 78
4.3.4 clear命令:清屏 78
4.3.5 exit命令:退出 79
4.3.6 history命令:歷史命令 79
4.3.7 pwd命令:當前目錄 79
4.3.8 cd命令:切換目錄 79
4.3.9 ls命令:列出目錄和文件 80
4.3.10 cat命令:顯示文件內容 81
4.3.11 touch命令:創建文件 81
4.3.12 df命令:查看文件系統 81
4.3.13 alias和unalias命令:命令別名 82
4.3.14 echo命令:顯示信息 83
4.3.15 export命令:輸出變量 83
4.3.16 env命令:顯示環境變量 83
4.3.17 ps命令:查看進程 84
4.3.18 whoami和who命令:查看用戶 84
4.3.19 su命令:切換用戶 84
4.3.20 grep命令:過濾信息 85
4.3.21 wc命令:統計 86
4.3.22 more命令:分頁顯示 86
4.3.23 管道 86
4.4 VI編輯器 87
4.4.1 3種運行模式 87
4.4.2 VI的使用 88
4.4.3 VI的常用命令 88
4.5 命令行環境常見問題處理 91
4.5.1 開機默認進入命令行環境 91
4.5.2 遠程訪問命令行環境 92
第2篇 系統管理篇
第5章 Linux系統啓動過程 96
5.1 Linux系統啓動過程簡介 96
5.2 BIOS加電自檢 97
5.3 引導加載程序 97
5.3.1 引導加載程序的啓動 98
5.3.2 GRUB配置 98
5.4 內核映像 100
5.5 init進程 101
5.5.1 init進程簡介 101
5.5.2 init進程的引導過程 102
5.5.3 配置自動運行服務 105
5.6 重啓和關閉系統 108
5.6.1 shutdown命令:關閉或重啓系統 108
5.6.2 halt命令:關閉系統 109
5.6.3 reboot命令:重啓系統 110
5.6.4 init命令:改變運行級別 110
5.6.5 通過圖形界面關閉系統 111
5.7 系統啓動時常見的問題處理 111
5.7.1 進入Linux救援模式 111
5.7.2 GRUB被Windows覆蓋 113
5.7.3 重新分區後GRUB引導失敗 114
第6章 用戶和用戶組管理 116
6.1 用戶管理概述 116
6.1.1 用戶賬號 116
6.1.2 用戶賬號文件:passwd和shadow 118
6.1.3 用戶組 119
6.1.4 用戶組文件:group和gshadow 121
6.2 普通用戶管理 122
6.2.1 添加用戶 123
6.2.2 更改用戶口令 124
6.2.3 修改用戶信息 126
6.2.4 刪除用戶 126
6.2.5 禁用用戶 127
6.2.6 配置用戶Shell環境 127
6.3 用戶組管理 130
6.3.1 添加用戶組 130
6.3.2 修改用戶組 130
6.3.3 刪除用戶組 131
6.4 用戶和用戶組的圖形化管理 132
6.4.1 查看用戶 132
6.4.2 添加用戶 133
6.4.3 修改用戶 133
6.4.4 刪除用戶 133
6.4.5 查看用戶組 134
6.4.6 添加用戶組 134
6.4.7 修改用戶組 135
6.4.8 刪除用戶組 135
6.5 用戶管理的常見問題和常用命令 135
6.5.1 忘記root用戶口令 135
6.5.2 誤刪用戶賬號 136
6.5.3 常用用戶管理命令 138
6.6 常用管理腳本 139
6.6.1 批量添加用戶 139
6.6.2 完整刪除用戶賬號 140
第7章 磁盤分區管理 143
7.1 磁盤分區簡介 143
7.1.1 Linux分區簡介 143
7.1.2 磁盤設備管理 144
7.2 使用fdisk進行分區管理 145
7.2.1 fdisk簡介 145
7.2.2 fdisk交互模式 146
7.2.3 分區管理 147
7.3 使用parted進行分區管理 150
7.3.1 parted簡介 151
7.3.2 parted交互模式 151
7.3.3 分區管理 152
7.4 LVM——邏輯卷管理 155
7.4.1 LVM簡介 155
7.4.2 物理卷管理 156
7.4.3 卷組管理 157
7.4.4 邏輯卷管理 159
7.5 磁盤分區管理的常見問題 160
7.5.1 添加新磁盤 160
7.5.2 刪除分區後系統無法啓動 163
7.5.3 誤刪Swap分區 163
第8章 文件系統管理 165
8.1 文件系統簡介 165
8.1.1 Linux文件系統簡介 165
8.1.2 Linux支持的文件系統類型 166
8.1.3 Linux的默認安裝目錄 167
8.2 文件系統的管理 168
8.2.1 創建文件系統 168
8.2.2 查看已掛載文件系統 170
8.2.3 使用fstab文件自動掛載文件系統 171
8.3 文件和目錄管理 172
8.3.1 查看文件和目錄屬性 172
8.3.2 文件類型 173
8.3.3 鏈接文件 175
8.3.4 查看文件內容 176
8.3.5 刪除文件和目錄 177
8.3.6 更改當前目錄 177
8.3.7 文件名通配符 178
8.3.8 查看目錄空間大小 179
8.3.9 複製文件和目錄 180
8.3.10 移動文件和目錄 180
8.4 文件和目錄權限管理 181
8.4.1 Linux文件和目錄權限簡介 181
8.4.2 更改文件和目錄的所有者 182
8.4.3 更改文件和目錄的權限 183
8.4.4 設置文件和目錄的默認權限 184
8.5 文件系統管理的常見問題和常用命令 185
8.5.1 無法卸載文件系統 185
8.5.2 修復受損文件系統 185
8.5.3 修復文件系統超級塊 187
8.5.4 使用Windows分區 188
8.6 常用管理腳本 188
8.6.1 自動掛載所有Windows分區的腳本 189
8.6.2 轉換目錄和文件名大小寫的腳本 190
第9章 軟件包管理 192
9.1 使用RPM軟件包 192
9.1.1 RPM簡介 192
9.1.2 RPM命令的使用方法 193
9.1.3 安裝RPM軟件包 194
9.1.4 查看RPM軟件包 195
9.1.5 升級軟件包 197
9.1.6 刪除軟件包 197
9.2 打包程序tar 198
9.2.1 tar簡介 198
9.2.2 打包文件 199
9.2.3 查看歸檔文件的內容 199
9.2.4 還原歸檔文件 200
9.2.5 往歸檔文件中追加新文件 200
9.2.6 壓縮歸檔文件 201
9.3 壓縮和解壓 201
9.3.1 使用gzip和gunzip進行壓縮 202
9.3.2 使用zip和unzip進行壓縮 203
9.3.3 使用bzip2和bunzip2進行壓縮 205
9.3.4 使用compress和uncompress進行壓縮 206
9.4 其他軟件安裝方式 206
9.4.1 源代碼安裝 207
9.4.2 源代碼安裝實例 208
9.4.3 .bin文件安裝 209
9.5 常見問題處理 211
9.5.1 如何安裝.src.rpm軟件包 211
9.5.2 查看程序是由哪個RPM包安裝 211
第10章 進程管理 213
10.1 進程簡介 213
10.2 Linux進程管理 214
10.2.1 查看進程 214
10.2.2 啓動進程 216
10.2.3 終止進程 218
10.2.4 更改進程優先級 219
10.2.5 進程掛起與恢復 220
10.3 定時任務 220
10.3.1 crontab設置定時任務 221
10.3.2 at命令:設置定時任務 222
10.4 進程管理的常見問題處理 223
10.4.1 如何殺掉所有進程 223
10.4.2 定時任務不生效 223
第11章 網絡管理 225
11.1 TCP/IP網絡 225
11.1.1 TCP/IP網絡歷史 225
11.1.2 OSI網絡模型 226
11.1.3 TCP/IP網絡模型 227
11.2 以太網配置 228
11.2.1 添加以太網連接 229
11.2.2 更改以太網設備 230
11.2.3 更改DNS和主機記錄 231
11.3 網絡配置文件 232
11.3.1 網絡設備配置文件 232
11.3.2 使用resolve.conf文件配置DNS服務器 232
11.3.3 使用network文件配置主機名 233
11.3.4 使用hosts文件配置主機名和IP地址的映射關係 233
11.4 接入互聯網 233
11.4.1 xDSL撥號上網 233
11.4.2 調整解調器撥號上網 234
11.4.3 ISDN撥號上網 236
11.4.4 無線連接 237
11.5 常用網絡命令 239
11.5.1 使用ifconfig命令管理網絡接口 240
11.5.2 使用hostname命令查看主機名 242
11.5.3 使用route命令管理路由 242
11.5.4 使用ping命令檢測主機是否激活 244
11.5.5 使用netstat命令查看網絡信息 245
11.5.6 使用nslookup命令進行解析 247
11.5.7 使用traceroute命令跟蹤路由 248
11.5.8 使用telnet命令管理遠程主機 249
11.6 常見問題處理 249
11.6.1 在網卡上綁定多個IP地址 249
11.6.2 Linux網絡故障處理步驟 252
11.7 常用管理腳本 253
11.7.1 統計客戶端的網絡連接數 254
11.7.2 自動發送郵件的腳本 255
第12章 系統監控 256
12.1 系統性能監控 256
12.1.1 性能分析準則 256
12.1.2 內存監控 258
12.1.3 CPU監控 259
12.1.4 磁盤監控 261
12.1.5 網絡監控 263
12.1.6 綜合監控工具——top 264
12.2 syslog日誌 267
12.2.1 syslog簡介 267
12.2.2 syslog配置 268
12.2.3 配置實例 270
12.2.4 清空日誌文件內容 270
12.2.5 圖形化日誌工具——系統日誌查看器 270
12.3 其他日誌 271
12.3.1 dmesg日誌:記錄內核日誌信息 271
12.3.2 用戶登錄日誌 272
12.3.3 用戶操作記錄 273
12.3.4 應用日誌 274
12.4 系統監控常見問題處理 274
12.4.1 內存泄漏 274
12.4.2 定期清理日誌文件 275
第13章 Shell編程 276
13.1 Shell編程簡介 276
13.1.1 什麼是Shell腳本 276
13.1.2 編寫Shell腳本 277
13.2 條件測試 277
13.2.1 數值測試 277
13.2.2 字符串測試 278
13.2.3 文件狀態測試 279
13.2.4 條件測試的邏輯操作符 279
13.3 控制結構 280
13.3.1 if-then-else分支結構 280
13.3.2 case分支結構 281
13.3.3 for循環結構 282
13.3.4 expr命令計數器 284
13.3.5 while循環結構 284
13.3.6 until循環結構 285
13.4 腳本參數與交互 286
13.4.1 向腳本傳遞參數 286
13.4.2 用戶交互 287
13.4.3 特殊變量 289
13.5 Shell編程中的常見問題 289
13.5.1 如何屏蔽命令的輸出結果 290
13.5.2 如何把一條命令分成多行編寫 290
第14章 Linux系統安全 291
14.1 用戶賬號和密碼安全 291
14.1.1 刪除或禁用不必要的用戶 291
14.1.2 使用強壯的用戶密碼 292
14.1.3 設置合適的密碼策略 292
14.1.4 破解shadow口令文件 293
14.1.5 禁用靜止用戶 294
14.1.6 保證只有一個root用戶 295
14.1.7 文件路徑中的“.” 296
14.1.8 主機信任關係:host.equiv和.rhosts文件 297
14.2 網絡安全 297
14.2.1 ping探測 297
14.2.2 服務端口 298
14.2.3 拒絕攻擊 302
14.2.4 使用安全的網絡服務 303
14.2.5 增強Xinetd的安全 304
14.3 文件系統安全 305
14.3.1 全球可讀文件 305
14.3.2 全球可寫文件 306
14.3.3 特殊的文件權限:setuid和setgid 306
14.3.4 沒有所有者的文件 308
14.3.5 設備文件 308
14.3.6 磁盤分區 308
14.3.7 設置grub密碼 309
14.3.8 限制su切換 310
14.3.9 使用合適的mount選項 310
14.4 備份與恢復 311
14.4.1 使用tar進行備份 311
14.4.2 專用的備份恢復工具:dump和restore 312
14.4.3 底層設備操作命令:dd 315
14.4.4 備份的物理安全 316
14.5 日誌記錄 316
14.5.1 查看當前登錄用戶 316
14.5.2 查看用戶歷史登錄日誌 317
14.5.3 secure日誌中的安全信息 318
14.5.4 messages日誌中的安全信息 318
14.5.5 cron日誌中的安全信息 319
14.5.6 history日誌中的安全信息 319
14.5.7 日誌文件的保存 320
14.6 漏洞掃描——Nessus 321
14.6.1 如何獲得Nessus安裝包 321
14.6.2 安裝Nessus服務器 321
14.6.3 啓動和關閉Nessus 322
14.6.4 安裝Nessus客戶端 323
14.6.5 掃描安全漏洞 324
14.6.6 自定義掃描策略 327
14.6.7 Nessus命令行客戶端 330
14.7 開源軟件OpenSSH 332
14.7.1 SSH和OpenSSH簡介 332
14.7.2 安裝OpenSSH 332
14.7.3 啓動和關閉OpenSSH 334
14.7.4 OpenSSH配置文件 336
14.7.5 OpenSSH服務器配置 336
14.7.6 OpenSSH客戶端配置 339
14.7.7 使用SSH遠程登錄 340
14.7.8 使用sftp進行文件傳輸 344
14.7.9 使用scp進行遠程文件複製 345
14.7.10 在Windows客戶端使用SSH 347
14.8 Linux系統安全常見問題 349
14.8.1 Linux是否有病毒 349
14.8.2 系統文件損壞後的解決辦法 350
第3篇 網絡服務管理篇
第15章 FTP服務器配置和管理 352
15.1 FTP簡介 352
15.1.1 FTP服務 352
15.1.2 常用的FTP服務器軟件 353
15.2 vsftpd服務器的安裝 353
15.2.1 如何獲得vsftpd安裝包 354
15.2.2 安裝vsftpd 354
15.2.3 啓動和關閉vsftpd.. 355
15.2.4 檢測vsftpd服務 357
15.2.5 vsftpd自動運行 358
15.3 vsftpd服務器配置 360
15.3.1 vsftpd.conf配置文件 360
15.3.2 匿名FTP的基本配置 363
15.3.3 匿名FTP的其他設置 365
15.3.4 配置本地用戶登錄 367
15.3.5 配置虛擬用戶登錄 367
15.3.6 控制用戶登錄 369
15.3.7 設置歡迎信息 369
15.3.8 FTP日誌 371
15.3.9 其他設置 373
15.4 FTP客戶端 376
15.4.1 FTP命令:通用的FTP客戶端程序 376
15.4.2 FTP客戶端圖形化工具 381
15.5 Ftp服務器配置常見問題 381
15.5.1 取消匿名FTP的口令輸入 381
15.5.2 本地用戶無法登錄FTP服務器 382
第16章 Web服務器配置與管理 383
16.1 Web服務器簡介 383
16.1.1 Web服務的歷史和工作原理 383
16.1.2 Apache簡介 384
16.1.3 Apache的模塊 384
16.2 Apache服務器的安裝 386
16.2.1 如何獲取Apache軟件 386
16.2.2 安裝Apache服務器 387
16.2.3 啓動和關閉Apache 389
16.2.4 檢測Apache服務 389
16.2.5 讓Apache自動運行 390
16.3 Apache服務器的基本配置和維護 392
16.3.1 查看Apache的相關信息 392
16.3.2 httpd.conf配置文件介紹 393
16.3.3 配置文件的修改 396
16.3.4 符號鏈接和虛擬目錄 397
16.3.5 頁面重定向 399
16.3.6 Apache日誌文件 401
16.4 日誌分析 403
16.4.1 安裝Webalizer日誌分析程序 403
16.4.2 配置Webalizer 403
16.4.3 使用Webalizer分析日誌 404
16.5 Apache安全配置 406
16.5.1 訪問控制 406
16.5.2 用戶認證 408
16.5.3 分佈式配置文件:.htaccess 410
16.6 虛擬主機 411
16.6.1 虛擬主機服務簡介 411
16.6.2 基於IP的虛擬主機服務 411
16.6.3 基於主機名的虛擬主機服務 413
16.7 Apache服務器配置的常見問題 415
16.7.1 防止網站圖片盜鏈 415
16.7.2 忽略某些訪問日誌的記錄 416
16.7.3 Apache無法啓動 416
第17章 動態Web服務器配置與管理 417
17.1 動態網頁技術簡介 417
17.1.1 動態網頁技術的工作原理和簡介 417
17.1.2 實現動態網頁的常見技術 418
17.1.3 Tomcat簡介 418
17.2 Tomcat服務器的安裝 419
17.2.1 如何獲取JDK 419
17.2.2 安裝JDK 419
17.2.3 如何獲取Tomcat 420
17.2.4 安裝Tomcat 421
17.2.5 啓動和關閉Tomcat 421
17.2.6 檢測Tomcat服務 422
17.2.7 讓Tomcat自動運行 423
17.3 整合Apache和Tomcat 424
17.3.1 爲什麼要進行整合 424
17.3.2 安裝mod_jk模塊 425
17.3.3 Apache和Tomcat的後續配置 426
17.4 Apache和其他動態Web的整合 429
17.4.1 整合CGI 429
17.4.2 整合基於Perl的CGI 431
17.4.3 整合PHP 434
17.5 動態Web服務器配置的常見問題 435
17.5.1 無法載入PHP模塊 436
17.5.2 如何壓縮PHP模塊的容量 436
第18章 DNS服務器配置和管理 437
18.1 DNS簡介 437
18.1.1 DNS域名結構 437
18.1.2 DNS工作原理 438
18.2 DNS服務器的安裝 440
18.2.1 如何獲得Bind安裝包 440
18.2.2 安裝Bind 440
18.2.3 啓動和關閉Bind 441
18.2.4 開機自動運行 442
18.3 Bind服務器配置 444
18.3.1 named.conf配置文件 445
18.3.2 根區域文件named.root 450
18.3.3 正向解析區域文件 452
18.3.4 反向解析區域文件 454
18.4 配置實例 454
18.4.1 網絡拓撲 454
18.4.2 配置named.conf 455
18.4.3 配置區域文件 457
18.4.4 測試結果 459
18.5 DNS常見問題及常用命令 460
18.5.1 因TTL值缺失導致的錯誤 460
18.5.2 dig命令:顯示DNS解析結果以及配置信息 461
18.5.3 ping命令:解析域名 461
18.5.4 host命令:正向反向解析 462
18.5.5 named-checkconf命令:檢查named.conf文件內容 462
18.5.6 named-checkzone命令:檢查區域文件內容 462
第19章 郵件服務器配置和管理 463
19.1 電子郵件簡介 463
19.1.1 電子郵件傳輸過程 463
19.1.2 郵件相關協議 465
19.1.3 Linux下常用的郵件服務器程序 465
19.2 安裝郵件服務器 466
19.2.1 安裝SASL 466
19.2.2 安裝Postfix 468
19.2.3 啓動和關閉郵件服務 471
19.2.4 配置saslauthd服務的自動運行 472
19.2.5 配置Postfix服務的自動運行 475
19.3 Postfix配置 477
19.4 POP和IMAP的實現 479
19.4.1 安裝Dovecot 479
19.4.2 配置Dovecot 480
19.4.3 啓動和關閉Dovecot 481
19.4.4 配置Dovecot服務的自動運行 482
19.5 電子郵件客戶端配置 484
第20章 DHCP服務器配置和管理 487
20.1 DHCP簡介 487
20.2 DHCP服務器的安裝 489
20.2.1 如何獲得DHCP安裝包 489
20.2.2 安裝DHCP 489
20.2.3 啓動和關閉DHCP 490
20.2.4 DHCP服務開機自動運行 492
20.3 DHCP服務器配置 495
20.3.1 dhcpd.conf配置文件 495
20.3.2 dhcpd.conf文件的參數 496
20.3.3 dhcpd.conf文件的選項 497
20.3.4 使用dhcpd.leases文件查看已分配的IP地址 498
20.4 配置實例 499
20.4.1 網絡拓撲 499
20.4.2 配置步驟 500
20.5 DHCP客戶端配置 501
20.5.1 Linux客戶端配置 501
20.5.2 Windows客戶端配置 502
第21章 代理服務器配置和管理 504
21.1 代理服務器簡介 504
21.2 代理服務器的安裝 505
21.2.1 如何獲得Squid安裝包 506
21.2.2 安裝Squid 506
21.2.3 啓動和關閉Squid 508
21.2.4 Squid服務開機自動運行 510
21.3 Squid的配置 513
21.3.1 squid.conf配置文件 513
21.3.2 與配置文件相關的命令 517
21.3.3 設置Squid使用中文錯誤提示信息 518
21.3.4 配置透明代理 519
21.4 Squid安全 521
21.4.1 訪問控制列表 521
21.4.2 使用http_access選項控制HTTP請求 522
21.4.3 身份認證 524
21.5 Squid日誌管理 527
21.6 使用Web方式管理Squid 529
21.7 客戶端配置 531
21.7.1 Linux客戶端的配置 531
21.7.2 Windows客戶端配置 532
21.8 Squid的常見問題處理 534
21.8.1 創建cache目錄時出現權限不足的錯誤 534
21.8.2 啓動Squid時提示地址已被佔用的錯誤 534
21.8.3 啓動Squid時提示DNS名稱解析測試失敗的錯誤 535
第22章 VPN服務器配置和管理 536
22.1 VPN簡介 536
22.2 安裝VPN服務器 537
22.2.1 如何獲得安裝包 537
22.2.2 安裝dkms 537
22.2.3 安裝ppp 538
22.2.4 安裝pptpd 539
22.2.5 啓動和關閉pptpd 540
22.2.6 pptpd開機自動運行 540
22.3 pptpd的配置 543
22.4 pptpd日誌管理 545
22.5 配置VPN客戶端 546
22.5.1 配置Linux VPN客戶端 546
22.5.2 配置Windows客戶端 547
第23章 NFS服務器配置和管理 550
23.1 NFS簡介 550
23.2 NFS服務器安裝 551
23.2.1 安裝NFS 551
23.2.2 啓動NFS 552
23.2.3 NFS服務檢測 553
23.2.4 NFS服務開機自動啓動 554
23.3 NFS服務器端配置 555
23.3.1 exports配置文件 555
23.3.2 NFS權限控制 557
23.3.3 exports命令:輸出共享目錄 559
23.4 NFS客戶端配置 561
23.4.1 客戶端安裝 561
23.4.2 查看共享目錄列表 562
23.4.3 創建掛載點並掛載共享目錄 563
23.4.4 卸載NFS文件系統 565
23.4.5 開機自動掛載NFS共享目錄 565
23.5 NFS配置實例 566
23.5.1 用戶需求 566
23.5.2 exports文件配置 566
23.5.3 在服務器端創建目錄 567
23.5.4 輸出共享目錄 568
23.5.5 人力部門客戶端的配置 568
23.6 使用autofs按需掛載共享目錄 569
23.6.1 安裝autofs 569
23.6.2 啓動autofs服務 569
23.6.3 配置autofs服務開機自動啓動 569
23.6.4 修改autofs配置文件 570
23.6.5 配置實例 571
23.7 NFS圖形化配置 571
23.7.1 配置工具的安裝 572
23.7.2 NFS服務器配置方案工具的使用 572
23.8 NFS常見問題處理 573
23.8.1 無法卸載NFS共享目錄並提示device is busy 574
23.8.2 掛載共享目錄失敗 574
23.8.3 NFS請求掛起 575
第24章 Samba服務器配置和管理 576
24.1 Samba簡介 576
24.2 Samba服務器的安裝 577
24.2.1 如何獲得Samba安裝包 577
24.2.2 安裝Samba 578
24.2.3 啓動和關閉Samba 579
24.2.4 開機自動運行Samba 580
24.3 Samba服務器的基本配置 584
24.3.1 smb.conf配置文件 584
24.3.2 全局設置選項 584
24.3.3 共享選項 587
24.3.4 配置文件的生效與驗證 588
24.3.5 Samba用戶管理 589
24.3.6 用戶映射 591
24.4 Samba安全設置 591
24.4.1 安全級別 591
24.4.2 用戶訪問控制 593
24.5 日誌設置 595
24.6 配置實例 596
24.6.1 應用案例 596
24.6.2 配置步驟 597
24.7 Linux客戶端配置 599
24.7.1 類似於FTP的客戶端程序smbclient 599
24.7.2 mount掛載共享目錄 600
24.7.3 掛載Windows共享目錄 601
24.7.4 使用圖形界面訪問共享資源 603
24.8 Windows客戶端配置 603
24.9 Samba常見問題處理 605
24.9.1 共享目錄無法寫入 605
24.9.2 Windows不能在網上鄰居中瀏覽到Samba服務器 605
第25章 NAT服務器配置和管理 606
25.1 NAT簡介 606
25.1.1 NAT概述 606
25.1.2 NAT工作原理 606
25.2 NAT地址轉換方式 608
25.2.1 NAT地址相關概念 608
25.2.2 靜態地址轉換NAT 608
25.2.3 動態地址轉換NAT 609
25.2.4 網絡地址端口轉換NAT 610
25.3 NAT配置 611
25.4 配置實例 612
25.4.1 應用案例 613
25.4.2 NAT服務器配置步驟 613
25.4.3 編寫NAT管理腳本 616
25.5 NAT客戶端配置 617
25.5.1 Linux客戶端配置 618
25.5.2 Windows客戶端配置 618
第26章 MySQL數據庫服務器配置和管理 620
26.1 數據庫簡介 620
26.1.1 數據庫技術簡介 620
26.1.2 MySQL簡介 621
26.1.3 其他常見的數據庫產品 622
26.2 MySQL數據庫服務器的安裝 622
26.2.1 如何獲得MySQL安裝包 622
26.2.2 安裝MySQL 623
26.2.3 啓動和關閉MySQL 626
26.2.4 開機自動運行MySQL服務 628
26.3 MySQL的基本配置 632
26.3.1 MySQL客戶端程序 632
26.3.2 MySQL配置文件 633
26.3.3 更改管理員口令 635
26.3.4 MySQL服務器管理程序mysqladmin 635
26.4 數據庫管理 637
26.4.1 查看數據庫 637
26.4.2 選擇數據庫 637
26.4.3 創建數據庫 638
26.4.4 刪除數據庫 638
26.5 數據表結構管理 639
26.5.1 數據表結構 639
26.5.2 字段類型 640
26.5.3 創建數據表 641
26.5.4 更改表結構 644
26.5.5 複製數據表 646
26.5.6 刪除數據表 646
26.6 數據管理 647
26.6.1 查詢數據 647
26.6.2 插入數據 648
26.6.3 更新數據 650
26.6.4 刪除數據 651
26.7 索引管理 651
26.7.1 創建索引 651
26.7.2 刪除索引 652
26.8 用戶和權限管理 652
26.8.1 MySQL權限控制原理 652
26.8.2 用戶管理 655
26.8.3 用戶授權 656
26.8.4 回收權限 658
26.9 MySQL備份恢復 658
26.9.1 使用mysqldump備份和恢復 658
26.9.2 使用mysqlhotcopy備份和恢復 660
26.9.3 使用SQL語句備份和恢復 661
26.9.4 啓用二進制日誌 662
26.9.5 直接備份數據文件 663
26.10 MySQL圖形化管理工具 663
26.10.1 獲得phpMyAdmin安裝包 663
26.10.2 安裝phpMyAdmin 664
26.10.3 配置phpMyAdmin 664
26.10.4 登錄phpMyAdmin 665
26.10.5 數據庫管理 666
26.10.6 數據表管理 667
26.10.7 表記錄管理 668
26.10.8 用戶權限管理 670
26.11 MySQL常見問題處理 672
26.11.1 phpMyAdmin出現“配置文件現在需要絕密的短語密碼”警告 672
26.11.2 查詢時出現Out of memory錯誤 672
26.11.3 忘記root用戶口令的解決方法 672
第27章 Webmin:Linux上的GUI 管理工具 674
27.1 Webmin簡介 674
27.2 Webmin的安裝及使用 675
27.2.1 如何獲得Webmin安裝包 675
27.2.2 安裝Webmin 676
27.2.3 啓動和關閉Webmin 676
27.2.4 登錄Webmin 678
27.2.5 更改Webmin的語言和主題 679
27.3 Webmin各功能模塊介紹 680
27.3.1 Webmin類型模塊 680
27.3.2 系統類型模塊 680
27.3.3 服務器類型模塊 681
27.3.4 網絡類型模塊 682
27.3.5 硬件類型模塊 683
27.3.6 集羣類型模塊 684
27.3.7 其他類型模塊 685
27.4 Webmin類型模塊 685
27.4.1 Webmin用戶管理 685
27.4.2 配置Webmin地址和端口 688
27.4.3 升級Webmin 688
27.5 系統類型模塊 689
27.5.1 Cron 任務調度 689
27.5.2 用戶與組 690
27.5.3 更改口令 691
27.5.4 磁盤和網絡文件系統 692
27.5.5 文件系統備份 693
27.6 服務器類型模塊 694
27.6.1 Apache 服務器 694
27.6.2 DHCP服務器 696
27.6.3 Postfix配置 696
27.6.4 Samba Windows 文件共享 697
27.6.5 Squid代理服務器 697
27.7 網絡類型模塊 698
27.7.1 網絡接口 698
27.7.2 路由和網關 699
27.7.3 NFS輸出 699
27.8 硬件類型模塊 700
27.8.1 GRUB開機加載程序 700
27.8.2 本地磁盤分區 701
27.8.3 系統時間 702
27.9 其他類型模塊 703
第28章 Oracle服務器配置和管理 704
28.1 Oracle 11g簡介 704
28.2 Oracle數據庫服務器的安裝 705
28.2.1 如何獲得Oracle安裝包 705
28.2.2 軟、硬件要求 706
28.2.3 安裝前的配置 708
28.2.4 安裝Oracle 11g 710
28.2.5 配置網絡監聽程序 715
28.3 數據庫管理 719
28.3.1 創建數據庫 720
28.3.2 更改數據庫 732
28.3.3 刪除數據庫 734
28.4 Oracle服務管理 735
28.4.1 手工啓動和關閉Oracle服務 736
28.4.2 開機自動啓動Oracle數據庫服務 738
28.4.3 檢測Oracle數據庫狀態 740
28.5 Oracle圖形化管理工具——OEM 741
28.5.1 安裝和使用OEM 741
28.5.2 數據庫性能 744
28.5.3 用戶與權限管理 745
28.5.4 數據表管理 747
28.6 Oracle常見問題處理 751
28.6.1 如何獲得數據庫創建過程中的詳細信息 751
28.6.2 訪問OEM出現“安全連接失敗,使用了無效的安全證書”錯誤 752
28.6.3 忘記sys用戶口令 752
第29章 Oracle RAC服務器配置和管理 753
29.1 Oracle RAC簡介 753
29.2 Oracle Clusterware安裝 754
29.2.1 如何獲得Clusterware安裝包 754
29.2.2 安裝Clusterware的硬件環境要求 755
29.2.3 安裝Clusterware的軟件環境要求 755
29.2.4 網絡配置 756
29.2.5 配置內核參數 757
29.2.6 創建oracle用戶和用戶組 757
29.2.7 配置ssh協議 758
29.2.8 配置用戶環境 760
29.2.9 配置存儲 760
29.2.10 安裝Clusterware 762
29.2.11 CRS服務的檢測與啓動關閉 769
29.3 安裝數據庫軟件 771
29.3.1 安裝必須的軟件包 771
29.3.2 安裝Oracle 11g 772
29.4 創建RAC數據庫 775
29.5 RAC數據庫的管理 782
29.5.1 RAC數據庫進程說明 783
29.5.2 啓動和關閉RAC數據庫 783
29.5.3 Oracle網絡監聽程序配置 784
29.5.4 故障切換 786
29.6 Oracle RAC常見問題 787
29.6.1 執行root.sh腳本出現載入共享庫錯誤 788
29.6.2 執行root.sh腳本出現初始化ocrconfig失敗的錯誤 788
29.6.3 執行root.sh腳本出現CRS-0215錯誤 789
附錄:Linux指令速查索引... 790

Linux服務器架設指南

內容簡介回到頂部↑

Linux是當今最爲流行的開源操作系統,它功能強大、性能穩定、使用靈活,既可以在普通的桌面使用,也可以用於業務龐雜的企業。本書是一本深入學習Linux的理想教程,它以Red Hat Enterprise Linux 5爲依託,詳細敘述了各種網絡服務的安裝、運行、配置方法和一些相關的知識。全書分爲3篇共23章,包括網絡硬件基礎知識、Linux操作系統管理、主機與網絡安全、防火牆、入侵檢測系統,以及Telnet、SSH、VNC、FTP、DHCP、DNS、Web、MySQL、Postfix、NFS、Samba、Squid、LDAP、NTP、VPN、流媒體服務器的架設方法。.
本書附帶1張DVD光盤,內容爲專門爲本書錄制的8.5小時教學視頻、Ubuntu安裝光盤的鏡像文件和另外贈送的35小時Linux專題學習視頻。..
本書語言通俗、條理清楚、循序漸進、示例豐富,適合於已經掌握Linux操作系統入門知識、並對網絡應用有了初步瞭解的讀者閱讀,也可以供Linux系統管理、維護、開發人員學習參考,同時也是各類職業院校、IT培訓機構學生學習和掌握Linux高級應用的理想教材。...

目錄回到頂部↑

第1篇 預 備 知 識.
第1章 網絡硬件知識 2
1.1 計算機網絡 2
1.1.1 計算機網絡的定義 2
1.1.2 計算機網絡的功能 3
1.1.3 計算機網絡分類 4
1.2 局域網傳輸介質 6
1.2.1 雙絞線 7
1.2.2 同軸電纜 9
1.2.3 光導纖維 9
1.2.4 無線介質 11
1.3 局域網連網設備 12
1.3.1 網卡 12
1.3.2 集線器 14
1.3.3 交換機 14
1.3.4 路由器 16
1.3.5 三層交換機 17
1.4 幾種局域網架設實例 17
1.4.1 雙機互連網絡 18
1.4.2 小型交換網絡 18

.1.4.3 企業網絡 19
1.4.4 無線局域網 19
1.5 小結 20
第2章 Linux服務器架設規劃 21
2.1 網絡規劃 21
2.1.1 需求分析 21
2.1.2 目標與設計原則 22
2.1.3 硬件和系統軟件平臺的規劃 24
2.2 Linux服務器硬件規劃 25
2.2.1 對CPU的要求 25
2.2.2 對內存的要求 26
2.2.3 對硬盤的要求 27
2.2.4 有關網卡的建議 28
2.3 Linux操作系統 28
2.3.1 Linux的起源 28
2.3.2 Linux的特點 29
2.3.3 Linux的發行版本 30
2.3.4 Red Hat Enterprise Linux介紹 32
2.4 小結 33
第3章 Linux系統的安裝、管理與優化 34
3.1 Red Hat Enterprise Linux 5的安裝 34
3.1.1 準備安裝RHEL 5 34
3.1.2 開始安裝RHEL 5 35
3.1.3 安裝後的設置工作 39
3.2 Linux系統管理 42
3.2.1 登錄系統 42
3.2.2 用戶管理 43
3.2.3 進程管理 47
3.2.4 軟件包管理 49
3.3 Linux性能優化 52
3.3.1 關閉不需要的服務進程 52
3.3.2 文件系統參數優化 53
3.3.3 內核參數優化 55
3.4 小結 56
第4章 Linux網絡接口配置 57
4.1 TCP/IP網絡基礎 57
4.1.1 網絡協議 57
4.1.2 ISO/OSI模型 57
4.1.3 TCP/IP模型 59
4.2 網絡接口配置的基本內容 60
4.2.1 主機名 60
4.2.2 IP地址 60
4.2.3 子網掩碼 62
4.2.4 默認網關地址 63
4.2.5 域名服務器(DNS) 63
4.2.6 DHCP服務器 64
4.3 配置以太網連接 64
4.3.1 添加以太網連接 65
4.3.2 配置網絡參數 66
4.3.3 使用配置文件 69
4.3.4 配置無線以太網連接 70
4.4 配置撥號連接 71
4.4.1 使用Modem撥號上網 71
4.4.2 通過xDSL撥號上網 73
4.4.3 使用ISDN撥號上網 73
4.5 小結 75
第5章 Linux網絡管理與故障診斷 76
5.1 Linux網絡設置命令 76
5.1.1 網絡接口配置命令——ifconfig 76
5.1.2 檢查網絡是否通暢——ping命令 78
5.1.3 追蹤數據包傳輸路徑——traceroute命令 79
5.1.4 管理系統ARP緩存——arp命令 81
5.1.5 域名查找工具——dig命令 83
5.2 網絡相關的配置文件 85
5.2.1 /etc/sysconfig/network文件 85
5.2.2 /etc/sysconfig/network-scripts/ifcfg-ethN文件 86
5.2.3 /etc/resolv.conf和/etc/hosts文件 87
5.3 Linux下的網絡故障診斷 88
5.3.1 診斷網卡故障 88
5.3.2 網卡驅動程序 90
5.3.3 診斷網絡層問題 92
5.3.4 診斷傳輸層和應用層問題 92
5.4 小結 94
第2篇 Linux主機與網絡安全措施
第6章 Linux主機安全 96
6.1 網絡端口 96
6.1.1 什麼是端口 96
6.1.2 端口的分類 97
6.1.3 查看本機的端口狀態 97
6.1.4 端口的關閉與啓用 99
6.1.5 端口掃描工具nmap 101
6.2 Linux自動更新 104
6.2.1 自動更新的意義 104
6.2.2 CentOS的yum客戶端配置 105
6.2.3 yum客戶端的使用 107
6.3 Linux平臺的防毒軟件 109
6.3.1 Linux平臺下的計算機病毒 109
6.3.2 Clamav反病毒軟件的獲取與安裝 110
6.3.3 Clamav反病毒軟件的使用 110
6.3.4 以後臺進程方式運行Clamav反病毒軟件 112
6.3.5 Clamav病毒庫的更新 116
6.4 SELinux簡介 119
6.4.1 SELinux的工作流程 119
6.4.2 SELinux的配置 120
6.4.3 SELinux應用示例 121
6.5 小結 124
第7章 Linux系統日誌 125
7.1 Linux系統日誌基礎 125
7.1.1 Linux系統日誌進程的運行 125
7.1.2 Linux系統日誌配置 126
7.1.3 查看Linux系統日誌 128
7.2 Linux日誌高級專題 129
7.2.1 日誌的轉儲 129
7.2.2 登錄日誌 130
7.2.3 記賬功能 131
7.3 日誌分析工具 133
7.3.1 Logcheck日誌分析工具 133
7.3.2 Swatch日誌分析工具 134
7.4 小結 136
第8章 Linux路由配置 137
8.1 路由的基本概念 137
8.1.1 路由原理 137
8.1.2 路由表 138
8.1.3 靜態路由和動態路由 139
8.2 Linux靜態路由配置 140
8.2.1 route命令格式 140
8.2.2 普通客戶機的路由設置 141
8.2.3 路由器配置實例 142
8.3 Linux的策略路由 143
8.3.1 策略路由的概念 144
8.3.2 路由表管理 144
8.3.3 路由策略管理 146
8.3.4 策略路由應用實例 147
8.4 小結 149
第9章 Linux防火牆配置 150
9.1 iptables防火牆介紹 150
9.1.1 netfilter框架 150
9.1.2 iptables防火牆內核模塊 151
9.1.3 iptables命令格式 152
9.2 iptables主機防火牆 155
9.2.1 iptables防火牆的運行與管理 155
9.2.2 RHEL 5開機時默認的防火牆規則 157
9.2.3 管理主機防火牆規則 159
9.2.4 常用的主機防火牆規則 161
9.2.5 使用圖形界面管理主機防火牆規則 162
9.3 iptables網絡防火牆配置 164
9.3.1 保護服務器子網的防火牆規則 164
9.3.2 保護內部客戶機的防火牆規則 166
9.3.3 mangle表應用舉例 168
9.4 iptables防火牆的NAT配置 169
9.4.1 NAT簡介 169
9.4.2 使用iptables配置源NAT 170
9.4.3 使用iptables配置目的NAT 171
9.5 小結 173
第10章 Snort入侵檢測系統 174
10.1 入侵檢測簡介 174
10.1.1 網絡安全 174
10.1.2 常見的網絡攻擊類型 175
10.1.3 入侵檢測系統 178
10.2 Snort的安裝與使用 180
10.2.1 Snort簡介 180
10.2.2 Snort的安裝與運行 180
10.2.3 Snort命令的格式 181
10.2.4 用Snort抓取數據包 182
10.3 配置Snort 184
10.3.1 定義Snort變量 185
10.3.2 配置Snort選項 186
10.3.3 配置Snort預處理模塊 188
10.3.4 配置Snort輸出插件 191
10.3.5 配置Snort規則文件 192
10.4 編寫Snort規則 193
10.4.1 Snort規則基礎 193
10.4.2 Snort規則頭 193
10.4.3 Snort規則選項 195
10.5 小結 197
第3篇 Linux常見服務器架設篇
第11章 遠程管理Linux 200
11.1 架設Telnet服務器 200
11.1.1 遠程管理 200
11.1.2 Telnet工作原理 201
11.1.3 Telnet協議 202
11.1.4 實際的Telnet數據包 204
11.1.5 Telnet服務器軟件的安裝 205
11.1.6 Telnet服務器軟件的運行 206
11.1.7 Telnet服務器軟件的配置 208
11.2 架設SSH服務器 210
11.2.1 SSH概述 210
11.2.2 OpenSSH服務器的安裝和運行 211
11.2.3 SSH客戶端的使用 213
11.2.4 配置OpenSSH客戶端 216
11.2.5 OpenSSH的端口轉發功能 217
11.2.6 Windows下的SSH客戶端 219
11.2.7 配置OpenSSH服務器 223
11.3 使用VNC實現遠程管理 229
11.3.1 VNC簡介 230
11.3.2 VNC服務器的安裝與運行 230
11.3.3 VNC客戶端 232
11.3.4 VNC服務器配置 234
11.4 小結 237
第12章 架設FTP服務器 238
12.1 FTP的工作原理 238
12.1.1 FTP的工作流程 238
12.1.2 FTP協議規範之一:數據傳送格式 239
12.1.3 FTP協議規範之二:控制命令種類 240
12.1.4 FTP協議規範之三:應答格式 242
12.1.5 用抓包工具觀察FTP協議數據包 243
12.2 FTP客戶端 244
12.2.1 數據連接的主動方式和被動方式 244
12.2.2 匿名賬號 246
12.2.3 數據傳輸的ASCII模式和二進制模式 247
12.2.4 FTP客戶端常用命令詳解 248
12.2.5 圖形界面的FTP客戶端 254
12.3 Vsftpd的安裝與運行 256
12.3.1 Vsftpd服務器軟件簡介 256
12.3.2 Vsftpd的安裝 257
12.3.3 Vsftpd的運行與簡單配置 257
12.4 Vsftpd高級配置 260
12.4.1 初始配置文件 260
12.4.2 匿名用戶配置 263
12.4.3 Vsftpd虛擬主機的配置 265
12.4.4 虛擬用戶的配置 267
12.4.5 Vsftpd的日誌 270
12.5 磁盤限額 272
12.5.1 設置支持磁盤限額的分區 272
12.5.2 設置對用戶的磁盤限額 273
12.5.3 啓用和終止磁盤限額 274
12.6 小結 275
第13章 DHCP服務 276
13.1 DHCP服務概述 276
13.1.1 DHCP的功能 276
13.1.2 DHCP的工作過程 277
13.1.3 DHCP報文格式 279
13.1.4 DHCP與BOOTP 280
13.2 DHCP服務器的安裝與運行 281
13.2.1 DHCP服務的安裝 281
13.2.2 DHCP服務器的運行 282
13.2.3 DHCP客戶端 283
13.3 DHCP服務配置 285
13.3.1 ISC DHCP配置參數 286
13.3.2 ISC DHCP配置的聲明和選項 288
13.3.3 ISC DHCP的DDNS功能 290
13.3.4 客戶端租約數據庫文件dhcpd.lease 292
13.3.5 DHCP中繼代理 294
13.4 小結 295
第14章 DNS服務器架設與應用 296
14.1 DNS工作原理 296
14.1.1 名稱解析方法 296
14.1.2 DNS組成 297
14.1.3 DNS查詢的過程 298
14.1.4 DNS報文格式 300
14.1.5 實際的DNS報文數據.. 302
14.2 BIND的安裝與運行 303
14.2.1 BIND簡介 303
14.2.2 BIND的獲取與安裝 304
14.2.3 BIND的簡單配置與運行 305
14.2.4 chroot功能 308
14.2.5 使用rndc 309
14.3 BIND的配置 311
14.3.1 BIND的主配置文件 311
14.3.2 根服務器文件named.root 315
14.3.3 區域數據文件 316
14.3.4 反向解析區域數據文件 318
14.3.5 配置DNS負載均衡功能 319
14.3.6 直接域名、泛域名與子域 320
14.3.7 輔域服務器和只緩存服務器 322
14.4 小結 324
第15章 Web服務器架設和管理 325
15.1 HTTP協議 325
15.1.1 HTTP協議的通信過程 325
15.1.2 HTTP協議的請求行和應答行 327
15.1.3 HTTP的頭域 328
15.1.4 HTTP協議數據包實例 330
15.1.5 持久連接和非持久連接 333
15.2 Apache的安裝與運行 335
15.2.1 Apache簡介 335
15.2.2 Apache軟件的獲取與安裝 336
15.2.3 Apache的運行 337
15.3 Apache服務器的配置 339
15.3.1 Apache全局配置選項 339
15.3.2 Apache主服務器配置 341
15.3.3 目錄訪問控制 346
15.3.4 配置用戶個人網站 349
15.3.5 認證與授權配置 351
15.3.6 虛擬主機配置 354
15.3.7 日誌記錄 357
15.3.8 讓Apache支持SSL 359
15.4 Apache對動態網頁的支持 362
15.4.1 CGI腳本 362
15.4.2 使Apache支持PHP5 364
15.4.3 使Apache支持JSP 365
15.5 小結 369
第16章 MySQL數據庫服務器架設 370
16.1 數據庫簡介 370
16.1.1 數據庫的基本概念 370
16.1.2 SQL語言簡介 371
16.1.3 MySQL數據庫簡介 372
16.2 MySQL數據庫服務器的架設 373
16.2.1 MySQL數據庫軟件的安裝與運行 373
16.2.2 MySQL數據庫客戶端 375
16.2.3 MySQL圖形界面管理工具 377
16.3 MySQL服務器的配置與連接 380
16.3.1 配置文件my.cnf 380
16.3.2 mysqld進程配置 383
16.3.3 MySQL實例管理器 385
16.3.4 編程語言與MySQL數據庫的連接 388
16.4 小結 389
第17章 Postfix郵件服務器架設 390
17.1 郵件系統工作原理 390
17.1.1 郵件系統的組成及傳輸流程 390
17.1.2 簡單郵件傳輸協議SMTP 391
17.1.3 郵局協議POP3 394
17.1.4 Internet消息訪問協議IMAP簡介 396
17.2 Postfix郵件系統 398
17.2.1 Postfix概述 398
17.2.2 Postfix郵件系統結構 399
17.2.3 Postfix服務器軟件的安裝與運行 401
17.3 Postfix服務器的配置 403
17.3.1 Postfix服務器基本配置 403
17.3.2 Postfix郵件接收域 406
17.3.3 配置SMTP認證 408
17.4 Postfix與其他軟件的集成 411
17.4.1 用vm-pop3d構建POP3服務器 411
17.4.2 用Dovecot架設POP3和IMAP服務器 413
17.4.3 使用MySQL存儲郵件賬號 416
17.4.4 用Squirrelmail構建Web界面的郵件客戶端 417
17.4.5 用procmail過濾郵件 420
17.5 小結 423
第18章 共享文件系統 424
18.1 NFS服務的安裝、運行與配置 424
18.1.1 NFS概述 424
18.1.2 遠程過程調用RPC 425
18.1.3 NFS協議 426
18.1.4 NFS服務的安裝與運行 428
18.1.5 NFS服務器共享目錄的導出 430
18.1.6 使用圖形界面管理NFS服務器 433
18.1.7 客戶端使用NFS服務 434
18.1.8 自動掛載NFS文件系統 437
18.2 Samba服務的安裝、運行與配置 438
18.2.1 SMB協議概述 438
18.2.2 NetBIOS協議 440
18.2.3 Samba概述 442
18.2.4 Samba服務器的安裝與運行 442
18.2.5 與Samba配置有關的Windows術語 444
18.2.6 配置Samba服務器的全局選項 445
18.2.7 Samba的共享配置 448
18.2.8 使用圖形界面配置Samba服務器 450
18.2.9 Samba客戶端 452
18.3 小結 455
第19章 Squid代理服務器架設 456
19.1 代理服務概述 456
19.1.1 代理服務器的工作原理 456
19.1.2 Web緩存的類型和特點 458
19.1.3 3種典型的代理方式 459
19.2 Squid服務器的安裝與運行 461
19.2.1 Squid簡介 461
19.2.2 Squid軟件的安裝與運行 462
19.2.3 代理的客戶端配置 463
19.3 配置Squid服務器 465
19.3.1 Squid常規配置選項 466
19.3.2 Squid訪問控制 468
19.3.3 Squid多級代理配置 470
19.3.4 透明代理配置 472
19.3.5 反向代理配置 473
19.3.6 Squid日誌管理 475
19.4 小結 477
第20章 LDAP服務的配置與應用 478
20.1 目錄服務概述 478
20.1.1 目錄服務 478
20.1.2 X.500簡介 479
20.1.3 輕量級目錄訪問協議LDAP 480
20.1.4 LDAP的基礎模型 481
20.1.5 流行的LDAP產品 482
20.2 架設OpenLDAP服務器 484
20.2.1 OpenLDAP服務器的安裝與運行 484
20.2.2 OpenLDAP服務器的主配置文件 486
20.2.3 使用LDIF添加目錄樹 489
20.2.4 使用圖形界面工具管理LDAP目錄 492
20.3 使用OpenLDAP進行用戶認證 494
20.3.1 Linux系統用戶認證 494
20.3.2 Apache服務器的用戶認證 496
20.4 小結 496
第21章 網絡時間服務器的配置與使用 497
21.1 網絡時間服務概述 497
21.1.1 NTP協議用途與工作原理 497
21.1.2 NTP協議的報文格式及工作模式 499
21.1.3 NTP服務的網絡體系結構 500
21.1.4 時區 501
21.2 NTP服務器的安裝、運行與配置 502
21.2.1 NTP服務器的安裝與運行 502
21.2.2 NTP服務器端配置 504
21.2.3 NTP服務器的測試 507
21.3 NTP客戶端的配置 508
21.3.1 Linux NTP客戶端的配置 508
21.3.2 Windows NTP客戶端的配置 509
21.4 小結 510
第22章 架設VPN服務器 511
22.1 VPN概述 511
22.1.1 VPN原理 511
22.1.2 VPN協議 513
22.1.3 VPN的身份驗證協議 514
22.2 基於PPTP協議的VPN服務器架設 515
22.2.1 PPTP VPN服務器的安裝與運行 516
22.2.2 PPTP服務器的配置 517
22.2.3 PPTP Windows客戶端的配置與使用 519
22.3 小結 522
第23章 流媒體服務器架設 523
23.1 流媒體技術基礎 523
23.1.1 流媒體傳輸的基本原理 523
23.1.2 實時流媒體協議RTSP 524
23.1.3 流媒體播放方式 525
23.1.4 流媒體文件的壓縮格式 526
23.2 Helix Server的安裝與運行 527
23.2.1 Helix Server的獲取 528
23.2.2 Helix Server的安裝 529
23.2.3 Helix Server的運行與停止 531
23.2.4 測試Helix Server 532
23.3 Helix Server的基本配置 534
23.3.1 Helix服務器的Web管理界面 534
23.3.2 端口設置與IP地址綁定 535
23.3.3 連接控制與冗餘服務器 536
23.3.4 加載點與HTTP分發 537
23.4 Helix Server的安全設置 538
23.4.1 訪問控制 538
23.4.2 用戶賬號數據庫 539
23.4.3 認證域 540
23.4.4 資源保護 542
23.5 小結... 545

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章