內容提要
本書全面深入地講解了計算機網路與網際網路的各個方面,包括數據傳輸、包傳送、網路互連和網路套用4大部分。數據傳輸部分解釋了最底層承載信息的電子信號如何穿越電纜,並介紹了數據怎樣用電子信號進行編碼;第2部分解釋了計算機網路為何使用數據包、數據如何聚合成傳送的包,以及數據包如何被傳送到它的目的地址;第3部分主要介紹網路互連,討論了將異構網路組合成一個大規模的、無縫的通信系統的動機和實現方法;最後一部分主要介紹了套用系統如何使用底層網路進行通信。本書的附錄和光碟還提供了網路術語的解釋以及大量的網路編程和實驗的例子、圖表、動畫等,這對於深入理解網路互連技術及組織網路素材都大有裨益。
本書可作為本科生和低年級的研究生教材或教學參考書。對於從事網路研究、網路工程、技術服務的科研和工程技術人員來說,本書也是一本很好的基礎性參考讀物。
前 言
本書如此受歡迎令我欣喜異常。除了幾百所美國學校用它作為計算機網路課程的教材以外,許多專業人士還寫信說它正用於工業界,而且還有來自海外譯本的熱情洋溢的評論。在市場上充斥著網路書籍的今天,本書的成功特別令人感到滿意。它之所以能夠脫穎而出,在於它覆蓋面廣、條理清晰、對概念的闡述透徹並關注於Internet,而且隨書附帶的光碟以及下面的網站也為讀者提供了豐富的材料:
http://www.netbook.cs.purdue.edu
新版對原書做了徹底的修訂和更新,增加了3章(第3章,第14章和第25章)和許多新的小節,並增加了80多個術語。光碟和Web站點的內容也重新做了整理和擴展。
新增的3章內容是應教師和讀者的需求而增加的。第3章是專門為那些想初步了解網路套用和編程知識的讀者設計的。該章在介紹網路底層技術和協定設施之前,揭示了怎樣構造通過Internet操作的套用。並且,第3章還給出了一個簡化的API (包括可用的代碼),舉例說明Internet套用如何使用這個API進行通信。即便讀者對編程不感興趣,也會讚賞許多例子程式所達到的效果。
第14章是應那些要求更詳細地了解面向連線網路的讀者而編寫的。該章以ATM為例,介紹了面向連線的網路範例。除了解釋諸如標籤交換等概念和細節之外,還提供了對這一技術的評估,並討論了為什麼ATM沒有達到它雄心勃勃的設計目標。
第25章是應那些要求增加Internet路由和Internet路由協定內容的讀者而編寫的。該章討論了靜態和動態路由,覆蓋了自治系統的概念和具體的路由協定,如RIP,OSPF和BGP等。最後,該章還討論了組播路由傳播。
本書從最廣泛的意義上回答了“計算機網路和國際網際網路是怎樣操作的?”這一基本問題。它為讀者提供了一個全面的、涵蓋了從網路中最底層的數據傳輸和電纜到最高層的套用軟體的學習旅程。在每個層次中,本書都展示了下一個層次怎樣使用和擴展底層所提供的設施和服務。因此,本書在描述了一個數據機怎樣使用載波編碼以後,就開始介紹Internet這樣的分組交換系統如何使用數據機傳送幀;在描述了乙太網這樣的幀傳輸技術以後,就開始介紹像TCP這樣的協定怎樣利用這些傳輸設施實現對數據的可靠傳輸。最後,本書介紹了Internet套用,解釋全球資訊網(World Wide Web)在這樣一個基礎設施之上是怎樣操作的。
本書是為那些沒有或只有一點網路背景的讀者準備的。書中沒有使用複雜的數學描述,也不需要讀者有作業系統的知識。相反,本書清楚地定義了概念,使用實例和插圖說明技術是怎樣操作的,闡明了分析結果但並沒有給出數學證明。
在引言(第1~3章)之後,本書的正文含有4部分:第1部分(第4~6章)簡要說明了底層的硬體是怎樣工作的。這一部分解釋了載波信號的概念,討論了載波的調製,說明了數據機怎樣把傳送的數據編碼成載波信號。這一部分還討論了異步、面向字元的數據傳輸,並定義了以後章節中出現的術語,諸如頻寬、波特等。
第2部分(第7~16章)關注於分組交換。這一部分介紹了使用分組的動機,然後描述了用於網路分類的特徵,如區域網路、廣域網、本地環、公共網路和私有網路、面向連線的網路或無連線網路,還有基本的網路拓撲結構和電纜模式。這一部分還介紹了如下一跳、路由、交換、協定分層等在每一章都要使用的術語。最後舉例說明幾種常見的網路,包括乙太網、FDDI、令牌環、ATM和ADSL。
第3部分(第17~25章)著重介紹Internet協定。討論網路互連的動機之後,這一部分描述了互連網的體系結構以及路由器、互連網編址、地址綁定、TCP/IP協定等。詳細回顧了IP,TCP,ICMP和ARP協定,讓學生理解概念是怎樣聯繫到實際的。在第24章介紹了TCP,其內容覆蓋了傳輸協定的可靠性這一重要的、深層次主題。附錄5通過建設一個家庭網路、使用一個IP位址把多台計算機連線到Internet上,展示了怎樣把理論付諸實踐。
最後一部分(第26~38章)研究了網路套用。像本書其他部分一樣,這一部分的覆蓋面也是相當寬廣的——既包括通用的原理,也包括具體的套用。這一部分首先描述了網路套用用以通信的客戶-伺服器模型,然後描述了套接字(socket)API,並給出了使用套接字進行通信的客戶與伺服器示例代碼。這一部分還描述了域名系統中的名字解析和套用,如電子郵件、檔案傳輸、Web瀏覽等,還通過使用CGI,Java,JavaScript的例子,介紹了動態文檔和主動文檔。在介紹每一種技術的過程中,均描述了軟體結構並解釋了客戶和伺服器之間怎樣互動以便提供服務。第35章還討論了中間件(middleware),其中包括過程式的和面向對象的中間件技術。這一部分後面的章節討論了網路安全,並介紹了如何使用套用軟體進行網路管理。最後,第38章還探討了有趣的初始化問題,介紹了套用層軟體怎樣實現看似不可能的事情——用協定軟體獲取正在使用的協定軟體在初始化時必需的信息。
本書最適合於作為一學期的網路高級引論課程使用。由於涉及目標的廣泛性,所以本書覆蓋了網路從電纜到套用的所有主題。比如,在普渡(Purdue)大學,學生有每周一次的實驗室作業以強化概念的理解,並提供動手的經驗。到完成該課程時,每個學生都可以:知道IP路由器怎樣使用路由錶轉發IP數據報;描述一個數據報怎樣穿越Internet;解釋集線器和2層交換機之間的不同;了解TCP如何識別一個連線;知道為什麼當前的Web伺服器能夠在80連線埠上同時處理多個連線;描述網橋和IP路由器之間概念上的不同;計算一個比特穿越100BaseT網路的時間長度;解釋為什麼TCP歸於端到端一類;區分乙太網使用的CSMA/CD介質訪問機制和令牌傳遞模式;了解DSL如何使用多路復用技術高速傳輸數據。
一門課程的目標是廣泛的,而不是深奧的——它覆蓋所有的主題,讀者可以不必專注於少數幾種技術或概念。因此,一門成功課程的關鍵在於保持一個敏捷的步伐,在一個學期里覆蓋基礎的主題。本書第1部分中基礎的內容可以壓縮在一周之內完成,網路和網路互連部分可以分配五周時間,留下幾個星期給套用和網路管理與安全等主題。
教師應該向學生強調概念和原理的重要性:具體的技術可能幾年後過時了,但是原理是不變的。另外,教師應該激發學生徹底學習網路的動力。
儘管沒有一個單獨的主題是具有挑戰性的,但學生仍可以發現許多內容不很容易接受。特別是,當學生們面對過多新的術語時。縮寫的網路術語和行話可能會非常令人困惑:學生花費了大量的時間才能習慣這些術語。為幫助學生掌握術語,附錄1包含了一個術語和縮寫辭彙表。為更加清晰起見,辭彙表中的辭彙定義是單獨描述的,而不是在文中逐字逐句說明的。
由於編程和實驗對幫助學生學習網路起著非常關鍵的作用,所以實驗室練習是任何一門網路課程的重要部分。附錄6描述了Purdue大學本科生網路實驗室的體系結構,展示了怎樣用一些廉價的硬體設備構造一個有用的實驗環境。我們的實驗課程強調網路的兩個重要方面:套接字編程和數據包分析。我們讓學生構造客戶軟體訪問網路並提取數據(如編寫程式列印當前的溫度)。第3章介紹了簡單的API,使用我們的API,學生可以在了解協定、地址、套接字之前編寫可運行的代碼。當然,學生在學期後面會學習如何使用套接字API。最後,學生需要編寫一個並發的Web伺服器(CGI支持是可選的)。除了套用編程之外,學生們還需要使用實驗室設施從一個真實的網路中捕獲數據包,然後編寫程式解碼數據包頭。
讓學生訪問網路提高了他們的熱情,教師應該鼓勵學生們做實驗——我們的經驗表明,訪問過實際網路的學生能更好地理解主題。因此,如果沒有專用的包分析儀,可以在一個標準PC上安裝相應的軟體來配置一個廉價的分析儀。對那些無法訪問網路設施的學生來說,光碟中包含了包跟蹤的例子,學生們可以編寫程式來讀取蹤跡並處理包,就像從網路中捕獲它們一樣。
本書所帶的光碟和Web站點都包含許多材料,有助於教學和讀者對本書內容的理解。對於教師,光碟包含了課程的內容,文中的圖表可以做演示,生動的圖表有助於闡明概念。光碟還包括書中沒有的內容,包括網路電纜和設備的照片以及用於學生工程作業中的數據檔案。
為幫助教授和學生們定位信息,光碟還包括一個關鍵字搜尋機制。給定一個術語,該搜尋機制從在線上辭彙表中定位術語的定義以及與該術語相關的其他術語。最後,光碟包含了指向Web 站點的連結,該站點在不斷地更新。本書專門建立了兩個電子郵件列表:一般的信息可以從[email protected]獲得,關於本書教學內容的討論參見[email protected]。欲加入列表,向相應列表名字發一封電子郵件信息,郵件體由subscribe組成。為避免郵件伺服器通過Internet傳送一個訊息的多個拷貝,教師需要為他們站點的所有學生建立一個單獨的本地別名(alias)。
感謝所有對本書的新版做出貢獻的人:Dennis Brylow和John Lin校對了本書的所有章節,Jennifer Seitzer,Abdullah Abonamah和George Varghese審讀了早期的版本,並提出了有價值的建議。Mike Evangelista 寫了第3章中的客戶和伺服器套用代碼和API,並把這個API移植到Linux,Solaris和Windows 平台。Ralph Droms準備了光碟,並且管理Web的內容。Jim Griffioen審讀了新增加的3章,提供了全球的前景和技術細節。特別感謝我的妻子和夥伴,Chris,本書的許多進步來源於她細心的編輯和有益的提議。
本書目錄
第1章 簡介 1
1.1 計算機網路的增長 1
1.2 網路系統的複雜性 1
1.3 克服複雜性 2
1.4 概念和術語 2
1.5 本書的結構 2
1.6 小結 3
第2章 動機與工具 4
2.1 簡介 4
2.2 資源共享 4
2.3 Internet的增長 5
2.4 探測Internet 6
2.5 解釋ping的回響 8
2.6 跟蹤一個路由 9
2.7 小結 10
2.8 練習 10
第3章 網路編程與套用 12
3.1 簡介 12
3.2 網路通信 12
3.3 客戶-伺服器計算 12
3.4 通信模式 13
3.5 一個套用編程接口的例子 13
3.6 一個簡單的API調用過程 14
3.7 API的定義 15
3.7.1 await_contact函式 15
3.7.2 make_contact函式 15
3.7.3 appname_to_appnum 函式 15
3.7.4 cname_to_comp函式 16
3.7.5 send函式 16
3.7.6 recv和recvln函式 16
3.7.7 send_eof 函式 16
3.7.8 API 類型總結 17
3.8 回聲(echo)應用程式代碼 17
3.8.1 回聲伺服器代碼實例 18
3.8.2 回聲客戶代碼實例 19
3.9 一個聊天(chat)應用程式代碼 22
3.9.1 聊天伺服器代碼示例 23
3.9.2 聊天客戶代碼實例 25
3.10 Web應用程式代碼 27
3.10.1 Web客戶代碼實例 28
3.10.2 Web伺服器代碼實例 29
3.11 小結 34
3.12 練習 34
第1部分 數 據 傳 輸
第4章 傳輸介質 36
4.1 簡介 36
4.2 銅纜 36
4.3 玻璃纖維 38
4.4 無線電 38
4.5 衛星 38
4.6 地球同步衛星 39
4.7 低地球軌道衛星 40
4.8 低地球軌道衛星陣列 40
4.9 微波 41
4.10 紅外線 41
4.11 雷射 41
4.12 小結 42
4.13 練習 42
第5章 本地異步通信(RS-232) 43
5.1 簡介 43
5.2 異步通信的需求 43
5.3 用電流傳送比特 43
5.4 通信標準 44
5.5 波特率、幀與出錯 46
5.6 全雙工異步通信 47
5.7 實際硬體的限制 48
5.8 硬體頻寬與比特傳輸 49
5.9 噪聲對通信的影響 49
5.10 定理對數據網路的意義 50
5.11 小結 50
5.12 練習 51
第6章 遠距離通信(載波、調製和數據機) 52
6.1 簡介 52
6.2 遠距離傳送信號 52
6.3 用於調製和解調的數據機硬體 54
6.4 租用模擬數據線路 55
6.5 光、無線電頻率和撥號數據機 56
6.6 載波頻率和多路復用 57
6.7 基帶和寬頻技術 58
6.8 波分多路復用 59
6.9 擴展頻譜 59
6.10 時分多路復用 60
6.11 小結 60
6.12 練習 61
第2部分 包 傳 輸
第7章 包、幀和錯誤檢測 62
7.1 簡介 62
7.2 包的概念 62
7.3 包和時分多路復用 64
7.4 包和硬體幀 64
7.5 位元組填充 66
7.6 傳輸錯誤 67
7.7 奇偶位和奇偶校驗 67
7.8 機率、數學和錯誤檢測 68
7.9 使用校驗和檢測錯誤 69
7.10 使用循環冗餘校驗檢測錯誤 70
7.11 模組連線 71
7.12 突發錯誤 72
7.13 幀格式和錯誤檢測機制 72
7.14 小結 73
7.15 練習 74
第8章 區域網路技術及網路拓撲 76
8.1 簡介 76
8.2 直接的點對點通信 76
8.3 共享通信信道 78
8.4 區域網路的重要性和引用的本地性 78
8.5 LAN的拓撲結構 79
8.5.1 星形拓撲 79
8.5.2 環形拓撲 80
8.5.3 匯流排形拓撲 80
8.5.4 存在多種拓撲結構的原因 81
8.6 匯流排網實例:乙太網 81
8.6.1 乙太網的歷史 81
8.6.2 乙太網傳輸與曼徹斯特編碼 82
8.6.3 乙太網上的共享 83
8.7 載波偵聽多路訪問網(CSMA) 83
8.8 帶有CSMA/CD的衝突檢測與回退 84
8.9 802.11無線區域網路和CSMA/CA 85
8.10 匯流排網路的另一個實例:LocalTalk 86
8.11 環形網實例:IBM令牌環 87
8.12 環形網的另一個實例:FDDI 88
8.13 星形網實例:ATM 90
8.14 小結 91
8.15 練習 92
第9章 硬體編址與幀類型識別 94
9.1 簡介 94
9.2 指定接收者 94
9.3 區域網路硬體如何使用地址來過濾包 95
9.4 物理地址的格式 96
9.5 廣播 97
9.6 組播 98
9.7 組播編址 99
9.8 標識包的內容 99
9.9 幀頭和幀格式 100
9.10 幀格式的一個例子 100
9.11 不使用自標識幀的網路 102
9.12 網路分析儀、物理地址和幀類型 103
9.13 小結 105
9.14 乙太網地址分配 106
9.15 練習 106
第10章 區域網路布線、物理拓撲和接口硬體 107
10.1 簡介 107
10.2 區域網路和計算機的速度 107
10.3 網路接口硬體 108
10.4 網路接口卡與網路間的連線 109
10.5 早期的粗線乙太網布線 110
10.6 連線多路復用 111
10.7 細線乙太網布線 112
10.8 雙絞線乙太網 113
10.9 布線方案的優缺點 114
10.10 拓撲矛盾 116
10.11 網路接口卡和布線方案 116
10.12 布線方案和其他網路技術 117
10.13 小結 118
10.14 練習 119
第11章 擴展區域網路:光纖數據機、中繼器、網橋和交換機 120
11.1 簡介 120
11.2 距離限制與區域網路設計 120
11.3 光纖擴展 121
11.4 中繼器 122
11.5 網橋 124
11.6 幀過濾 124
11.7 橋接網路的啟動和達到穩定狀態的動作 126
11.8 設計一個橋接網路 126
11.9 建築物間的橋接 127
11.10 跨越長距離的橋接 127
11.11 橋接環路 129
11.12 分散式生成樹 130
11.13 交換 130
11.14 交換機與集線器的組合 131
11.15 用於其他技術的橋接和交換 132
11.16 小結 132
11.17 練習 133
第12章 長距離數字連線技術 134
12.1 簡介 134
12.2 數字電話 134
12.3 同步通信 135
12.4 數字電路與DSU/CSU 136
12.5 電話標準 137
12.6 DS術語與數據速率 137
12.7 小容量電路 138
12.8 中等容量的數字電路 139
12.9 大容量電路 139
12.10 光載波標準 140
12.11 後綴C 140
12.12 同步光網路(SONET) 141
12.13 本地用戶迴路 142
12.14 ISDN 142
12.15 非對稱數字用戶線路技術 143
12.16 其他DSL技術 145
12.17 電纜數據機技術 146
12.18 上流通信 147
12.19 混合光纖同軸 148
12.20 光纖到路邊 148
12.21 特殊情況下的替代方案 149
12.22 廣播衛星系統 149
12.23 小結 150
12.24 練習 151
第13章 廣域網技術和路由 152
13.1 簡介 152
13.2 大型網路和廣域 152
13.3 分組交換機 153
13.4 構建廣域網 153
13.5 存儲轉發 154
13.6 廣域網內的物理編址 155
13.7 下一跳轉發 155
13.8 源無關 156
13.9 分層地址與路由的關係 157
13.10 廣域網內的路由 157
13.11 默認路由的使用 159
13.12 路由表計算 159
13.13 計算圖中最短路徑 160
13.14 分散式路由計算 161
13.15 距離向量路由 162
13.16 鏈路狀態路由(SPF) 163
13.17 廣域網技術實例 164
13.17.1 ARPANET 164
13.17.2 X.25 164
13.17.3 幀中繼 164
13.17.4 SMDS 165
13.17.5 ATM 165
13.18 小結 165
13.19 練習 166
第14章 面向連線的網路與ATM 167
14.1 簡介 167
14.2 單一全球網路 167
14.3 ISDN與ATM 168
14.4 ATM的設計與信元 168
14.5 面向連線的服務 169
14.6 VPI/VCI 170
14.7 標籤和標籤交換 170
14.8 通過ATM網路通信的一個例子 171
14.9 永久虛電路 172
14.10 交換虛電路 173
14.11 服務質量 173
14.12 採用信元和標籤交換的動機 174
14.12.1 信元與分組的對比 174
14.12.2 標籤交換與路由的對比 175
14.13 ATM數據傳輸與AAL5 175
14.14 對ATM的批評 175
14.15 小結 177
14.16 練習 177
第15章 網路特性:所有權、服務模式與性能 178
15.1 簡介 178
15.2 網路所有權 178
15.2.1 專用網路 178
15.2.2 公共網路 179
15.3 私密性與公共網路 179
15.4 優點與缺點 179
15.5 虛擬專用網 180
15.6 保證絕對私密性 181
15.7 服務模式 181
15.8 面向連線服務模式 182
15.8.1 連續的通信和突發的通信 182
15.8.2 單工和全雙工連線 182
15.8.3 連線持續時間與永久性 182
15.8.4 服務保證 182
15.8.5 流接口或訊息接口 182
15.9 無連線服務模式 183
15.10 內部和外部服務模式 183
15.11 服務模式的對比 183
15.12 服務模式的實例 184
15.13 地址與連線標識符 184
15.14 網路性能特性 185
15.14.1 延遲 185
15.14.2 吞吐量 186
15.14.3 延遲和吞吐量之間的關係 186
15.14.4 延遲-吞吐量乘積 187
15.15 抖動 188
15.15.1 等時網路 188
15.15.2 異步網路 188
15.16 小結 188
15.17 練習 189
第16章 協定與分層 190
16.1 簡介 190
16.2 協定需求 190
16.3 協定組 191
16.4 一個協定設計方案 191
16.5 七層 192
16.6 棧:分層軟體 193
16.7 分層軟體如何工作 194
16.8 多重嵌套頭部 194
16.9 分層的科學基礎 195
16.10 協定使用的技術 195
16.10.1 無序傳送的序列化 196
16.10.2 刪除複製數據包的序列化 197
16.10.3 重傳丟失的數據包 197
16.10.4 避免因過多延遲造成的重播(replay) 198
16.10.5 防止數據溢出的流控制 198
16.10.6 避免網路擁塞的機制 201
16.11 協定設計的藝術 202
16.12 小結 203
16.13 練習 203
第3部分 網 絡 與 連
第17章 網路互連:概念、體系結構和協定 205
17.1 簡介 205
17.2 網路互連的原因 205
17.3 通用服務的概念 205
17.4 異構系統中的通用服務 206
17.5 網路互連 206
17.6 使用路由器的物理網路連線 207
17.7 互連網體系結構 207
17.8 實現通用服務 208
17.9 虛擬網路 208
17.10 網路互連協定 209
17.11 網路互連和TCP/IP重要性 210
17.12 分層和TCP/IP協定 210
17.13 主機、路由器和協定層 211
17.14 小結 212
17.15 練習 212
第18章 IP:網際協定地址 214
18.1 簡介 214
18.2 虛擬互連網地址 214
18.3 IP編址模式 215
18.4 IP位址的層次 215
18.5 最初的IP位址類 216
18.6 地址類的計算 217
18.7 點分十進制表示法 218
18.8 類和點分十進制表示法 219
18.9 地址空間的劃分 219
18.10 地址權威 220
18.11 類編址的例子 220
18.12 子網和無類編址 221
18.13 地址掩碼 222
18.14 CIDR表示法 223
18.15 CIDR地址塊的例子 223
18.16 CIDR主機地址 224
18.17 特殊的IP位址 224
18.17.1 網路地址 225
18.17.2 直接廣播地址 225
18.17.3 受限廣播地址 225
18.17.4 本機地址 225
18.17.5 回送地址 225
18.18 特殊IP位址小結 226
18.19 伯克利廣播地址形式 226
18.20 路由器和IP編址原則 227
18.21 多宿主機 228
18.22 小結 228
18.23 練習 229
第19章 綁定協定地址(ARP) 230
19.1 簡介 230
19.2 協定地址和數據包傳送 230
19.3 地址解析 231
19.4 地址解析技術 232
19.5 表查找的地址解析 232
19.6 使用closed-form 計算的地址解析 234
19.7 使用訊息交換的地址解析 234
19.8 地址解析協定(ARP) 236
19.9 ARP訊息傳送 236
19.10 ARP訊息格式 237
19.11 傳送一個ARP訊息 238
19.12 標識ARP幀 238
19.13 快取ARP應答 239
19.14 處理到來的ARP訊息 239
19.15 分層、地址解析、協定地址 240
19.16 小結 240
19.17 練習 241
第20章 IP數據報和數據報轉發 242
20.1 簡介 242
20.2 無連線服務 242
20.3 虛擬數據包 242
20.4 IP數據報 243
20.5 轉發IP數據報 244
20.6 IP位址和路由表項 245
20.7 掩碼欄位和數據報轉發 246
20.8 目標和下一跳地址 246
20.9 盡力而為的傳送 247
20.10 IP數據報頭格式 247
20.11 小結 248
12.12 練習 249
第21章 IP封裝、分片和重組 250
21.1 簡介 250
21.2 數據報傳輸和幀 250
21.3 封裝 250
21.4 在互連網上的傳輸 251
21.5 MTU,數據報大小和封裝 252
21.6 重組 253
21.7 標識數據報 254
21.8 片段丟失 254
21.9 將片段再次分片 255
21.10 小結 255
21.11 練習 256
第22章 未來的IP(IPv6) 257
22.1 簡介 257
22.2 IP的成功 257
22.3 改變的原因 258
22.4 名稱和版本號 258
22.5 IPv6的特點 259
22.6 IPv6數據報格式 259
22.7 IPv6基本頭格式 260
22.8 IPv6如何處理多個頭部 261
22.9 分片、重組和path MTU 262
22.10 多個頭部的目的 263
22.11 IPv6編址 264
22.12 IPv6冒號十六進制表示法 265
22.13 小結 265
22.14 練習 266
第23章 錯誤報告機制(ICMP) 267
23.1 簡介 267
23.2 盡力而為的語法和錯誤檢測 267
23.3 互連網控制訊息協定 268
23.4 ICMP訊息傳輸 270
23.5 使用ICMP訊息檢測可到達性 271
23.6 使用ICMP跟蹤路由 271
23.7 由traceroute輸出的最後地址 272
23.8 ICMP 用於path MTU發現 273
23.9 小結 274
23.10 練習 274
第24章 TCP:可靠傳輸服務 275
24.1 簡介 275
24.2 可靠傳輸的需求 275
24.3 傳輸控制協定 275
24.4 TCP提供給應用程式的服務 276
24.5 端到端服務和數據報 276
24.6 可靠性 277
24.7 數據包的丟失和重新傳送 278
24.8 自適應重新傳送 279
24.9 重新傳送次數的比較 279
24.10 緩衝區、流控制和視窗 280
24.11 3次握手 281
24.12 擁塞控制 282
24.13 TCP數據段的格式 283
24.14 小結 283
24.15 練習 284
第25章 Internet路由 285
25.1 簡介 285
25.2 靜態與動態路由 285
25.3 主機的靜態路由和默認路由 285
25.4 動態路由和路由器 286
25.5 全球Internet路由 288
25.6 自治系統概念 288
25.7 Internet路由協定的兩種類型 289
25.7.1 內部網關協定(IGP) 289
25.7.2 外部網關協定(EGP) 289
25.7.3 何時使用EGP和IGP 289
25.7.4 最優路由、路由度量和IGP 290
25.8 路由和數據流量 291
25.9 邊界網關協定(BGP) 291
25.10 路由信息協定(RIP) 292
25.11 RIP數據包格式 293
25.12 開放最短路徑優先協定(OSPF) 294
25.13 OSPF示例圖 295
25.14 OSPF區域 295
25.15 組播路由 296
25.15.1 IP組播語義 296
25.15.2 IGMP 297
25.15.3 轉發和發現技術 297
25.15.4 組播協定 298
25.16 小結 299
25.17 練習 300
第4部分 網 絡 應 用
第26章 客戶-伺服器互動 301
26.1 簡介 301
26.2 套用軟體提供的功能 301
26.3 互連網提供的功能 302
26.4 取得聯繫 302
26.5 客戶-伺服器模式 303
26.6 客戶和伺服器的特點 303
26.7 伺服器程式和伺服器級計算機 304
26.8 請求、回響和數據流方向 304
26.9 傳輸協定和客戶-伺服器互動 304
26.10 一台計算機上的多種服務 305
26.11 標識某一特定的服務 306
26.12 提供單一服務的多個伺服器拷貝 306
26.13 動態伺服器創建 307
26.14 傳輸協定和確定通信 307
26.15 面向連線和無連線傳輸 308
26.16 多協定均可到達的服務 308
26.17 複雜的客戶-伺服器互動 309
26.18 互動和環形依賴 309
26.19 小結 310
26.20 練習 310
第27章 套接字接口 311
27.1 簡介 311
27.2 應用程式接口 311
27.3 套接字API 311
27.4 套接字和套接字型檔 312
27.5 套接字通信和UNIX I/O 313
27.6 套接字、描述字和網路I/O 313
27.7 參數和套接字API 314
27.8 實現套接字API的過程 314
27.8.1 socket過程 314
27.8.2 close過程 315
27.8.3 bind過程 315
27.8.4 listen過程 316
27.8.5 accept過程 317
27.8.6 connect過程 317
27.8.7 send,sendto和sendmsg過程 318
27.8.8 recv,recvfrom和recvmsg過程 319
27.9 使用套接字讀和寫 320
27.10 其他套接字過程 320
27.11 套接字、執行緒和繼承 320
27.12 小結 321
27.13 練習 322
第28章 客戶和伺服器例子 323
28.1 簡介 323
28.2 面向連線的通信 323
28.3 一個服務例子 323
28.4 例子程式的命令行參數 324
28.5 套接字過程調用順序 324
28.6 客戶例子的代碼 325
28.7 伺服器例子的代碼 328
28.8 流服務和多個recv調用 331
28.9 套接字過程和阻塞 332
28.10 代碼大小和錯誤報表 332
28.11 使用另一種服務檢測客戶例子 333
28.12 使用另一個客戶檢測伺服器例子 333
28.13 小結 334
28.14 練習 334
第29章 域名系統的命名 336
29.1 簡介 336
29.2 計算機名稱的結構 336
29.3 地理結構 338
29.4 組織中的域名 338
29.5 DNS客戶-伺服器模型 339
29.6 DNS伺服器層次結構 340
29.7 伺服器結構 341
29.8 引用的本地化和多伺服器 342
29.9 伺服器之間的連結 342
29.10 名稱解析 343
29.11 DNS性能最佳化 344
29.12 DNS入口的類型 345
29.13 使用CNAME類型的別名 345
29.14 多類型的重要性 346
29.15 縮寫與DNS 346
29.16 小結 347
29.17 練習 347
第30章 電子郵件表示和傳輸 349
30.1 簡介 349
30.2 電子郵件范型 349
30.3 電子信箱和地址 349
30.4 電子郵件訊息格式 350
30.5 副本拷貝 352
30.6 通用網際網路郵件擴展 353
30.7 電子郵件和應用程式 354
30.8 郵件傳輸 354
30.9 簡單郵件傳輸協定 355
30.10 一台計算機上的多接收者最佳化 355
30.11 郵件查看、列表和轉發 356
30.12 郵件網關 357
30.13 自動郵件列表 358
30.14 郵件中繼和電子郵件地址 358
30.15 信箱存取 359
30.16 撥號連線和POP 360
30.17 小結 361
30.18 練習 362
第31章 檔案傳輸和遠程檔案存取 363
31.1 簡介 363
31.2 數據傳輸和分散式計算 363
31.3 存儲中間結果 363
31.4 通用檔案傳輸 364
31.5 互動式和批處理傳輸模式 364
31.6 檔案傳輸協定 365
31.7 FTP通用模式和用戶接口 365
31.8 FTP命令 366
31.9 連線、認證和檔案存取許可權 367
31.10 匿名檔案存取 367
31.11 雙向檔案傳輸 368
31.12 檔案名稱稱的通配符 368
31.13 檔案名稱轉換 369
31.14 改變目錄和列表內容 369
31.15 檔案類型和傳輸模式 370
31.16 使用FTP的例子 370
31.17 詳細輸出 373
31.18 FTP中的客戶-伺服器互動 373
31.19 控制和數據連線 373
31.20 數據連線和檔案的結束 374
31.21 普通檔案傳輸協定 375
31.22 網路檔案系統 375
31.23 小結 376
31.24 練習 377
第32章 全球資訊網頁面和瀏覽 378
32.1 簡介 378
32.2 瀏覽器界面 378
32.3 超文本和超媒體 378
32.4 文檔表示 379
32.5 HTML格式和表現 379
32.6 HTML格式標記的例子 381
32.7 頭部 381
32.8 列表 382
32.9 在Web頁中嵌入圖像 383
32.10 標識一個網頁 383
32.11 從一個文檔指向另一個文檔的超文本連結 384
32.12 客戶-伺服器互動 385
32.13 Web文檔傳輸和HTTP 385
32.14 瀏覽器結構 387
32.15 可選客戶 388
32.16 Web瀏覽器的快取 389
32.17 HTTP對快取的支持 390
32.18 替代的傳輸協定 390
32.19 其他標記語言 391
32.20 小結 391
32.21 練習 392
第33章 動態Web文檔技術(CGI,ASP,JSP,PHP,ColdFusion) 394
33.1 簡介 394
33.2 Web文檔的三種基本類型 394
33.3 每種文檔類型的優缺點 395
33.4 動態文檔實現 396
33.5 CGI標準 396
33.6 一個CGI程式的輸出 397
33.7 CGI程式例子 398
33.8 參數和環境變數 399
33.9 狀態信息和cookie 400
33.10 帶有長期狀態信息的CGI腳本 401
33.11 帶有短期狀態信息的CGI腳本 402
33.12 表單和互動 404
33.13 伺服器端腳本技術 405
33.14 小結 406
33.15 練習 407
第34章 主動Web文檔技術(Java,JavaScript) 408
34.1 簡介 408
34.2 用於不斷更新的一種早期形式 408
34.3 主動文檔和伺服器負載 409
34.4 主動文檔的表示和轉換 409
34.5 Java技術 411
34.6 Java 程式語言 411
34.6.1 語言特點 411
34.6.2 類似於C++ 412
34.7 Java 運行時環境 412
34.8 Java庫 413
34.9 圖形工具包 414
34.10 在特定計算機上使用Java圖形 415
34.11 Java解釋器和瀏覽器 416
34.12 編譯Java程式 416
34.13 Applet例子 417
34.14 調用Applet 419
34.15 與瀏覽器互動的例子 419
34.16 錯誤和異常處理 421
34.17 JavaScript技術 421
34.18 替代 423
34.19 小結 423
34.20 練習 424
第35章 RPC和中間件 426
35.1 簡介 426
35.2 客戶和伺服器編程 426
35.3 遠程過程調用模式 427
35.4 RPC模式 428
35.5 通信存根 429
35.6 外部數據表示 430
35.7 中間件和面向對象中間件 431
35.7.1 ONC RPC 432
35.7.2 DCE RPC 432
35.7.3 MSRPC 432
35.7.4 CORBA 432
35.7.5 MSRPC2 433
35.7.6 COM/DCOM 433
35.8 小結 433
35.9 練習 434
第36章 網路管理(SNMP) 435
36.1 簡介 435
36.2 管理Internet 435
36.3 隱匿失敗的危險 436
36.4 網路管理軟體 436
36.5 客戶、伺服器、管理者和代理 436
36.6 簡單網路管理協定 437
36.7 獲取-存儲模式 438
36.8 MIB和對象名稱 438
36.9 各種不同的MIB變數 439
36.10 對應於數組的MIB變數 439
36.11 小結 440
36.12 練習 440
第37章 網路安全 441
37.1 簡介 441
37.2 安全網路和策略 441
37.3 安全涉及的方面 442
37.4 責任和控制 442
37.5 完整性機制 443
37.6 存取控制和口令 443
37.7 加密和機密性 443
37.8 公鑰加密 444
37.9 數字簽名認證 445
37.10 Internet防火牆 445
37.11 包過濾 447
37.12 使用包過濾創建防火牆 448
37.13 虛擬專用網 448
37.14 封裝 450
37.15 小結 451
37.16 練習 451
第38章 初始化(配置) 452
38.1 簡介 452
38.2 引導 452
38.3 啟動協定軟體 452
38.4 協定參數 453
38.5 協定配置 453
38.6 需要配置的條目示例 454
38.7 配置例子:使用磁碟檔案 454
38.8 自動協定配置的需求 455
38.9 自動協定配置方法 455
38.10 用於發現地址的地址 456
38.11 引導中使用的協定序列 457
38.12 引導協定(BOOTP) 457
38.13 自動地址分配 459
38.14 動態主機配置協定(DHCP) 460
38.15 DHCP的最佳化 461
38.16 DHCP訊息格式 461
38.17 DHCP和域名 462
38.18 小結 462
38.19 練習 463
附錄1 網路術語和縮略語 464
附錄2 ASCII字元集 503
附錄3 點分十進制表示法的地址掩碼 504
附錄4 本書光碟的使用 506
附錄5 在家裡建立一個帶有NAT的網路 511
附錄6 Purdue大學網路實驗室 516
作者簡介
Douglas Comer博士是國際公認的TCP/IP協定、計算機網路、Internet領域的專家。作為形成於20世紀70年代和80年代的Internet的早期研究者,他是Internet體系結構委員會(InternetArchitecture Board,IAB)的成員。IAB是負責指導Internet發展的組織。他是CSNET技術委員會的主席,也是CSNET執行委員會的成員。
Comer是普渡(Purdue)大學計算機科學系的教授,他教授課程並做一些計算機網路、網路互連和作業系統方面的研究工作。除寫了一系列暢銷的技術書籍以外,他還是雜誌“software——practice and Experience”北美的編輯。Comer還是ACM的特別會員。