圖書簡介
本書是在2008年版的基礎上修訂的。全書共分23章,第1章為本書的內容介紹與教學輔導,第2章~第23章提供22個網路軟體編程題目,分為基礎訓練、綜合訓練與提高訓練3種不同的類型與5個不同的難度級,由讀者根據自身的基礎與學習要求選擇編程題目,循序漸進地學習並獨立完成網路軟體編程訓練,以實現“通過實際網路編程課題的訓練,達到深入理解網路基本工作原理,掌握網路環境中軟體編程方法,提高網路軟體編程能力”的目的。書中基礎訓練、綜合訓練與提高訓練中的每章對應一個編程題目。每章包括編程訓練的目的、要求、相關知識、設計分析和擴展內容,並根據教學經驗對不同程度與不同要求的讀者的訓練課題的選擇與進度安排提出了建議。隨書光碟附有所有網路編程題目的參考答案與完成編程所需要的相關工具。
目錄
第一部分計算機網路軟體編程訓練要求與教學指導
第1章計算機網路課程內容、編程訓練目的與教學指導3
1.1計算機網路課程特點與網路軟體人才需求的形勢3
1.2計算機網路技術的研究與發展4
1.2.1發展主線1:Internet技術4
1.2.2發展主線2:無線網路技術6
1.2.3發展主線3:網路安全技術8
1.2.4總結9
1.3《計算機網路高級教程》的相關內容安排12
1.3.1計算機網路技術的研究與發展12
1.3.2廣域網技術12
1.3.3區域網路技術13
1.3.4城域網技術13
1.3.5IPv4協定13
1.3.6IPv6協定14
1.3.7移動IP協定14
1.3.8TCP與UDP協定14
1.3.9網路套用和套用層協定14
1.3.10無線Adhoc網路、無線感測器網路與無線格線網研究15
1.3.11網路安全與網路管理技術的研究15
1.3.12網路性能分析、網路模擬與開源工具包15
1.4網路軟體編程課題訓練目的與基本內容16
1.4.1基礎類網路軟體編程課題訓練目的與基本內容16
1.4.2綜合類網路軟體編程課題訓練目的與基本內容19
1.4.3提高類網路軟體編程課題訓練目的與基本內容20
1.4.4網路軟體編程訓練選題指導26
第二部分基礎訓練篇
第2章Ethernet幀結構解析程式31
2.1編程訓練目的31
2.2編程訓練要求31
2.3相關知識35
2.3.1幀結構35
2.3.2Ethernet幀的接收流程分析36
2.3.3CRC校驗37
2.4編程訓練設計分析40
2.4.1程式設計思路及實現40
2.4.2主要流程圖44
2.5擴展與提高45
2.5.1CRC-32校驗查表法實現45
2.5.2Ethernet幀的傳送流程分析47
第3章使用ARP協定獲取區域網路內活動主機物理地址程式49
3.1編程訓練目的49
3.2編程訓練要求49
3.3相關知識50
3.3.1ARP協定工作原理50
3.3.2ARP協定相關數據幀結構51
3.4編程訓練設計分析51
3.4.1程式流程介紹51
3.4.2編程要點分析51
3.5擴展與提高57
3.5.1ARP欺騙57
3.5.2使用Windows自帶API庫實現類似功能58
3.5.3使用WindowsAPI獲得主機MAC地址59
第4章計算校驗和程式62
4.1編程訓練目的62
4.2編程訓練要求62
4.3相關知識63
4.3.1網際校驗和算法63
4.3.2網際校驗和算法特性64
4.3.3計算舉例65
4.4編程訓練設計分析67
4.4.1程式設計思路及實現67
4.4.2程式流程圖68
4.5擴展與提高69
4.5.1增量式算法的補碼實現69
4.5.2對增量式算法的改進70
第5章IP包流量分析程式72
5.1編程訓練目的72
5.2編程訓練要求72
5.3相關知識73
5.3.1IP協定73
5.3.2IP數據報格式74
5.4編程訓練設計分析77
5.4.1捕獲IP數據包77
5.4.2統計IP數據包的信息80
5.4.3程式流程圖82
5.5擴展與提高83
5.5.1使用Winpcap捕獲數據包84
5.5.2使用map結構存儲IP數據包信息85
第6章Tracert程式88
6.1編程訓練目的88
6.2編程訓練要求88
6.3相關知識90
6.3.1Tracert的實現原理90
6.3.2ICMP協定及報文格式90
6.4編程訓練設計分析93
6.4.1核心代碼及說明93
6.4.2程式流程圖99
6.5擴展與提高100
6.5.1使用自行提供IP報頭的方法傳送ICMP報文100
6.5.2使用ICMP幫助函式館傳送ICMP報文100
第7章IPv6報文封裝及地址生成程式103
7.1編程訓練目的103
7.2編程訓練要求103
7.3相關知識104
7.3.1IPv6報頭104
7.3.2IPv6擴展報頭106
7.3.3IPv6地址107
7.4編程訓練設計分析112
7.4.1IPv6基本報頭的填充113
7.4.2IPv6地址生成算法114
7.4.3程式流程圖116
7.5擴展與提高117
7.5.1用於IPv6的TCP/UDP偽報頭117
7.5.2包含TCP報頭的IPv6數據封裝118
第8章TCP和UDP數據包傳送程式120
8.1編程訓練目的120
8.2編程訓練要求120
8.3相關知識121
8.3.1UDP協定簡介121
8.3.2TCP協定簡介121
8.4編程訓練設計分析122
8.4.1數據包頭結構定義122
8.4.2填充數據包過程介紹124
8.4.3TCP/UDP協定網際校驗和計算方法125
8.5擴展與提高126
8.5.1使用原始套接字完成題目要求126
8.5.2使用NDIS協定驅動傳送自定義數據幀127
第9章基於C/S結構的套接字程式設計130
9.1編程訓練目的130
9.2編程訓練要求130
9.3相關知識132
9.3.1C/S結構網路模型132
9.3.2WindowsSockets編程簡介132
9.3.3基本套接字API調用134
9.3.4典型編程調用時序圖136
9.4編程訓練設計分析137
9.4.1Server端結構設計及代碼說明138
9.4.2Client端結構設計及代碼說明142
9.5擴展與提高143
9.5.1Winsock的兩種I/O模式143
9.5.2WindowsSockets下的4種編程模型143
9.5.3使用WSAAsynSelect進行異步I/O編程146
第10章滑動視窗協定模擬程式149
10.1編程訓練目的149
10.2編程訓練要求149
10.3相關知識150
10.3.1滑動視窗協定的流量控制150
10.3.2滑動視窗協定的差錯控制150
10.4編程訓練設計分析152
10.4.1協定模擬過程分析152
10.4.2滑動視窗協定基本算法153
10.4.3核心代碼及其說明156
10.5擴展與提高164
10.5.1傳輸層與鏈路層滑動視窗協定比較164
10.5.2TCP滑動視窗協定的基本原理164
第11章WebServer程式166
11.1編程訓練目的166
11.2編程訓練要求166
11.3相關知識167
11.3.1HTTP的工作過程167
11.3.2HTTP的訊息格式168
11.3.3HTTP1.1的改進171
11.4編程訓練設計分析172
11.4.1客戶請求處理模組實現172
11.4.2回響生成傳送模組實現174
11.5擴展與提高177
11.5.1HTTP認證機制177
11.5.2Basic認證的代碼實現180
第12章無線區域網路802.11協定CSMA/CA算法模擬程式184
12.1編程訓練目的184
12.2編程訓練要求184
12.3相關知識185
12.3.1802.11協定概述185
12.3.2CSMA/CA協定的工作流程185
12.4編程訓練設計分析186
12.4.1主執行緒代碼分析186
12.4.2數據接收執行緒代碼分析186
12.4.3數據傳送執行緒代碼分析187
12.5擴展與提高190
12.5.1無線區域網路的發展190
12.5.2IEEE802.11b的主要優點190
12.5.3IEEE802.11b無線網路包含組件190
12.5.4IEEE802.11b運作模式191
12.5.5IEEE802.11b運作基礎191
第13章公鑰密碼實現程式192
13.1編程訓練目的192
13.2編程訓練要求192
13.3相關知識193
13.3.1密碼學相關背景知識193
13.3.2RSA密碼機制簡介195
13.4編程訓練設計分析196
13.4.1模乘運算和模冪運算模組196
13.4.2生成隨機的大素數197
13.4.3求最大公約數199
13.4.4計算私鑰200
13.4.5加密解密過程200
13.5擴展與提高201
13.5.1RSA安全性201
13.5.2其他公鑰密碼體系202
13.5.3對稱密碼體系簡介203
第三部分綜合訓練篇
第14章路由器基本功能實現程式20714.1編程訓練目的207
14.2編程訓練要求207
14.3相關知識209
14.3.1路由器結構與功能209
14.3.2路由選擇的基本原理210
14.3.3路由表212
14.3.4ICMP差錯報文214
14.4編程訓練設計分析215
14.4.1路由程式的設計215
14.4.2測試環境的搭建227
14.5擴展與提高228
14.5.1OSPF簡介229
14.5.2OSPF協定工作原理230
14.5.3OSPF路由表的算法實現232
第15章FTP協定實現程式235
15.1編程訓練目的235
15.2編程訓練要求235
15.3相關知識236
15.3.1FTP協定簡介236
15.3.2FTP命令簡介237
15.4編程訓練設計分析238
15.4.1程式總體結構分析238
15.4.2工作者執行緒函式介紹240
15.5擴展與提高259
15.5.1完成連線埠相關原理259
15.5.2Windows其他網路I/O傳輸程式架構比較261
第16章協定分析器程式264
16.1編程訓練目的264
16.2編程訓練要求264
16.3相關知識265
16.3.1協定分析器基本原理265
16.3.2TCP/IP分層體系結構265
16.3.3數據的封裝與解析266
16.4編程訓練設計分析267
16.4.1協定分析器總體結構設計267
16.4.2數據捕獲模組267
16.4.3協定解析模組270
16.5擴展與提高277
16.5.1使用原始套接字方式完成數據捕獲過程277
16.5.2在協定分析器中使用Winpcap的高級特性278
第17章綜合掃描器程式281
17.1編程訓練目的281
17.2編程訓練要求281
17.3相關知識282
17.3.1ARP掃描282
17.3.2ICMP掃描282
17.3.3TCP掃描282
17.3.4UDP掃描283
17.4編程訓練設計分析284
17.4.1ARP掃描實現284
17.4.2ICMP掃描實現287
17.4.3TCPConnect掃描實現291
17.4.4TCPSYN掃描實現293
17.4.5TCPFIN掃描實現299
17.4.6UDP掃描實現301
17.5擴展與提高305
17.5.1ICMP掃描擴展305
17.5.2TCP掃描擴展306
17.5.3UDP掃描擴展307
17.5.4掃描的其他套用307
17.5.5系統漏洞掃描簡介308
第四部分提高訓練篇
第18章基於SNMP協定的網路拓撲發現程式311
18.1編程訓練目的311
18.2編程訓練要求311
18.3相關知識312
18.3.1SNMP協定簡介312
18.3.2異步過程調用314
18.4編程訓練設計分析315
18.4.1主體結構315
18.4.2功能模組簡介316
18.4.3相關代碼剖析316
18.5擴展與提高325
18.5.1其他網路管理協定簡介325
18.5.2網路管理新技術326
第19章利用OpenSSL實現安全的WebServer程式327
19.1編程訓練目的327
19.2編程訓練要求327
19.3相關知識328
19.3.1SSL協定介紹328
19.3.2OpenSSL庫330
19.4編程訓練設計分析335
19.4.1程式設計思路及實現335
19.4.2Server端認證證書的生成339
19.5擴展與提高340
19.5.1客戶端認證340
19.5.2基於IPSec的安全通信341
第20章簡單防火牆程式345
20.1編程訓練目的345
20.2編程訓練要求345
20.3相關知識346
20.3.1防火牆簡介346
20.3.2系統包過濾API介紹347
20.4編程訓練設計分析349
20.4.1程式流程分析349
20.4.2核心代碼分析349
20.5擴展與提高353
20.5.1基於APIHook的數據包過濾技術353
20.5.2基於SPI的數據包過濾技術356
第21章防火牆擴展功能程式359
21.1編程訓練目的359
21.2編程訓練要求359
21.3相關知識360
21.3.1Windows網路協定棧結構360
21.3.2Windows網路數據攔截技術綜述363
21.4編程訓練設計分析366
21.4.1程式流程分析366
21.4.2核心代碼分析367
21.5擴展與提高375
21.5.1基於TDI過濾驅動的防火牆技術375
21.5.2基於NDIS中間層的數據包過濾技術379
第22章NS-2簡單有線網路模擬程式382
22.1編程訓練目的382
22.2編程訓練要求382
22.3相關知識383
22.3.1NS-2簡介及原理概述383
22.3.2NS-2的下載與安裝385
22.3.3NS-2網路模擬的基本流程386
22.3.4NS-2學習方法386
22.3.5NS-2學習資源列表388
22.4編程訓練設計分析388
22.4.1模擬場景描述388
22.4.2模擬腳本及其說明389
22.4.3模擬的Nam演示392
22.4.4模擬結果的統計分析392
22.5擴展與提高397
22.5.1有線網路中的Ethernet模擬397
22.5.2NS-2模擬腳本生成工具399
第23章使用NS-2模擬無線Adhoc網路400
23.1編程訓練目的400
23.2編程訓練要求400
23.3相關知識401
23.3.1NS-2的無線網路模型401
23.3.2移動節點的創建403
23.3.3移動節點的運動404
23.3.4移動場景與流量場景的自動生成404
23.4編程訓練設計分析406
23.4.1模擬場景描述406
23.4.2模擬腳本及其說明406
23.4.3模擬的Nam演示410
23.4.4模擬結果的統計分析411
23.5擴展與提高415
23.5.1使用場景生成器和流量產生器進行無線模擬415
23.5.2深入學習導讀416
23.5.3一個NS-2無線模擬腳本生成工具417
附錄AWinpcap簡介與使用說明418
A.1Winpcap簡介418
A.2使用Winpcap編程的一般步驟419
A.3Winpcap動態庫419
附錄BWindowsDriverModule簡介423
附錄CNS-2在Linux和Windows+Cygwin下的安裝425
參考文獻43