計算機網路與Internet

計算機網路與Internet

計算機網路與Internet的作者是Douglas E. Comer由清華大學出版社出版,本書為工業界計算機網路的設計提供諮詢。除了在大學裡做報告以外,他每年還向遍布世界的網路專業人員講授線上課程。他的作業系統,Xinu,以及TCP/IP協定的實現(都歸檔在他的教科書中)已經用於許多商業產品中。

內容提要

本書全面深入地講解了計算機網路與網際網路的各個方面,包括數據傳輸、包傳送、網路互連和網路套用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的特別會員。

相關詞條

相關搜尋

熱門詞條

聯絡我們