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