TCP/IP 詳解 (捲1) : 協議 (TCP/IP Illustrated, Volume 1 : The Protocols, 2/e)
內容描述
本書是TCP/IP領域的經典之作!書中主要講述TCP/IP協議,不僅僅講述RFC的標準協議,而且結合大量實例講述了TCP/IP協議族的定義原因,以及在各種不同的操作系統中的應用及工作方式,使讀者可以輕松掌握TCP/IP的知識。本書內容詳盡且具權威性,幾乎每章都提供精選的習題,並提供了部分習題的答案。本書適合任何希望理解TCP/IP協議如何實現的人閱讀,更是TCP/IP領域研究人員和開發人員的權威參考書。無論是初學者還是功底深厚的網絡領域高手,本書都是案頭必備。
目錄大綱
序
第2版前言
第1版前言(改編)
第1章概述1
1.1體系結構原則2
1.1.1分組、連接和數據報2
1.1.2端到端論點和命運共享3
1.1.3差錯控制和流量控制4
1.2設計和實現5
1.2.1分層5
1.2.2分層實現中的複用、分解和封裝6
1.3TCP/IP協議族結構和協議9
1.3.1ARPANET參考模型9
1.3.2TCP/IP中的複用、分解和封裝11
1.3.3端口號12
1.3.4名稱、地址和DNS12
1.4Internet、內聯網和外聯網13
1.5設計應用13
1.5.1客戶機/服務器14
1.5.2對等14
1.5.3應用程序編程接口14
1.6標準化進程15
1.6.1RFC15
1.6.2其他標準15
1.7實現和軟件分發16
1.8與Internet體系結構相關的攻擊17
1.9總結17
1.10參考文獻18
第2章Internet地址結構21
2.1引言21
2.2表示IP地址21
2.3基本的IP地址結構23
2.3.1分類尋址23
2.3.2子網尋址24
2.3.3子網掩碼26
2.3.4可變長度子網掩碼27
2.3 .5廣播地址28
2.3.6IPv6地址和接口標識符29
2.4CIDR和聚合31
2.4.1前綴31
2.4.2聚合32
2.5特殊用途地址34
2.5.1IPv4/IPv6地址轉換35
2.5.2組播地址36
2.5 .3IPv4組播地址36
2.5.4IPv6組播地址38
2.5.5任播地址41
2.6分配42
2.6.1單播42
2.6.2組播44
2.7單播地址分配44
2.7.1單個供應商/無網絡/單個地址44
2.7.2單個供應商/單個網絡/單個地址45
2.7.3單個供應商/多個網絡/多個地址45
2.7.4多個供應商/多個網絡/多個地址(多宿主)46
2.8與IP地址相關的攻擊48
2.9總結48
2.10參考文獻49
第3章鏈路層54
3.1引言54
3.2以太網和IEEE802局域網/城域網標準54
3.2.1IEEE802局域網/城域網標準56
3.2.2以太網幀格式57
3.2.3802.1p/q:虛擬局域網和QoS標籤60
3.2.4802.1AX:鏈路聚合(以前的802.3ad)62
3.3全雙工、省電、自動協商和802.1X流量控制64
3.3.1雙工不匹配65
3.3.2局域網喚醒(WoL)、省電和魔術分組65
3.3.3鏈路層流量控制66
3.4網橋和交換機67
3.4.1生成樹協議70
3.4.2802.1ak:多註冊協議76
3.5無線局域網——IEEE802.11(Wi—Fi)76
3.5.1802.11幀77
3.5.2省電模式和時間同步功能81
3.5.3802.11介質訪問控制82
3.5.4物理層的細節:速率、信道和頻率84
3.5.5Wi—Fi安全88
3.5.6Wi—Fi網狀網(802.11s)89
3.6點到點協議89
3.6.1鏈路控制協議89
3.6.2多鏈路PPP93
3.6.3壓縮控制協議95
3.6.4PPP認證95
3.6.5網絡控制協議96
3.6.6頭部壓縮96
3.6.7例子97
3.7環回99
3.8MTU和路徑MTU101
3.9隧道基礎102
3.9.1單向鏈路105
3.10與鏈路層相關的攻擊106
3.11總結107
3.12參考文獻108
第4章地址解析協議113
4.1引言113
4.2一個例子113
4.2.1直接交付和ARP114
4.3ARP緩存115
4.4ARP幀格式116
4.5ARP例子117
4.5.1正常的例子117
4.5.2對一個不存在主機的ARP請求118
4.6ARP緩存超時119
4.7代理ARP119
4.8免費ARP和地址衝突檢測120
4.9arp命令121
4.10使用ARP設置一台嵌入式設備的IPv4地址121
4.11與ARP相關的攻擊122
4.12總結122
4.13參考文獻123
第5章Internet協議124
5.1引言124
5.2IPv4頭部和IPv6頭部125
5.2.1IP頭部字段125
5.2.2Internet校驗和127
5.2.3DS字段和ECN(以前稱為ToS字節或IPv6流量類別)129
5.2.4IP選項131
5.3IPv6擴展頭部133
5.3.1IPv6選項134
5.3.2路由頭部137
5.3.3分片頭部139
5.4IP轉發143
5.4.1轉發表144
5.4.2IP轉發行動144
5.4.3例子145
5.4.4討論148
5.5移動IP149
5.5.1基本模型:雙向隧道149
5.5.2路由優化150
5.5.3討論152
5.6IP數據報的主機處理152
5.6.1主機模式152
5.6.2地址選擇153
5.7與IP相關的攻擊156
5.8總結156
5.9參考文獻157
第6章系統配置:DHCP和自動配置161
6.1引言161
6.2動態主機配置協議161
6.2.1地址池和租用162
6.2.2DHCP和BOOTP消息格式163
6.2.3DHCP和BOOTP選項164
6.2.4DHCP協議操作165
6.2.5DHCPv6174
6.2.6使用DHCP中繼185
6.2.7DHCP認證188
6.2.8重新配置擴展189
6.2.9快速確認189
6.2.10位置信息(LCI和LoST)190
6.2.11移動和切換信息(MoS和ANDSF)190
6.2.12DHCP嗅探191
6.3無狀態地址自動配置191
6.3.1IPv4鏈路本地地址的動態配置191
6.3.2鏈路本地地址的IPv6SLAAC192
6.4DHCP和DNS交互198
6.5以太網上的PPP199
6.6與系統配置相關的攻擊201
6.7總結203
6.8參考文獻204
第7章防火牆和網絡地址轉換209
7.1引言209
7.2防火牆209
7.2.1包過濾防火牆209
7.2.2代理防火牆210
7.3網絡地址轉換212
7.3.1傳統的NAT:基本NAT和NAPT213
7.3.2地址和端口轉換行為217
7.3.3過濾行為219
7.3. 4位於NAT之後的服務器219
7.3.5髮夾和NAT環回220
7.3.6NAT編輯器220
7.3.7服務提供者NAT和服務提供者IPv6轉換220
7.4NAT穿越221
7.4.1針孔和打孔221
7.4.2單邊的自地址確定222
7.4.3NAT的會話穿越工具223
7.4.4利用NAT中繼的穿越228
7.4.5交互連接建立233
7.5配置包過濾防火牆和NAT235
7.5.1防火牆規則235
7.5.2NAT規則236
7.5.3與NAT和防火牆的直接交互:UPnP、NAT—PMP和PCP237
7.6IPv4/IPv6共存和過渡中的NAT238
7.6.1雙協議棧精簡版239
7.6.2使用NAT和ALG的IPv4/IPv6轉換239
7.7與防火牆和NAT相關的攻擊243
7.8總結243
7.9參考文獻244
第8章ICMPv4和ICMPv6:Internet控制報文協議248
8.1引言248
8.1.1在IPv4和IPv6中的封裝248
8.2ICMP報文249
8.2.1ICMPv4報文250
8.2.2ICMPv6報文251
8.2.3處理ICMP報文253
8.3ICMP差錯報文253
8.3.1擴展的ICMP和多部報文254
8.3.2目的不可達(ICMPv4類型3,ICMPv6類型1)和數據包太大( ICMPv6類型2)255
8.3.3重定向(ICMPv4類型5,ICMPv6類型137)261
8.3.4ICMP超時(ICMPv4類型11,ICMPv6類型3)263
8.3.5參數問題(ICMPv4類型12,ICMPv6類型4)266
8.4ICMP查詢/信息類報文267
8.4.1回顯請求/應答(ping)( ICMPv4類型0/8,ICMPv6類型129/128)268
8.4.2路由器發現:路由器請求和通告(ICMPv4類型9,10)269
8.4.3本地代理地址發現請求/應答(ICMPv6類型144/145)271
8.4 .4移動前綴請求/通告(ICMPv6類型146/147)272
8.4.5移動IPv6快速切換報文(ICMPv6類型154)273
8.4.6組播偵聽查詢/報告/完成(ICMPv6類型130/131/132 )273
8.4.7版本2組播偵聽發現(ICMPv6類型143)274
8.4.8組播路由器發現(IGMP類型48/49/50,ICMPv6類型151/152/153)278
8.5IPv6中的鄰居發現278
8.5.1ICMPv6路由器請求和通告(ICMPv6類型133,134)279
8.5.2ICMPv6鄰居請求和通告(ICMPv6類型135,136)280
8.5.3ICMPv6反向鄰居發現請求/通告(ICMPv6類型141/142)283
8.5. 4鄰居不可達檢測283
8.5.5安全 鄰居發現284
8.5.6ICMPv6鄰居發現選項287
8.6ICMPv4和ICMPv6轉換298
8.6.1從ICMPv4轉換到ICMPv6299
8.6.2從ICMPv6轉換到ICMPv4300
8.7與ICMP相關的攻擊301
8.8總結303
8.9參考文獻303
第9章廣播和本地組播(IGMP和MLD)307
9.1引言307
9.2廣播308
9.2.1使用廣播地址308
9.2.2發送廣播數據報310
9.3組播311
9.3.1將IP組播地址轉換為802MAC/以太網地址312
9.3.2例子313
9.3.3發送組播數據報314
9.3.4接收組播數據報316
9.3.5主機地址過濾317
9.4互聯網組管理協議和組播偵聽發現協議318
9.4.1組成員的IGMP和MLD處理(“組成員部分” )321
9.4.2組播路由器的IGMP和MLD處理(“組播路由器部分”)323
9.4.3例子324
9.4.4輕量級IGMPv3和MLDv2328
9.4.5IGMP和MLD健壯性329
9.4.6IGMP和MLD計數器和變量330
9.4.7IGMP和MLD探聽331
9.5與IGMP和MLD相關的攻擊332
9.6總結332
9.7參考文獻333
第10章用戶數據報協議和IP分片335
10.1引言335
10.2UDP頭部335
10.3UDP校驗和336
10.4例子338
10.5UDP和IPv6340
10.5.1Teredo:通過IPv4網絡隧道傳輸IPv6341
10.6UDP— Lite345
10.7IP分片345
10.7.1例子:UDP?/IPv4分片346
10.7.2重組超時348
10.8採用UDP的路徑MTU發現349
10.8.1例子349
10.9IP分片和ARP/ND之間的交互351
10.10最大UDP數據報長度352
10.10.1實現限制352
10.10.2數據報截斷353
10.11UDP服務器的設計353
10.11.1IP地址和UDP端口號353
10.11.2限製本地IP地址354
10.11.3使用多地址355
10.11.4限制遠端IP地址356
10.11.5每端口多服務器的使用357
10.11.6跨越地址族:IPv4和IPv6357
10.11.7流量和擁塞控制的缺失357
10.12UDP/IPv4和UDP/IPv6數據報的轉換358
10.13互聯網中的UDP358
10.14與UDP和IP分片相關的攻擊359
10.15總結360
10.16參考文獻360
第11章名稱解析和域名系統362
11.1引言362
11.2DNS名稱空間362
11.2.1DNS命名語法365
11.3名稱服務器和區域366
11.4緩存366
11.5DNS協議367
11.5.1DNS消息格式369
11.5.2DNS擴展格式(EDNS0)372
11.5.3UDP或TCP372
11.5.4問題(查詢)和區域區段格式373
11.5.5回答、授權和額外信息區段格式373
11.5.6資源記錄類型374
11.5.7動態更新(DNSUPDATE)394
11.5.8區域傳輸和DNS通知397
11.6排序列表、循環和分離DNS402
11.7開放DNS服務器和DynDNS403
11.8透明度和擴展性404
11.9從IPv4向IPv6轉換DNS404
11.10LLMNR和mDNS405
11.11LDAP406
11.12與DNS相關的攻擊406
11.13總結407
11.14參考文獻408
第12章TCP:傳輸控制協議(初步)412
12.1引言412
12.1.1ARQ和重傳412
12.1.2分組窗口和滑動窗口413
12.1.3變量窗口:流量控制和擁塞控制414
12.1.4設置重傳超時415
12.2TCP的引入415
12.2.1TCP服務模型416
12.2.2TCP中的可靠性416
12.3TCP頭部和封裝418
12.4總結420
12.5參考文獻421
第13章TCP連接管理423
13.1引言423
13.2TCP連接的建立與終止423
13.2.1TCP半關閉425
13.2.2同時打開與關閉426
13.2.3初始序列號427
13.2.4例子428
13.2.5連接建立超時429
13.2.6連接與轉換器430
13.3TCP選項431
13.3.1最大段大小選項431
13.3.2選擇確認選項432
13.3.3窗口縮放選項433
13.3.4時間戳選項與防迴繞序列號433
13.3.5用戶超時選項435
13.3.6認證選項436
13.4TCP的路徑最大傳輸單元發現436
13.4.1例子437
13.5TCP狀態轉換439
13.5.1TCP狀態轉換圖440
13.5.2TIME_WAIT狀態442
13.5.3靜默時間的概念446
13.5.4FIN_WAIT_2狀態446
13.5.5同時打開與關閉的轉換446
13.6重置報文段447
13.6.1針對不存在端口的連接請求447
13.6.2終止一條連接447
13.6.3半開連接449
13.6.4時間等待錯誤451
13.7TCP服務器選項451
13.7.1TCP端口號452
13.7.2限製本地IP地址453
13.7.3限制外部節點454
13.7.4進入連接隊列455
13.8與TCP連接管理相關的攻擊458
13.9總結459
13.10參考文獻460
第14章TCP超時與重傳462
14.1引言462
14.2簡單的超時與重傳舉例462
14.3設置重傳超時464
14.3.1經典方法465
14.3.2標準方法465
14.3.3Linux採用的方法468
14.3.4RTT估計器行為471
14.3.5RTTM對丟包和失序的魯棒性472
14.4基於計時器的重傳473
14.4.1例子473
14.5快速重傳475
14.5.1例子475
14.6帶選擇確認的重傳478
14.6.1SACK接收端行為479
14.6.2SACK發送端行為479
14.6.3例子480
14.7偽超時與重傳482
14.7.1重複SACK(DSACK)擴展482
14.7.2Eifel檢測算法483
14.7.3前移RTO恢復(F—RTO)484
14.7.4Eifel響應算法484
14.8包失序與包重複485
14.8 .1失序486
14.8.2重複487
14.9目的度量487
14.10重新組包488
14.11與TCP重傳相關的攻擊489
14.12總結489
14.13參考文獻490
第15章TCP數據流與窗口管理492
15.1引言492
15.2交互式通信492
15.3延時確認494
15.4Nagle算法495
15.4.1延時ACK與Nagle算法結合497
15.4.2禁用Nagle算法498
15.5流量控制與窗口管理498
15.5.1滑動窗口499
15.5.2零窗口與TCP持續計時器501
15.5.3糊塗窗口綜合徵503
15.5.4大容量緩存與自動調優509
15.6緊急機制512
15.6.1例子512
15.7與窗口管理相關的攻擊514
15.8總結515
15.9參考文獻515
第16章TCP擁塞控制517
16.1引言517
16.1.1TCP擁塞檢測517
16.1.2減緩TCP發送518
16.2一些經典算法519
16.2.1慢啟動520
16.2.2擁塞避免521
16.2.3慢啟動和擁塞避免的選擇523
16.2.4Tahoe、Reno以及快速恢復算法523
16.2.5標準TCP524
16.3對標準算法的改進524
16.3.1NewReno525
16.3.2採用選擇確認機制的TCP擁塞控制525
16.3. 3轉發確認(FACK)和速率減半526
16.3.4限制傳輸527
16.3.5擁塞窗口校驗527
16.4偽RTO處理——Eifel響應算法528
16.5擴展舉例528
16.5.1慢啟動行為531
16.5.2發送暫停和本地擁塞(事件1)532
16.5.3延伸ACK和本地擁塞恢復535
16.5.4快速重傳和SACK恢復(事件2)538
16.5.5其他本地擁塞和快速重傳事件539
16.5 .6超時、重傳和撤銷cwnd修改542
16.5.7連接結束545
16.6共享擁塞狀態信息545
16.7TCP友好性546
16.8高速環境下的TCP547
16.8.1高速TCP與受限的慢啟動547
16.8.2二進制增長擁塞控制(BIC和CUBIC)549
16.9基於延遲的擁塞控制算法552
16.9.1Vegas算法552
16.9.2FAST算法553
16.9.3TCPWestwood算法和Westwood+算法553
16.9.4複合TCP553
16.10緩衝區膨脹555
16.11積極隊列管理和ECN556
16.12與TCP擁塞控制相關的攻擊557
16.13總結558
16.14參考文獻560
第17章TCP保活機制563
17.1引言563
17.2描述564
17.2.1保活功能舉例565
17.3與TCP保活機制相關的攻擊569
17.4總結570
17.5參考文獻570
第18章安全:可擴展身份認證協議、IP安全協議、傳輸層安全、DNS安全、域名密鑰識別郵件571
18.1引言571
18.2信息安全的基本原則572
18.3網絡通信的威脅572
18.4基礎的加密與安全機制573
18.4.1密碼系統573
18.4.2RSA公鑰密碼算法575
18.4.3Diff?ie—Hellman—Merkle密鑰協商協議576
18.4.4簽密與橢圓曲線密碼577
18.4.5密鑰派生與完全正向保密577
18.4.6偽隨機數、生成器與函數族578
18.4.7隨機數與混淆值578
18.4.8加密散列函數與消息摘要578
18.4.9消息認證碼579
18.4.10加密套件與密碼套件580
18.5證書、證書頒發機構與公鑰基礎設施582
18.5.1公鑰證書、證書頒發機構與X.509標準583
18.5.2驗證與撤銷證書587
18.5.3屬性證書589
18.6TCP/IP安全協議與分層590
18.7網絡訪問控制:802.1X,802.1AE,EAP,PANA591
18.7.1EAP方法與密鑰派生594
18.7.2EAP重新認證協議595
18.7.3網絡接入認證信息承載協議595
18.8第3層IP安全(IPsec)596
18.8.1Internet密鑰交換協議(IKEv2)597
18.8.2認證頭部606
18.8.3封裝安全負載609
18.8.4組播612
18.8.5L2TP/IPsec613
18.8.6IPsecNAT穿越613
18.8.7例子614
18.9傳輸層安全(TLS和DTLS)622
18.9.1TLS1.2623
18.9.2DTLS633
18.10DNS安全(DNSSEC)636
18.10.1DNSSEC資源記錄637
18.10.2DNSSEC運行642
18.10.3事務認證(TSIG, TKEY,SIG(0))648
18.10.4帶有DNS64的DNSSEC652
18.11域名密鑰識別郵件652
18.11.1DKIM簽名652
18.11.2例子653
18.12與安全協議相關的攻擊654
18.13總結655
18.14參考文獻657
縮略語666