《深入理解Net-SNMP》是2015年機械工業出版社出版的圖書,作者是張春強。
基本介紹
- 中文名:深入理解Net-SNMP
- 作者:張春強
- 出版社:機械工業出版社
- ISBN:9787111509813
內容簡介,圖書目錄,作者簡介,
內容簡介
近年來,Net-SNMP的套用越來越深入,越來越普及,Net-SNMP本身也越來越強大,與之伴隨的,它的使用方法也越來越複雜。目前,國內Net-SNMP方面的圖書奇缺,本書應該是目前該領域技術版本新、內容系統、講解深入和具有實戰性的著作。作者是前中興通訊的Linux軟體開發工程師,有多年的Net-SNMP相關開發經驗,是國內Net-SNMP專家之一。
《深入理解Net-SNMP》從工程師視角,以實際項目為依託,系統講解了Net-SNMP的管理、開發和維護。本書尤為注重實踐,通過Net-SNMP支持的4種開發語言、5個綜合型的案例,完整呈現網路監控部署、代理端、管理端軟體的開發過程,提供多個可復用框架及其原始碼,同時重點講解了框架的重構最佳化、自定義代碼模板和免維護開發實踐。
《深入理解Net-SNMP》分為三大部分,深刻解讀了使用Net-SNMP開發網路監控應用程式的方法和技巧,適用於伺服器、嵌入式設備等網路互聯設備的監控。
基礎篇(第1~6章) 詳細介紹了網路管理的基礎知識和協定數據包分析方法,重點是MIB的深刻解讀;涵蓋SNMP協定框架的幾大基礎組件:MIB的語法基礎ASN.1、管理信息結構SMI和管理信息庫MIB。最後,詳細介紹了Net-SNMP套件中提供的工具集、開發模式等。
實戰篇(第7~11章) 這是本書的重點,首先詳細解讀了Net-SNMP的配置選項,提供了結合其他開源軟體部署企業級的監控系統的詳細過程。接著詳述了基於Net-SNMP中的C語言API、Python綁定、Perl綁定進行代理端和管理端軟體開發的方法,包括利用3種語言開發4種不同的套用。由於開發模式和語言固定,這裡介紹的都是可直接復用的框架。
高級篇(第12~15章) 是實戰篇的延續和升華,主要內容包括:重構最佳化代理開發框架,實現高效開發和輕維護;子代理和動態載入模式,實現分散式監控;測試調試Net-SNMP的方法,GDB等工具調試網路協定的技巧。
書中涉及大量的Linux軟體開發技術和多種開發語言的項目實踐,這些同樣值得學習。
圖書目錄
前 言
第一部分 基礎篇
第1章 網路管理 2
1.1 網路管理 2
1.1.1 網路管理的需求 3
1.1.2 網路管理標準 4
1.2 網路管理框架 6
1.2.1 網路管理模型 6
1.2.2 網路管理模式與技術 9
1.2.3 網路管理功能 11
1.3 簡單網路管理協定 13
1.3.1 SNMP的發展歷史 14
1.3.2 SNMP的框架組成 15
1.3.3 SNMP的功能 17
1.3.4 實現版本 22
1.4 小結 24
第2章 抽象語法標記 26
2.1 ASN.1概述 26
2.2 BNF基礎 28
2.3 ASN.1基礎 30
2.3.1 ASN.1的基礎符號 30
2.3.2 定義方法 33
2.4 ASN.1標籤類 34
2.5 數據類型 35
2.5.1 簡單數據類型 36
2.5.2 構造數據類型 39
2.5.3 其他類型 40
2.5.4 子類型 40
2.5.5 標籤類型定義 41
2.6 模組定義 42
2.7 宏定義 43
2.8 例子 44
2.9 小結 46
第3章 管理信息結構SMI 47
3.1 SMI概述 47
3.2 組織結構 48
3.2.1 OID樹 49
3.2.2 節點信息 50
3.3 數據類型 51
3.3.1 基礎數據類型 51
3.3.2 自定義數據類型 52
3.3.3 子類型 53
3.4 宏 55
3.4.1 OBJECT-TYPE 55
3.4.2 TRAP 58
3.4.3 MODULE-IDENTITY 60
3.4.4 OBJECT-IDENTITY 61
3.4.5 一致性陳述 61
3.4.6 文本約定 64
3.5 小結 68
第4章 管理信息庫MIB 70
4.1 MIB概述 70
4.2 標準MIB簡介 72
4.3 MIB結構 75
4.4 MIB中的管理對象 76
4.4.1 標量和表格對象 77
4.4.2 TRAP定義 81
4.5 MIB的編寫方法 82
4.5.1 編寫建議 83
4.5.2 MIB的編寫和編譯工具 86
4.5.3 常見錯誤 91
4.6 小結 93
第5章 BER傳輸編碼 95
5.1 BER概述 96
5.2 BER詳解 97
5.2.1 Tag編碼 97
5.2.2 長度編碼 99
5.2.3 值編碼 100
5.3 實例分析 103
5.3.1 報文解析 103
5.3.2 抓包示例 106
5.4 小結 108
第6章 Net-SNMP基礎 110
6.1 Net-SNMP概述 110
6.1.1 Net-SNMP的由來 111
6.1.2 Net-SNMP的特點 112
6.1.3 Net-SNMP重要組件 114
6.2 Net-SNMP安全模型 114
6.2.1 USM 115
6.2.2 VACM 115
6.2.3 TSM 116
6.2.4 基於SSH的安全傳輸機制 117
6.2.5 如何選擇安全機制 117
6.3 命令工具集 118
6.3.1 協定操作工具 120
6.3.2 信息收集與查看工具 125
6.3.3 配置工具 129
6.3.4 許可權配置工具 131
6.3.5 mib2c代碼生成工具 135
6.4 開發模式 138
6.4.1 開發語言 139
6.4.2 開發模式 139
6.4.3 選擇開發模式 140
6.5 小結 141
第二部分 實戰篇
第7章 使用Net-SNMP監測系統 144
7.1 系統搭建 145
7.1.1 conf?igure詳解 146
7.1.2 編譯安裝 151
7.2 配置檔案詳解 153
7.2.1 snmpd.conf詳解 154
7.2.2 snmp.conf詳解 170
7.2.3 snmptrapd.conf詳解 172
7.3 企業級系統監測案例 175
7.3.1 系統監測需求 176
7.3.2 監測方案 177
7.3.3 工具簡介與配置 179
7.3.4 Net-SNMP監測示例 183
7.3.5 系統集成 193
7.4 小結 200
第8章 管理端套用開發 202
8.1 開發方法與流程 202
8.1.1 通信流程 203
8.1.2 主要的數據結構 204
8.1.3 主要的API 208
8.1.4 程式示例 213
8.1.5 同步與異步 218
8.2 管理端套用開發需求與方案 219
8.3 鍊表模組 222
8.4 輔助模組 223
8.5 主程式實現 224
8.5.1 程式框架 224
8.5.2 設計與開發 225
8.5.3 代碼清單 228
8.5.4 編譯與運行 245
8.6 完善與最佳化 249
8.6.1 實現守護進程 249
8.6.2 數據保存 251
8.6.3 綁定多個OID 251
8.6.4 讀取MIB檔案 251
8.7 小結 252
第9章 SNMP代理開發實戰 253
9.1 SNMP代理開發流程與方法 254
9.2 mib2c生成代碼框架詳解 256
9.2.1 標量代碼框架 256
9.2.2 表格代碼框架iterate 269
9.2.3 Trap/Information框架 275
9.3 代理開發需求與方案 277
9.3.1 開發需求 278
9.3.2 實現方案 279
9.4 開發MIB 281
9.5 進程間通信之共享記憶體 282
9.5.1 數據模型 282
9.5.2 共享記憶體編程實踐 284
9.5.3 通信接口 287
9.6 模擬業務進程 292
9.7 代理程式實現 293
9.7.1 參數類數據實現 293
9.7.2 實時類數據實現 295
9.7.3 Trap實現 299
9.7.4 配置與編譯 302
9.8 集成測試 303
9.8.1 實時數據測試 304
9.8.2 參數數據測試 304
9.8.3 告警數據測試 305
9.9 最佳化與完善 306
9.9.1 數據字典的最佳化 306
9.9.2 告警完善 306
9.9.3 共享記憶體接口的最佳化 307
9.9.4 框架最佳化 307
9.9.5 雙索引實現方法 307
9.10 小結 308
第10章 使用Python開發SNMP應用程式 309
10.1 Python開發SNMP應用程式介紹 310
10.1.1 Python簡介 310
10.1.2 Python模組簡介 311
10.1.3 安裝模組 311
10.2 Python模組中重要的類 312
10.2.1 變數綁定 312
10.2.2 會話類 314
10.3 API使用介紹 315
10.4 實戰—Python版本的NMS 317
10.4.1 query模組 317
10.4.2 nmsapp主模組 318
10.4.3 運行情況 322
10.5 小結 323
第11章 使用Perl開發SNMP應用程式 324
11.1 Perl開發SNMP應用程式介紹 324
11.1.1 Perl簡介 325
11.1.2 Perl模組簡介 325
11.1.3 安裝模組 327
11.2 Perl模組功能詳解 328
11.2.1 NetSNMP::ASN 328
11.2.2 NetSNMP::OID 329
11.2.3 AnyData::SNMP 330
11.2.4 NetSNMP::agent 330
11.2.5 SNMP 332
11.3 管理端套用框架 336
11.4 代理框架 337
11.5 實戰—監控MySQL 339
11.5.1 MySQL信息查看:SHOW GLOBAL STATUS 340
11.5.2 自動生成MIB 341
11.5.3 代理實現 342
11.5.4 運行情況 348
11.6 小結 348
第三部分 高級篇
第12章 代理的重構與最佳化 352
12.1 為什麼要重構 353
12.1.1 回顧代理開發的艱辛 353
12.1.2 維護代理的漫漫長路 354
12.2 代理重構簡述 356
12.3 重構代理模板框架 358
12.3.1 分析代碼框架 358
12.3.2 old-api框架重構實例 360
12.3.3 iterate框架重構方向 368
12.4 代理免維護思路 370
12.4.1 MIB自動化 370
12.4.2 深處探究 371
12.5 小結 373
第13章 mib2c晉級之自定義代碼框架 374
13.1 mib2c配置檔案語法 375
13.1.1 從例子開始 375
13.1.2 指令 376
13.1.3 變數 378
13.1.4 子程式 380
13.2 配置檔案分析示例 380
13.2.1 生成h檔案 381
13.2.2 生成c檔案 382
13.3 定製配置檔案實例—自定義代碼框架 383
13.3.1 定製h檔案配置檔案 384
13.3.2 定製c檔案配置檔案 386
13.3.3 集成 388
13.4 小結 389
第14章 Net-SNMP代理開發高級技術集錦 390
14.1 代理高級功能 391
14.1.1 動態表 391
14.1.2 上下文 392
14.1.3 持久數據 395
14.1.4 數據同步 398
14.2 子代理 399
14.2.1 配置AgentX 401
14.2.2 開發子代理示例 402
14.2.3 編譯與運行 404
14.2.4 分散式監控示例 405
14.3 動態載入模式 406
14.3.1 載入共享對象 407
14.3.2 開發共享對象示例 408
14.3.3 編譯與運行 409
14.4 小結 409
第15章 代理測試與調試 410
15.1 代理測試方法與技術 411
15.1.1 使用MG Soft MIBbrowser測試 412
15.1.2 使用iReasoning測試 414
15.1.3 編寫腳本測試 415
15.2 程式調試方法概述 416
15.3 Net-SNMP原生調試方法 417
15.3.1 token調試機制 417
15.3.2 日誌 419
15.3.3 列印原始數據報 420
15.4 GDB調試方法與技術 421
15.4.1 調試前的準備 422
15.4.2 調試過程與指令 423
15.4.3 GDB腳本調試技術 432
15.5 輔助調試工具介紹 435
15.5.1 tcpdump 435
15.5.2 nm 438
15.5.3 objdump 441
15.5.4 strace 442
15.6 小結 446
作者簡介
張春強,國內頂尖Net-SNMP專家,從事Linux開發多年。現就職於世界500強企業,擔任高級軟體工程師一職,曾就職於中興通訊。有多款網路協定套用軟體開發經驗,在中興通訊深圳研發中心工作期間,擔任Linux軟體開發工程師,參與過基站電源網路監控系統的研發,該系統部署在全球中興基站設備中,用於保障持續可靠的電信服務。精通Linux網路編程技術,實踐經驗豐富。

