編輯推薦
國內第1本讓你在編程實踐中學習P2P程序設計的書,討論瞭穿透防火牆、NAT等直接建立UDP和TCP連接的各種方案。
包含瞭商業級Windows個人防火牆的完整實例代碼,采用應用層(SPI) / 核心層(IMD驅動)雙重過濾,完全管控TCP/IP網絡封包。
涉及到60多個完整實例,許多的例子稍做修改即可應用到實際項目中。
一本講述Windows網絡編程接口的入門教程。
一本講述Windows係統網絡組件的書。
一本講述Ndis網絡內核驅動開發的書。
一本分析商業級防火牆源程序代碼的書。
一本關於通信協議的書。
一本關於網絡安全的書。
一本不僅讓您學會網絡編程,更能讓您從此喜歡上她的書。
內容簡介
本書將編程方法、網絡協議和應用實例有機結閤起來,詳細闡明瞭Windows下網絡編程的相關知識,為緻力於網絡程序設計的讀者提供一本注重實際應用的入門到深入的教程。本書首先介紹瞭Windows平颱上進行網絡編程的基礎知識,包括網絡硬件、術語、協議、Winsock編程接口和各種I/O方法等;然後通過具體實例詳細講述瞭時下流行的高性能可伸縮服務器設計、IP多播和Internet廣播、P2P程序設計、原始套節字、SPI、協議驅動的開發和原始以太數據的發送、ARP欺騙技術、LAN和WAN上的掃描和偵測技術、商業級個人防火牆開發等;接下來講述瞭新一代網際協議IPv6和Winsock提供的幫助函數;本書結尾部分,對E-mail、Telnet、FTP等協議進行瞭介紹,給齣瞭一個使用E-mail協議進行多平颱同步閱讀的實例。
本書的內容采用Windows 10操作係統。書中包含瞭大量可重用的C++類,許多的例子稍做修改即可應用到實際項目開發中。
作者簡介
陳香凝 精通VC、C++、Windows編程,特彆是對網絡的各種通信協議研究很多,有豐富的實踐經驗,樂於分享,發錶過各種論文。
目錄
第1章 計算機網絡基礎 1
1.1 網絡的概念和網絡的組成 1
1.2 計算機網絡參考模型 2
1.2.1 協議層次 2
1.2.2 TCP/IP參考模型 2
1.2.3 應用層(Application
Layer) 3
1.2.4 傳輸層(Transport Layer) 3
1.2.5 網絡層(Network Layer) 3
1.2.6 鏈路層(Link Layer) 4
1.2.7 物理層(Physical Layer) 4
1.3 網絡程序尋址方式 4
1.3.1 MAC地址 4
1.3.2 IP地址 5
1.3.3 子網尋址 6
1.3.4 端口號 8
1.3.5 網絡地址轉換(NAT) 8
1.4 網絡應用程序設計基礎 10
1.4.1 網絡程序體係結構 10
1.4.2 網絡程序通信實體 11
1.4.3 網絡程序開發環境 11
第2章 Winsock編程接口 13
2.1 Winsock庫 13
2.1.1 Winsock庫的裝入和釋放 13
2.1.2 封裝CInitSock類 14
2.2 Winsock的尋址方式和字節順序 14
2.2.1 Winsock尋址 14
2.2.2 字節順序 15
2.2.3 獲取地址信息 16
2.3 Winsock編程詳解 19
2.3.1 Winsock編程流程 19
2.3.2 典型過程圖 22
2.3.3 TCP服務器和客戶端
程序舉例 23
2.3.4 UDP編程 25
2.4 網絡對時程序實例 27
2.4.1 時間協議(Time
Protocol) 27
2.4.2 TCP/IP實現代碼 27
第3章 Windows套接字I/O模型 29
3.1 套接字模式 29
3.1.1 阻塞模式 29
3.1.2 非阻塞模式 29
3.2 選擇(select)模型 30
3.2.1 select函數 30
3.2.2 應用舉例 31
3.3 WSAAsyncSelect模型 33
3.3.1 消息通知和WSAAsync
Select函數 34
3.3.2 應用舉例 34
3.4 WSAEventSelect模型 37
3.4.1 WSAEventSelect函數 37
3.4.2 應用舉例 38
3.4.3 基於WSAEventSelect
模型的服務器設計 40
3.5 重疊(Overlapped)I/O模型 48
3.5.1 重疊I/O函數 48
3.5.2 事件通知方式 50
3.5.3 基於重疊I/O模型的服務
器設計 51
第4章 IOCP與可伸縮網絡程序 60
4.1 完成端口I/O模型 60
4.1.1 什麼是完成端口
(completion port)對象 60
4.1.2 使用IOCP的方法 60
4.1.3 示例程序 62
4.1.4 恰當地關閉IOCP 64
4.2 擴展函數 65
4.2.1 GetAcceptExSockaddrs
函數 65
4.2.2 TransmitFile函數 66
4.2.3 TransmitPackets函數 67
4.2.4 ConnectEx函數 67
4.2.5 DisconnectEx函數 68
4.3 可伸縮服務器設計注意事項 68
4.3.1 內存資源管理 68
4.3.2 接受連接的方法 69
4.3.3 惡意客戶連接問題 69
4.3.4 包重新排序問題 69
4.4 可伸縮服務器係統設計實例 70
4.4.1 CIOCPServer類的總體
結構 70
4.4.2 數據結構定義和內存池
方案 73
4.4.3 自定義幫助函數 76
4.4.4 開啓服務和停止服務 78
4.4.5 I/O處理綫程 82
4.4.6 用戶接口和測試程序 87
第5章 互聯網廣播和IP多播 88
5.1 套接字選項和I/O控製命令 88
5.1.1 套接字選項 88
5.1.2 I/O控製命令 90
5.2 廣播通信 91
5.3 IP多播(Multicasting) 92
5.3.1 多播地址 92
5.3.2 組管理協議(IGMP) 93
5.3.3 使用IP多播 93
5.4 基於IP多播的組討論會實例 97
5.4.1 定義組討論會協議 98
5.4.2 綫程通信機製 98
5.4.3 封裝CGroupTalk類 98
5.4.4 程序界麵 103
第6章 原始套接字 106
6.1 使用原始套接字 106
6.2 ICMP編程 106
6.2.1 ICMP與校驗和的計算 107
6.2.2 Ping程序實例 109
6.2.3 路由跟蹤 111
6.3 使用IP頭包含選項 113
6.3.1 IP數據報格式 113
6.3.2 UDP數據報格式 115
6.3.3 原始UDP封包發送
實例 117
6.4 網絡嗅探器開發實例 118
6.4.1 嗅探器設計原理 118
6.4.2 網絡嗅探器的具體實現 119
6.4.3 偵聽局域網內的密碼 121
6.5 TCP通信開發實例 122
6.5.1 創建一個原始套接字
並設置IP頭選項 122
6.5.2 構造IP頭和TCP頭 123
6.5.3 發送原始套接字數據報 124
6.5.4 接收數據 127
第7章 Winsock服務提供者
接口(SPI) 128
7.1 SPI概述 128
7.2 Winsock協議目錄 129
7.2.1 協議特性 130
7.2.2 使用Winsock API函數
枚舉協議 130
7.2.3 使用Winsock SPI函數
枚舉協議 132
7.3 分層服務提供者(LSP) 133
7.3.1 運行原理 133
7.3.2 安裝LSP 134
7.3.3 移除LSP 138
7.3.4 編寫LSP 139
7.3.5 LSP實例 140
7.4 基於SPI的數據報過濾實例 144
7.5 基於Winsock的網絡聊天室
開發 149
7.5.1 服務端 149
7.5.2 客戶端 149
7.5.3 聊天室程序的設計說明 149
7.5.4 核心代碼分析 150
第8章 Windows網絡驅動接口標準
(NDIS)和協議驅動的開發 153
8.1 核心層網絡驅動 153
8.1.1 Windows 2000及其後産品
的網絡體係結構 153
8.1.2 NDIS網絡驅動程序 154
8.1.3 網絡驅動開發環境 155
8.2 WDM驅動開發基礎 158
8.2.1 UNICODE字符串 158
8.2.2 設備對象 158
8.2.3 驅動程序的基本結構 160
8.2.4 I/O請求包(I/O request
packet,IRP)和I/O
堆棧 160
8.2.5 完整驅動程序示例 163
8.2.6 擴展派遣接口 165
8.2.7 應用舉例(進程診
測實例) 167
8.3 開發NDIS網絡驅動預備知識 173
8.3.1 中斷請求級彆(Interrupt
Request Level,IRQL) 173
8.3.2 鏇轉鎖(Spin Lock) 173
8.3.3 雙鏈錶 173
8.3.4 封包結構 174
8.4 NDIS協議驅動 175
8.4.1 注冊協議驅動 175
8.4.2 打開下層協議驅動的
適配器 176
8.4.3 協議驅動的封包管理 177
8.4.4 在協議驅動中接收數據 178
8.4.5 從協議驅動發送封包 178
8.5 NDIS協議驅動開發實例 179
8.5.1 總體設計 179
8.5.2 NDIS協議驅動的初始化、
注冊和卸載 180
8.5.3 下層NIC的綁定和解除
綁定 183
8.5.4 發送數據 190
8.5.5 接收數據 191
8.5.6 用戶IOCTL處理 196
第9章 網絡掃描與檢測技術 203
9.1 網絡掃描基礎知識 203
9.1.1 以太網數據幀 203
9.1.2 ARP 204
9.1.3 ARP格式 206
9.1.4 SendARP函數 207
9.2 原始以太封包的發送 207
9.2.1 安裝協議驅動 208
9.2.2 協議驅動用戶接口 208
9.2.3 發送以太封包的測試
程序 213
9.3 局域網計算機掃描 214
9.3.1 管理原始ARP封包 214
9.3.2 ARP掃描示例 217
9.4 互聯網計算機掃描 220
9.4.1 端口掃描原理 220
9.4.2 半開端口掃描實現 221
9.5 ARP欺騙原理與實現 225
9.5.1 IP欺騙的用途和實現
原理 225
9.5.2 IP地址衝突 226
9.5.3 ARP欺騙示例 227
第10章 點對點(P2P)網絡通信技術 230
10.1 NAT穿越概述 230
10.2 一般概念 231
10.2.1 NAT術語 231
10.2.2 中轉 231
10.2.3 反嚮連接 232
10.3 UDP打洞 232
10.3.1 中心服務器 232
10.3.2 建立點對點會話 233
10.3.3 公共NAT後麵的節點 233
10.3.4 不同NAT後麵的節點 234
10.3.5 多級NAT後麵的節點 235
10.3.6 UDP空閑超時 236
10.4 TCP打洞 236
10.4.1 套接字和TCP端口
重用 236
10.4.2 打開點對點的TCP流 237
10.4.3 應用程序看到的行為 238
10.4.4 同步TCP打開 238
10.5 Internet點對點通信實例 239
10.5.1 總體設計 239
10.5.2 定義P2P通信協議 239
10.5.3 客戶方程序 240
10.5.4 服務器方程序 250
10.5.5 測試程序 253
第11章 核心層網絡封包截獲技術 256
11.1 Windows網絡數據和封包
過濾概述 256
11.1.1 Windows網絡係統
體係結構圖 256
11.1.2 用戶模式下的網絡
數據過濾 257
11.1.3 內核模式下的網絡
數據過濾 258
11.2 中間層網絡驅動PassThru 258
11.2.1 PassThru NDIS中間
層驅動簡介 258
11.2.2 編譯和安裝PassThru
驅動 259
11.3 擴展PassThru NDIS IM驅動
—添加IOCTL接口 259
11.3.1 擴展之後的PassThru驅
動(PassThruEx)概況 259
11.3.2 添加基本的
DeviceIoControl接口 260
11.3.3 添加綁定枚舉功能 264
11.3.4 添加ADAPT結構的
引用計數 268
11.3.5 適配器句柄的打開/關
閉函數 269
11.3.6 句柄事件通知 274
11.3.7 查詢和設置適配器的
OID信息 275
11.4 擴展PassThru NDIS IM驅動
—添加過濾規則 281
11.4.1 需要考慮的事項 282
11.4.2 過濾相關的數據結構 282
11.4.3 過濾列錶 284
11.4.4 網絡活動狀態 285
11.4.5 IOCTL控製代碼 285
11.4.6 過濾數據 288
11.5 核心層過濾實例 295
第12章 Windows網絡防火牆
開發技術 297
12.1 防火牆技術概述 297
12.2 金羽(Phoenix)個人
防火牆淺析 298
12.2.1 金羽(Phoenix)個人
防火牆簡介 298
12.2.2 金羽(Phoenix)個人
防火牆總體設計 299
12.2.3 金羽(Phoenix)個人
防火牆總體結構 300
12.3 開發前的準備 300
12.3.1 常量的定義 300
12.3.2 訪問規則 302
12.3.3 會話結構 303
12.3.4 文件結構 303
12.3.5 UNICODE支持 308
12.4 應用層DLL模塊 309
12.4.1 DLL工程框架 309
12.4.2 共享數據和IO控製 313
12.4.3 訪問控製列錶ACL
(Access List) 315
12.4.4 查找應用程序訪問
權限的過程 318
12.4.5 類的接口—檢查
函數 320
12.5 核心層SYS模塊 322
12.6 主模塊工程 324
12.6.1 I/O控製類 324
12.6.2 主應用程序類 326
12.6.3 主對話框中的屬性頁 328
12.6.4 主窗口類 329
12.7 防火牆頁麵 331
12.7.1 網絡訪問監視頁麵 331
12.7.2 應用層過濾規則頁麵 334
12.7.3 核心層過濾規則頁麵 342
12.7.4 係統設置頁麵 347
第13章 IP幫助函數 350
13.1 IP配置信息 350
13.1.1 獲取網絡配置信息 350
13.1.2 管理網絡接口 351
13.1.3 管理IP地址 355
13.2 獲取網絡狀態信息 357
13.2.1 獲取TCP連接錶 358
13.2.2 獲取UDP監聽錶 360
13.2.3 獲取IP統計數據 362
13.3 路由管理 368
13.3.1 獲取路由錶 368
13.3.2 管理特定路由 371
13.3.3 修改默認網關的例子 371
13.4 ARP錶管理 372
13.4.1 獲取ARP錶 372
13.4.2 添加ARP入口 373
13.4.3 刪除ARP入口 373
13.4.4 打印ARP錶的例子 373
13.5 進程網絡活動監視實例 376
13.5.1 獲取通信的進程終端 377
13.5.2 Netstate源程序代碼 378
第14章 E-mail協議及其編程 382
14.1 概述 382
14.2 電子郵件介紹 383
14.2.1 電子郵件Internet的
地址 383
14.2.2 Internet郵件係統 383
14.2.3 電子郵件的信頭結構
及分析 384
14.3 SMTP協議原理介紹 386
14.3.1 SMTP的原理分析 386
14.3.2 SMTP工作機製 386
14.3.3 SMTP協議命令碼和
工作原理 387
14.3.4 SMTP協議通信模型 388
14.3.5 SMTP協議的命令和
應答 389
14.4 POP3協議原理介紹 390
14.4.1 POP3協議簡介 390
14.4.2 POP3工作原理 391
14.4.3 POP3命令原始碼 392
14.4.4 POP3會話實例 397
14.5 實例分析與程序設計 398
14.5.1 總界麵設計 398
14.5.2 SMTP客戶端設計 399
14.5.3 POP3客戶端設計 410
第15章 Telnet協議及其編程 417
15.1 概述 417
15.2 Telnet協議使用 417
15.3 Telnet協議原理 419
15.4 實例分析與程序設計 421
第16章 FTP協議及其編程 429
16.1 概述 429
16.1.1 背景 429
16.1.2 下載和上傳 429
16.1.3 登錄和匿名 430
16.1.4 目標 430
16.1.5 缺點 430
16.2 FTP工作原理 430
16.3 FTP使用模式 432
16.4 FTP的常用命令與響應 433
16.5 實例分析與程序設計 435
第17章 多平颱同步隨身閱讀——Send
To Kindle的一種實現方式 448
17.1 Amazon Kindle簡介 448
17.2 多平颱同步閱讀概述 449
17.3 Send To Kindle PC版簡介 450
17.4 推送到Kindle的工作原理 451
17.5 Kindle對郵箱附件的要求 452
17
Windows網絡與通信程序設計(第3版) 下載 mobi epub pdf txt 電子書