《TCP/IP詳解,卷1:協議》是一本完整而詳細的TCP/IP協議指南。描述了屬於每一層的各個協定以及它們如何在不同作業系統中運作。作者用Lawrence Berkeley實驗室的tcpdump程式來捕捉不同作業系統和TCP/IP實作之間傳輸的不同分組。對tcpdump輸出的研究可以幫助理解不同協定如何運作。 本書適合作為電腦專業學生學習網路的教材和教師參考書。也適用於研究網路的技術人員。
目 錄譯者序前言第1章 概述 1
1.1 引言 1
1.2 分層 1
1.3 TCP/IP的分層 4
1.4 互聯網的位址 5
1.5 域名系統 6
1.6 封裝 6
1.7 分用 8
1.8 客戶-伺服器模型 8
1.9 埠號 9
1.10 標準化過程 10
1.11 RFC 10
1.12 標準的簡單服務 11
1.13 互聯網 12
1.14 實現 12
1.15 應用程式介面 12
1.16 測試網路 13
1.17 小結 13
第2章 連結層 15
2.1 引言 15
2.2 乙太網路和IEEE 802封裝 15
2.3 尾部封裝 17
2.4 SLIP:串列線路IP 17
2.5 壓縮的SLIP 18
2.6 PPP:點對點協定 18
2.7 環回介面 20
2.8 最大傳輸單元MTU 21
2.9 路徑MTU 21
2.10 串列線路吞吐量計算 21
2.11 小結 22
第3章 IP:網際協定 24
3.1 引言 24
3.2 IP首部 24
3.3 IP路由選擇 27
3.4 子網路尋址 30
3.5 子網路遮罩 32
3.6 特殊情況的IP位址 33
3.7 一個子網路的例子 33
3.8 ifconfig指令 35
3.9 netstat指令 36
3.10 IP的未來 36
3.11 小結 37
第4章 ARP:位址解析協定 38
4.1 引言 38
4.2 一個例子 38
4.3 ARP快取 40
4.4 ARP的分組格式 40
4.5 ARP舉例 41
4.5.1 一般的例子 41
4.5.2 不存在主機的ARP請求 42
4.5.3 ARP快取逾時設定 43
4.6 ARP代理 43
4.7 免費ARP 45
4.8 arp命令 45
4.9 小結 46
第5章 RARP:逆位址解析協定 47
5.1 引言 47
5.2 RARP的分組格式 47
5.3 RARP舉例 47
5.4 RARP伺服器的設計 48
5.4.1 作為用戶進程的RARP伺服器 49
5.4.2 每個網路有多個RARP伺服器 49
5.5 小結 49
第6章 ICMP:Internet控制封包協定 50
6.1 引言 50
6.2 ICMP封包的類型 50
6.3 ICMP位址遮罩請求與應答 52
6.4 ICMP時間戳請求與回應 53
6.4.1 舉例 54
6.4.2 另一種方法 55
6.5 ICMP埠不可達錯誤 56
6.6 ICMP封包的4.4BSD處理 59
6.7 小結 60
第7章 Ping程序 61
7.1 引言 61
7.2 Ping程序 61
7.2.1 LAN輸出 62
7.2.2 WAN輸出 63
7.2.3 線路SLIP連結 64
7.2.4 撥號SLIP連結 65
7.3 IP記錄路由選項 65
7.3.1 通常的例子 66
7.3.2 異常的輸出 68
7.4 IP時間戳選項 69
7.5 小結 70
第8章 Traceroute程式 71
8.1 引言 71
8.2 Traceroute 程式的操作 71
8.3 區域網路輸出 72
8.4 廣域網路輸出 75
8.5 IP來源站選路選項 76
8.5.1 寬鬆的源站選路的traceroute
程式範例 78
8.5.2 嚴格的源站選路的traceroute
程式範例 79
8.5.3 寬鬆的來源站選路traceroute程序
的往返路由 80
8.6 小結 81
第9章 IP選路 83
9.1 引言 83
9.2 選路的原理 84
9.2.1 簡單路由表 84
9.2.2 初始化路由表 86
9.2.3 較複雜的路由表 87
9.2.4 沒有到達目的地的路由 87
9.3 ICMP主機與網路不可達錯誤 88
9.4 轉發或不轉發 89
9.5 ICMP重定向錯誤 89
9.5.1 一個例子 90
9.5.2 更多的細節 91
9.6 ICMP路由器發現封包 92
9.6.1 路由器操作 93
9.6.2 主機操作 93
9.6.3 實現 93
9.7 小結 94
第10章 動態選路協定 95
10.1 引言 95
10.2 動態選路 95
10.3 Unix選路守護程序 96
10.4 RIP:選路資訊協定 96
10.4.1 報文格式 96
10.4.2 正常運轉 97
10.4.3 度量 98
10.4.4 問題 98
10.4.5 舉例 98
10.4.6 另一個例子 100
10.5 RIP版本2 102
10.6 OSPF:開放最短路徑優先 102
10.7 BGP:邊界網關協定 103
10.8 CIDR:無型別域間選路 104
10.9 小結 105
第11章 UDP:用戶資料報協定 107
11.1 引言 107
11.2 UDP首部 107
11.3 UDP檢驗和 108
11.3.1 tcpdump輸出 109
11.3.2 一些統計結果 109
11.4 一個簡單的例子 110
11.5 IP分片 111
11.6 ICMP不可達差錯(需分片) 113
11.7 用Traceroute確定路徑MTU 114
11.8 採用UDP的路徑MTU發現 116
11.9 UDP和ARP之間的交互作用 118
11.10 最大UDP資料封包長度 119
11.11 ICMP源站抑制差錯 120
11.12 UDP伺服器的設計 122
11.12.1 客戶IP位址及埠號 122
11.12.2 目標IP位址 122
11.12.3 UDP輸入佇列 122
11.12.4 限製本地IP位址 124
11.12.5 限制遠端IP位址 125
11.12.6 每個連接埠有多個接收者 125
11.13 小結 126
第12章 廣播與多播 128
12.1 引言 128
12.2 廣播 129
12.2.1 受限的廣播 129
12.2.2 指向網路的廣播 129
12.2.3 指向子網路的廣播 129
12.2.4 指向所有子網路的廣播 130
12.3 廣播的例子 130
12.4 多播 132
12.4.1 多播群組位址 133
12.4.2 多播群組位址到乙太網路位址的轉換 133
12.4.3 FDDI和令牌環網路中的多播 134
12.5 小結 134
第13章 IGMP:Internet群組管理協定 136
13.1 引言 136
13.2 IGMP報文 136
13.3 IGMP協定 136
13.3.1 加入一個多播組 136
13.3.2 IGMP報告與查詢 137
13.3.3 實作細節 137
13.3.4 生存時間字段 138
13.3.5 所有主機組 138
13.4 一個例子 138
13.5 小結 141
第14章 DNS:網域名稱系統 142
14.1 引言 142
14.2 DNS基礎 142
14.3 DNS的封包格式 144
14.3.1 DNS查詢封包中的問題部分 146
14.3.2 DNS回應封包中的資源記錄部分 147
14.4 一個簡單的例子 147
14.5 指針查詢 150
14.5.1 舉例 151
14.5.2 主機名稱檢查 151
14.6 資源記錄 152
14.7 高速緩存 153
14.8 用UDP還是用TCP 156
14.9 另一個例子 156
14.10 小結 157
第15章 TFTP:簡單檔案傳送協定 159
15.1 引言 159
15.2 協議 159
15.3 一個例子 160
15.4 安全性 161
15.5 小結 162
第16章 BOOTP: 引導程式協定 163
16.1 引言 163
16.2 BOOTP的分組格式 163
16.3 一個例子 164
16.4 BOOTP伺服器的設計 165
16.5 BOOTP穿越路由器 167
16.6 特定廠商資訊 167
16.7 小結 168
第17章 TCP:傳輸控制協定 170
17.1 引言 170
17.2 TCP的服務 170
17.3 TCP的首部 171
17.4 小結 173
第18章 TCP連線的建立與終止 174
18.1 引言 174
18.2 連線的建立與終止 174
18.2.1 tcpdump的輸出 174
18.2.2 時間系列 175
18.2.3 建立連線協定 175
18.2.4 連線終止協議 177
18.2.5 正常的tcpdump輸出 177
18.3 連線建立的逾時 178
18.3.1 第一次超時時間 178
18.3.2 服務類型欄位 179
18.4 最大報文段長度 179
18.5 TCP的半關閉 180
18.6 TCP的狀態變遷圖 182
18.6.1 2MSL等待狀態 183
18.6.2 平靜時間的概念 186
18.6.3 FIN_WAIT_2狀態 186
18.7 復歸報文段 186
18.7.1 到不存在的連接埠的連線請求 187
18.7.2 異常終止一個連線 187
18.7.3 偵測半開啟連接 188
18.8 同時打開 189
18.9 同時關閉 191
18.10 TCP選項 191
18.11 TCP伺服器的設計 192
18.11.1 TCP伺服器連接埠號碼 193
18.11.2 限定的本地IP位址 194
18.11.3 限定的遠端IP位址 195
18.11.4 呼入連線請求佇列 195
18.12 小結 197
第19章 TCP的互動資料流 200
19.1 引言 200
19.2 互動式輸入 200
19.3 經受時延的確認 201
19.4 Nagle演算法 203
19.4.1 關閉Nagle演算法 204
19.4.2 一個例子 205
19.5 視窗大小通告 207
19.6 小結 208
第20章 TCP的成塊資料流 209
20.1 引言 209
20.2 正常資料流 209
20.3 滑動視窗 212
20.4 視窗大小 214
20.5 PUSH標誌 215
20.6 慢啟動 216
20.7 成塊資料的吞吐量 218
20.7.1 頻寬時延乘積 220
20.7.2 擁塞 220
20.8 緊急方式 221
20.9 小結 224
第21章 TCP的超時與重傳 226
21.1 引言 226
21.2 超時與重傳的簡單例子 226
21.3 往返時間測量 227
21.4 往返時間RTT的例子 229
21.4.1 往返時間RTT的測量 229
21.4.2 RTT估計量的計算 231
21.4.3 慢啟動 233
21.5 壅塞舉例 233
21.6 擁塞避免演算法 235
21.7 快速重傳與快速復原演算法 236
21.8 壅塞舉例(續) 237
21.9 依每條路由進行度量 240
21.10 ICMP的錯誤 240
21.11 重新分組 243
21.12 小結 243
第22章 TCP的堅持定時器 245
22.1 引言 245
22.2 一個例子 245
22.3 糊塗窗口症候群 246
22.4 小結 250
第23章 TCP的保活定時器 251
23.1 引言 251
23.2 描述 252
23.3 保活舉例 253
23.3.1 另一端崩潰 253
23.3.2 另一端崩潰並重新啟動 254
23.3.3 另一端不可達 254
23.4 小結 255
第24章 TCP的未來與效能 256
24.1 引言 256
24.2 路徑MTU發現 256
24.2.1 一個例子 257
24.2.2 大分組還是小分組 258
24.3 長肥管 259
24.4 視窗擴大選項 262
24.5 時間戳選項 263
24.6 PAWS:防止迴繞的序號 265
24.7 T/TCP:為事務用的TCP擴充 265
24.8 TCP的效能 267
24.9 小結 268
第25章 SNMP:簡單網路管理協定 270
25.1 引言 270
25.2 協議 270
25.3 管理資訊結構 272
25.4 物件標識符 274
25.5 管理資訊庫介紹 274
25.6 實例標識 276
25.6.1 簡單變數 276
25.6.2 表格 276
25.6.3 字典式排序 277
25.7 一些簡單的例子 277
25.7.1 簡單變數 278
25.7.2 get-next操作 278
25.7.3 表格的存取 279
25.8 管理資訊庫(續) 279
25.8.1 system組 279
25.8.2 interface組 280
25.8.3 at組 281
25.8.4 ip組 282
25.8.5 icmp組 285
25.8.6 tcp組 285
25.9 其他一些例子 288
25.9.1 接口MTU 288
25.9.2 路由表 288
25.10 trap 290
25.11 ASN.1和BER 291
25.12 SNMPv2 292
25.13 小結 292
第26章 Telnet和Rlogin:遠端登入 293
26.1 引言 293
26.2 Rlogin協定 294
26.2.1 應用進程的啟動 295
26.2.2 流量控制 295
26.2.3 客戶的中斷鍵 296
26.2.4 視窗大小的改變 296
26.2.5 伺服器到客戶的命令 296
26.2.6 客戶到伺服器的命令 297
26.2.7 客戶的轉義符 298
26.3 Rlogin的例子 298
26.3.1 初始的客戶伺服器協定 298
26.3.2 客戶中斷鍵 299
26.4 Telnet協定 302
26.4.1 NVT ASCII 302
26.4.2 Telnet命令 302
26.4.3 選項協商 303
26.4.4 子選項協商 304
26.4.5 半雙工、一次一字符、一次
一行或行方式 304
26.4.6 同步訊號 306
26.4.7 客戶的轉義符 306
26.5 Telnet舉例 306
26.5.1 單字元方式 306
26.5.2 行方式 310
26.5.3 一次一行方式(準行方式) 312
26.5.4 行方式:客戶中斷鍵 313
26.6 小結 314
第27章 FTP:檔案傳送協定 316
27.1 引言 316
27.2 FTP協定 316
27.2.1 數據表示 316
27.2.2 FTP指令 318
27.2.3 FTP應答 319
27.2.4 連線管理 320
27.3 FTP的範例 321
27.3.1 連線管理:臨時資料連接埠 321
27.3.2 連線管理:預設資料連接埠 323
27.3.3 文字檔傳輸:NVT ASCII
表示還是影像表示 325
27.3.4 異常中止一個檔案的傳輸:
Telnet同步訊號 326
27.3.5 匿名FTP 329
27.3.6 來自一個未知IP位址的匿名FTP 330
27.4 小結 331
第28章 SMTP:簡單郵件傳送協定 332
28.1 引言 332
28.2 SMTP協定 332
28.2.1 簡單例子 332
28.2.2 SMTP命令 334
28.2.3 信封、首部和正文 335
28.2.4 中繼代理 335
28.2.5 NVT ASCII 337
28.2.6 重試間隔 337
28.3 SMTP的例子 337
28.3.1 MX記錄:主機非直接連到
Internet 337
28.3.2 MX記錄:主機故障 339
28.3.3 VRFY和EXPN命令 340
28.4 SMTP的未來 340
28.4.1 信封的變更:擴充的SMTP 341
28.4.2 首部變化:非ASCII字元 342
28.4.3 正文變更:通用Internet郵件
擴充 343
28.5 小結 346
第29章 網路檔案系統 347
29.1 引言 347
29.2 Sun遠端過程呼叫 347
29.3 XDR:外部資料表示 349
29.4 連接埠映射器 349
29.5 NFS協定 351
29.5.1 文件句柄 353
29.5.2 安裝協議 353
29.5.3 NFS過程 354
29.5.4 UDP還是TCP 355
29.5.5 TCP上的NFS 355
29.6 NFS實例 356
29.6.1 簡單的例子:讀一個文件 356
29.6.2 簡單的範例:建立一個目錄 357
29.6.3 無狀態 358
29.6.4 範例:伺服器崩潰 358
29.6.5 等冪過程 360
29.7 第3版的NFS 360
29.8 小結 361
第30章 其他的TCP/IP應用程式 363
30.1 引言 363
30.2 Finger協議 363
30.3 Whois協議 364
30.4 Archie、WAIS、Gopher、Veronica
和WWW 366
30.4.1 Archie 366
30.4.2 WAIS 366
30.4.3 Gopher 366
30.4.4 Veronica 366
30.4.5 萬維網WWW 367
30.5 X窗口系統 367
30.5.1 Xscope程序 368
30.5.2 LBX: 低頻寬X 370
30.6 小結 370
附錄A tcpdump程序 371
附錄B 計算機時鐘 376
附錄C sock程式 378
附錄D 部分習作的解答 381
附錄E 配置選項 395
附錄F 可以免費取得的原始碼 406
參考文獻 409
縮寫 420