圖書簡介
本書深入介紹了所有影響著TCP/IP的重要模型、協定、服務以及標準,它們影響著TCP/IP在現代網路上的行為。本書採用理論與實踐相結合的方法,利用各種網路工具(如Wireshark),通過捕獲網路上的真實數據包,把數據包的內部結構以可視化的形式詳細分解,讓讀者能夠以直觀的方式探索TCP/IP的精髓。此外,通過每章末尾的習題、動手項目和案例項目,深化讀者對關鍵概念的理解,掌握常見網路管理和監視工具的運用。
圖書目錄
第1章 TCP/IP引論 1
1.1 什麼是TCP/IP 1
1.2 TCP/IP的起源和歷史 2
1.2.1 TCP/IP的設計目標 2
1.2.2 TCP/IP大事年表 2
1.2.3 誰“擁有”Internet 4
1.2.4 管理TCP/IP的標準化組織 5
1.2.5 IPv4與IPv6 5
1.3 TCP/IP標準和RFC 6
1.4 OSI網路參考模型概覽 7
1.4.1 網路分層 7
1.4.2 ISO/OSI網路參考模型 8
1.4.3 協定層如何工作 8
1.5 TCP/IP網路模型 12
1.5.1 TCP/IP網路訪問層 13
1.5.2 TCP/IP網路訪問層協定 13
1.5.3 TCP/IP網際網路層的功能 14
1.5.4 TCP/IP網際網路層協定 15
1.5.5 TCP/IP傳輸層的功能 16
1.5.6 TCP/IP傳輸層協定 16
1.5.7 TCP/IP套用層 16
1.6 TCP/IP協定、服務、套接字與連線埠 17
1.6.1 TCP/IP協定號 18
1.6.2 TCP/IP連線埠號 19
1.6.3 TCP/IP套接字 19
1.7 TCP/IP中的數據封裝 19
1.8 關於協定分析 20
1.8.1 協定分析的有用規則 20
1.8.2 協定分析器的要素 21
1.8.3 將協定分析器安裝在網路上 24
本章小結 25
習題 27
動手項目 29
動手項目1-1:安裝Wireshark 29
動手項目1-2:啟動Wireshark 30
動手項目1-3:捕獲基本數據包 30
動手項目1-4:探尋基本數據包和統計信息 32
動手項目1-5:選擇一個過濾器並捕獲數據包 34
動手項目1-6:創建一個顯示過濾器 36
動手項目1-7:查看一個完整的數據包解碼 37
案例項目 37
案例項目1-1:解決小型網路中的網路連線問題 37
案例項目1-2:討論升級到IPv6的理由 37
案例項目1-3:確定正在使用的是哪種IP協定 37
案例項目1-4:解釋協定錯誤或廣播數據流的後果 37
第2章 IP定址及其他 38
2.1 IP定址基礎 38
2.2 IPv4定址 40
2.2.1 IPv4地址類 40
2.2.2 網路、廣播、多播及其他特殊IP位址 41
2.2.3 廣播數據包結構 42
2.2.4 IPv4網路與子網掩碼 44
2.2.5 IPv4子網與超網 45
2.2.6 無類域間路由 47
2.2.7 公用和專用IPv4地址 48
2.2.8 管理對IPv4地址的訪問 49
2.3 獲得公用IP位址 50
2.4 IPv4定址模式 50
2.4.1 網路空間 51
2.4.2 主機空間 52
2.5 正在耗盡的IPv4地址空間 53
2.6 IPv6概述 54
2.7 IPv6定址 55
2.7.1 地址格式與表示法 55
2.7.2 網路與主機部分 56
2.7.3 作用域標識符 56
2.7.4 接口標識符 56
2.7.5 URL中的原始IPv6地址 58
2.7.6 地址類型 58
2.7.7 地址分配 62
2.8 IPv6定址與子網劃分的因素 63
2.9 從IPv4轉換到IPv6 64
本章小結 65
習題 67
動手項目 68
動手項目2-1:安裝IP子網計算器程式 68
動手項目2-2:熟悉IP子網計算器軟體 69
動手項目2-3:為所需IPv4子網數計運算元網掩碼 70
動手項目2-4:使用線上教程學習子網劃分 71
動手項目2-5:查看與IPv6定址有關的RFC文檔 71
動手項目2-6:找出計算機的IPv6地址 71
動手項目2-7:訪問和使用計算機的ARP表 72
案例項目 73
案例項目2-1:設計一個公司網路 73
案例項目2-2:為一個站點實現一個網路 73
案例項目2-3:設計一個IPv6地址空間 74
第3章 基本的IP數據包結構:首部與有效載荷 75
3.1 IP數據包與數據包結構 75
3.2 IPv4首部欄位及其功能 75
3.2.1 版本欄位 76
3.2.2 首部長度欄位 76
3.2.3 服務類型欄位 76
3.2.4 TOS欄位的功能:差分服務和擁塞控制 77
3.2.5 總長度欄位 80
3.2.6 標識符欄位 80
3.2.7 標誌欄位 81
3.2.8 分段偏移量欄位 81
3.2.9 生存時間欄位 82
3.2.10 協定欄位 82
3.2.11 首部校驗和欄位 82
3.2.12 源地址欄位 83
3.2.13 目的地址欄位 83
3.2.14 可選欄位 83
3.2.15 填充欄位 84
3.3 IPv6首部欄位及其功能 84
3.3.1 版本欄位 84
3.3.2 流量類型欄位 84
3.3.3 數據流標籤欄位 85
3.3.4 有效載荷長度欄位 85
3.3.5 下一個首部欄位的作用 85
3.3.6 跳限制欄位 86
3.3.7 源地址欄位 86
3.3.8 目的地址欄位 86
3.4 IPv6擴展首部 86
3.4.1 擴展首部的順序 87
3.4.2 逐跳選項擴展首部 88
3.4.3 目的地選項擴展首部 88
3.4.4 路由擴展首部 89
3.4.5 分段擴展首部 89
3.4.6 認證擴展首部 90
3.4.7 封裝安全有效載荷擴展首部和尾部 91
3.4.8 超大包 92
3.4.9 服務質量 92
3.4.10 路由器警告與逐跳選項 93
3.5 IPv6 MTU與數據包處理 94
3.6 IPv6的上層協定校驗和 95
3.7 IPv6首部結構與IPv4首部結構 97
3.7.1 IPv4與IPv6首部比較 97
3.7.2 從IPv4轉換到IPv6的小結 98
本章小結 99
習題 100
動手項目 103
動手項目3-1:使用Wireshark軟體查看IPv4數據包首部 103
動手項目3-2:使用Wireshark軟體查看IPv6數據包首部 104
動手項目3-3:在Wireshark軟體中查看IPv6上層協定 106
案例項目 107
案例項目3-1:Wireshark與NetMon軟體 107
案例項目3-2:解釋校驗和錯誤 107
案例項目3-3:查看IPv6的下一個首部欄位 107
第4章 數據鏈路層與網路層TCP/IP協定 109
4.1 數據鏈路協定 109
4.2 點到點協定 111
4.3 幀的類型與大小 112
4.3.1 乙太網幀類型 112
4.3.2 Ethernet Ⅱ幀結構 113
4.4 IP環境中的硬體地址 116
4.4.1 地址解析協定與網路發現協定 116
4.4.2 ARP協定的特性與處理 117
4.4.3 NDP協定的特徵與處理 123
4.5 理解IP協定 124
4.5.1 傳送IP數據報 125
4.5.2 路由解析過程 126
4.5.3 IPv4與IPv6如何不同 128
4.6 IP數據包的壽命 129
4.7 分段與重組 130
4.8 服務交付選項 132
4.9 優先權 132
4.10 服務類型 132
4.11 理解IP路由 134
4.11.1 在路由表中如何存放記錄 135
4.11.2 路由協定和被路由協定 136
4.11.3 為路由協定分組 136
4.12 路由特性 140
4.12.1 路由匯聚 140
4.12.2 IPv4路由機制 140
4.13 IPv6路由考慮 143
4.13.1 IPv6路由機制 144
4.13.2 IPv6中的多播偵聽器發現 149
4.14 路由協定 153
4.14.1 IPv4路由協定 153
4.14.2 IPv6路由協定 160
4.15 管理內部網的路由 165
4.16 廣域網上的路由 166
4.16.1 幾個小型辦公室 166
4.16.2 輻射型結構 167
4.16.3 多協定 167
4.16.4 移動用戶 167
4.16.5 移動IP 167
4.16.6 本地區移動性 168
4.17 往返於Internet的路由 168
4.18 保護路由器和路由行為的安全 169
4.19 IP路由故障診斷 170
本章小結 170
習題 173
動手項目 176
動手項目4-1:管理本地ARP緩衝區 176
動手項目4-2:讀取本地IPv4路由表 176
動手項目4-3:讀取本地IPv6路由表和鄰居緩衝區 177
動手項目4-4:用Wireshark軟體查看IPv4和IPv6路由協定 178
案例項目 180
案例項目4-1:查看跟蹤檔案 180
案例項目4-2:基於跳限制值來確定IPv6數據報傳輸的距離 180
案例項目4-3:TCP/IP網路的QoS 180
第5章 Internet控制訊息協定 181
5.1 ICMP基礎 181
5.2 ICMPv4 183
5.2.1 RFC 792概覽 183
5.2.2 ICMPv4的首部 183
5.2.3 ICMPv4訊息的類型 187
5.2.4 可變的ICMP結構和功能 190
5.3 ICMPv6 200
5.3.1 ICMPv6概述 200
5.3.2 ICMPv6訊息的類型 200
5.3.3 ICMPv6首部 202
5.4 ICMPv6錯誤訊息 202
5.4.1 目的地不可達訊息 202
5.4.2 數據報太大訊息 203
5.4.3 逾時訊息 204
5.4.4 參數問題訊息 204
5.5 ICMPv6信息訊息 205
5.5.1 Echo請求與Echo應答訊息 205
5.5.2 路由器公告與路由器請求訊息 206
5.5.3 鄰居請求與鄰居公告訊息 207
5.5.4 重定向訊息 208
5.5.5 路由器重編號訊息 209
5.5.6 ICMPv4與ICMPv6訊息的簡單比較 210
5.6 路徑MTU發現 210
5.7 ICMP測試和故障診斷順序 211
5.7.1 使用ping進行可連線性測試 212
5.7.2 使用Traceroute進行路徑發現 213
5.7.3 使用Pathping進行路徑發現 214
5.7.4 使用ICMP的路徑MTU發現 214
5.7.5 ICMP的路由序列 217
5.7.6 ICMPv4的安全問題 220
5.7.7 ICMPv6的安全問題 222
5.8 解碼ICMP數據包 222
5.8.1 ICMPv4 222
5.8.2 ICMPv6 223
本章小結 224
習題 225
動手項目 227
動手項目5-1:在網路上使用ICMPv4 Echo請求訊息ping另一個設備 227
動手項目5-2:為你的數據流構建一個過濾器 228
動手項目5-3:捕獲ICMPv6 Echo請求與Echo應答數據包 229
動手項目5-4:捕獲ICMPv6鄰居請求與鄰居公告訊息 229
案例項目 230
案例項目5-1:確定默認網關設定 230
案例項目5-2:ICMPv6安全性問題 231
案例項目5-3:測試路徑MTU發現 231
案例項目5-4:研究一下Jon Postel 231
第6章 IPv6的鄰居發現 232
6.1 理解鄰居發現 232
6.2 IPv6鄰居發現協定與IPv4協定的比較 233
6.3 鄰居發現訊息的格式 234
6.3.1 路由器請求訊息 234
6.3.2 路由器公告訊息 235
6.3.3 鄰居請求訊息 238
6.3.4 鄰居公告訊息 239
6.3.5 重定向訊息 241
6.4 鄰居發現選項的格式 243
6.4.1 源鏈路層地址與目標鏈路層地址選項 243
6.4.2 前綴信息選項 244
6.4.3 重定向首部選項 246
6.4.4 MTU選項 247
6.4.5 公告時間間隔選項 248
6.4.6 宿主智慧型體信息選項 249
6.4.7 路由信息選項 249
6.5 概念主機模型 250
6.5.1 在主機上存儲鄰居數據 250
6.5.2 概念傳送算法 251
6.6 鄰居發現過程 252
6.6.1 地址解析 253
6.6.2 鄰居不可達檢測 254
6.6.3 重複地址檢測 255
6.6.4 路由器發現 256
6.6.5 重定向 257
本章小結 260
習題 260
動手項目 263
動手項目6-1:查看ICMPv6鄰居發現訊息 263
動手項目6-2:創建一個過濾器,查看特定主機的鄰居公告訊息 264
動手項目6-3:創建一個過濾器,查看鄰居公告訊息,該訊息是對
鄰居請求重複地址檢測訊息的應答訊息 265
動手項目6-4:創建一個過濾器,查看設定了M和O標誌的路由
器公告訊息 266
動手項目6-5:創建一個過濾器,查看具有前綴信息的路由器公告訊息 266
案例項目 268
案例項目6-1:理解鄰居請求和鄰居公告訊息 268
案例項目6-2:排除網路問題 268
案例項目6-3: 描述起始的IPv6主機通信 268
第7章 IP位址自動配置 269
7.1 理解自動定址 270
7.2 動態主機配置協定介紹 270
7.2.1 DHCP的工作原理 271
7.2.2 租用的角色 272
7.2.3 DHCP軟體部件 272
7.2.4 DHCP租用類型 273
7.2.5 DHCP租用的更多信息 274
7.3 IPv4自動配置 274
7.3.1 自動專用IP定址(APIPA) 275
7.3.2 DHCPv4 275
7.4 IPv6自動配置 289
7.4.1 IPv6自動配置的類型 289
7.4.2 IPv6自動配置的地址的功能狀態 293
7.4.3 結點網卡標識符 294
7.4.4 DHCPv6 296
7.4.5 IPv6自動配置過程 305
7.5 Microsoft Windows作業系統中的自動配置 308
7.6 Microsoft Windows 2008的DHCP範圍 308
7.7 創建一個簡單的DHCP伺服器 309
7.8 DHCP故障診斷 314
本章小結 316
習題 317
動手項目 319
動手項目7-1:查看DHCP啟動序列 319
動手項目7-2:查看DHCP更新、重新綁定和重新初始化序列 320
動手項目7-3:查看DHCPv6啟動序列 320
動手項目7-4:查看和管理DHCP與DHCPv6租借信息 321
案例項目 322
案例項目7-1:DHCP設計與實現 322
案例項目7-2:靜態與動態IPv4地址問題 322
案例項目7-3:解決DHCP地址問題 322
案例項目7-4:DHCPv6設計與實現 322
第8章 IP網路中的名稱解析 323
8.1 理解名稱解析的基礎 323
8.2 網路名稱解析協定 324
8.2.1 TCP/IP上的NetBIOS 324
8.2.2 WINS 325
8.2.3 DNS 327
8.2.4 LLMNR 328
8.3 IPv4網路中的名稱解析 329
8.3.1 DNS資料庫結構 330
8.3.2 DNS名稱空間 331
8.3.3 DNS資料庫記錄 332
8.3.4 委託DNS授權 333
8.3.5 DNS伺服器的類型 333
8.4 域名伺服器的工作原理 335
8.4.1 遞歸查詢 336
8.4.2 疊代或非遞歸查詢 336
8.5 DNS快取的重要性 337
8.6 DNS配置檔案和資源記錄格式 338
8.6.1 授權開始記錄 338
8.6.2 地址和別名記錄 340
8.6.3 將地址映射為名稱 341
8.7 IPv6網路中的名稱解析 342
8.7.1 IPv6的DNS 343
8.7.2 源地址與目的地址選擇 345
8.7.3 源地址選擇算法 346
8.7.4 目的地址選擇算法 347
8.7.5 使用地址選擇 349
8.8 Windows作業系統對名稱解析的支持 351
8.8.1 主機檔案 351
8.8.2 DNS解析器 352
8.8.3 DNS伺服器服務 354
8.8.4 DNS動態更新 355
8.8.5 源地址與目的地址選擇 356
8.8.6 LLMNR支持 358
8.8.7 使用ipv6-literal.net名稱 359
8.8.8 對等體名稱解析協定 360
8.9 解決名稱解析問題與失敗的故障 362
8.9.1 故障的常見原因 362
8.9.2 解決NetBIOS與WINS問題的工具 363
8.9.3 解決DNS問題的工具 363
8.9.4 nbtstat 364
8.9.5 netstat 365
8.9.6 nslookup 365
本章小結 368
習題 370
動手項目 372
動手項目8-1:作用於DNS解析器快取 372
動手項目8-2:使用DNS動態更新來設定Windows 7 373
動手項目8-3:把IPv6地址轉換為一個ipv6-literal.net名稱 373
動手項目8-4:捕獲並查看你的DNS數據流 374
動手項目8-5:安裝DNS伺服器軟體並配置查找區域 375
動手項目8-6:創建其他區域 377
案例項目 377
案例項目8-1:收集IPv6地址數據以配置名稱伺服器 377
案例項目8-2:請解釋一下只用於快取的伺服器的使用 378
案例項目8-3:理解在網路基礎設施中所需要的最少DNS伺服器數量 378
第9章 TCP/IP傳輸層協定 379
9.1 理解UDP與TCP 379
9.1.1 IPv4與IPv6上的UDP 380
9.1.2 IPv4與IPv6上的TCP 381
9.2 UDP 383
9.2.1 UDP首部欄位和功能 384
9.2.2 UDP連線埠號與進程 386
9.2.3 UDP與IPv6 387
9.3 TCP 388
9.3.1 TCP與IPv4 388
9.3.2 TCP與IPv6 403
9.4 UDP、TCP與IPv6擴展首部 404
9.5 在TCP和UDP之間做出選擇 405
本章小結 406
習題 407
動手項目 409
動手項目9-1:查看UDP首部結構 409
動手項目9-2:查看IPv4與IPv6的TCP首部 410
動手項目9-3:查看TCP握手進程 411
案例項目 412
案例項目9-1:使用Wireshark軟體清查網路 412
案例項目9-2:發現動態連線埠號 412
案例項目9-3:TCP視窗大小問題 412
案例項目9-4:理解重複ACK 413
第10章 從IPv4轉換到IPv6 414
10.1 IPv4與IPv6如何相互作用 414
10.1.1 雙重棧技術 415
10.1.2 通過IPv4雲的隧道技術 415
10.1.3 採用IPv6的進展 416
10.1.4 轉換到IPv6的實際問題 416
10.1.5 互操作性 416
10.1.6 網路元素 417
10.1.7 軟體 417
10.1.8 從Windows的角度看IPv6轉換 418
10.1.9 可用性 418
10.1.10 下一步的工作 419
10.2 IPv4/IPv6混合網路與網路結點 419
10.2.1 基本的混合網路模型 419
10.2.2 嵌套的混合網路模型 420
10.2.3 真實的混合網路模型 420
10.3 IPv6轉換地址 422
10.4 IPv4/IPv6轉換機制 423
10.4.1 用於IPv4與IPv6的雙重棧協定 423
10.4.2 雙重IP層體系結構 424
10.4.3 雙重棧體系結構 424
10.4.4 雙重體系結構與隧道技術 425
10.4.5 IPv6-over-IPv4隧道技術 425
10.4.6 DNS基礎設施 426
10.5 IPv4與IPv6混合的隧道配置 427
10.5.1 路由器到路由器的隧道配置 427
10.5.2 主機到路由器與路由器到主機的隧道配置 428
10.5.3 主機到主機的隧道配置 429
10.5.4 隧道技術的類型 429
10.6 ISATAP隧道技術 430
10.6.1 ISATAP概述 430
10.6.2 ISATAP的組件 431
10.6.3 ISATAP結點的路由器發現 432
10.6.4 ISATAP定址與路由 432
10.6.5 ISATAP的通信 434
10.6.6 配置一台ISATAP路由器 435
10.7 6to4隧道技術 437
10.7.1 6to4概述 437
10.7.2 6to4的組件 438
10.7.3 6to4定址與路由 438
10.7.4 6to4通信 439
10.7.5 ISATAP與6to4一起使用 440
10.8 Teredo隧道技術 441
10.8.1 Teredo概述 441
10.8.2 Teredo的組件 441
10.8.3 Teredo定址與路由 442
10.8.4 Teredo的處理過程 443
本章小結 445
習題 447
動手項目 449
動手項目10-1:查看ISATAP網路中的數據流 449
動手項目10-2:查看6to4捕獲檔案 451
動手項目10-3:查看一個Teredo捕獲檔案和路由器請求數據包 452
案例項目 453
案例項目10-1:準備一個網路,進行IPv4-to-IPv6轉換技術部署 453
案例項目10-2:配置要使用Teredo的Windows 7客戶端 453
案例項目10-3:繪製ISATAP封裝首部 453
第11章 部署IPv6 454
11.1 理解IPv6部署 454
11.2 規劃IPv6部署 455
11.2.1 成功準則 456
11.2.2 體系結構的決策 456
11.2.3 遷移與轉換技術 462
11.2.4 要完成的任務 467
11.3 部署和使用IPv6 471
11.3.1 構建一個IPv6測試/示範網路 472
11.3.2 開始遷移應用程式 473
11.3.3 把只支持IPv4的主機升級到支持IPv4/IPv6 473
11.3.4 使用6to4創建一個隧道式的IPv6環境 476
11.3.5 使用ISATAP創建一個隧道式的IPv6環境 477
11.4 探討一些網路管理任務 479
本章小結 480
習題 481
動手項目 483
動手項目11-1:探索路由伺服器 483
動手項目11-2:探索IPv6配置 485
案例項目 486
案例項目11-1:創建一個測試實驗網路 486
案例項目11-2:創建一個遷移規劃 486
第12章 構建安全的TCP/IP環境 487
12.1 理解網路安全性基礎 487
12.2 IP安全的原則 488
12.3 常見的TCP/IP攻擊、探測與入侵 489
12.3.1 主要術語 489
12.3.2 TCP/IP的主要弱點 490
12.3.3 靈活性與安全性 490
12.4 與IP有關的常見攻擊類型 491
12.5 哪些IP服務最易受攻擊 492
12.6 IP攻擊的各個階段 494
12.6.1 偵探與發現 494
12.6.2 攻擊階段 495
12.6.3 掩蓋階段 495
12.7 詳論常見攻擊與入侵點 496
12.7.1 病毒、蠕蟲與特洛伊木馬程式 496
12.7.2 廣告軟體與間諜軟體 496
12.7.3 拒絕服務攻擊 496
12.7.4 分散式拒絕服務攻擊 496
12.7.5 緩衝區溢出或過載 497
12.7.6 欺騙 497
12.7.7 TCP會話劫持 498
12.7.8 網路嗅探 498
12.8 維護IP安全性 499
12.8.1 套用安全補丁與修復 499
12.8.2 知道要堵住哪些連線埠 501
12.8.3 使用IPSec 501
12.8.4 保護網路外設 502
12.8.5 實現防火牆 505
12.8.6 在IP安全中IDS與IPS的作用 506
12.9 蜜罐與蜜網 507
本章小結 507
習題 508
動手項目 510
動手項目12-1:在Wireshark中查看本地掃描 510
動手項目12-2:在Wireshark中查看連線埠掃描 511
動手項目12-3:在Wireshark中堵住連線埠 511
動手項目12-4:在Wireshark中查看數據流來自的連線埠號 512
案例項目 512
案例項目12-1:防火牆過濾器 512
案例項目12-2:防火牆研究、規劃與實現 513
附錄A 學生與教師線上資源 514
術語表 516