?? 前 言.txt
字號:
前 言當本書第1版在1996年(按因特網的時間仿佛已是一百年以前)出版時,在因特網上購物還是很新奇的事情,那時如果一個公司能用它的域名做廣告,它就會被認為具有極大的優越條件。而當今社會,因特網商務已經進入日常生活中,公司以“.com”來注冊它的法定名字,而不是因特網名字,已經不是什么稀罕的事情。證券經紀人也經常查詢“.com股票”。當一個咖啡零售商宣布發展一個因特網策略計劃時,它的身價倍增。指出因特網上飛速度化的事情,就有點像指出天空是藍的一樣。盡管有這么大的變化,我們在第1版中提出的問題對于今天來說仍然是有效的:什么是使因特網運行的基本概念和技術?回答是TCP/IP體系結構的大部分功能對于今天仍然適用,這一點正像30年前它的創立者預見的那樣。這并不是說因特網的體系結構沒什么新鮮的,而正相反。一個體系結構30年來不僅幸存下來,而且促進因特網快速地增長和變化,了解其中的設計原理正是我們的出發點。正像第1版一樣,第2版把因特網的體系結構“何以如此”作為它的基礎。讀者我們的目的是把這本書作為網絡課的入門教材,供研究生或高年級本科生使用。我們也相信,這本書的核心概念不但對正在進行再培訓以便完成網絡相關任務的專業人員有吸引力,而且也可以幫助網絡從業人員深入理解每天都要接觸的網絡協議并且可以對網絡有一個整體的概念。根據我們的經驗,第一次學習網絡的學生和專業人員常常把網絡協議理解成一種從高層傳到低層的命令,所以只要盡量學習術語縮寫就可以了。事實上協議是從工程設計原理的應用中開發出的復雜系統的建造模塊。不僅如此,根據現實世界的經驗,協議總是不斷地被精煉、擴展和替換。因此,這本書的目標并不單純介紹當今使用的協議,更側重于解釋合理的網絡設計的基本原理。我們認為把握這些基本原理是對付當今網絡瞬息萬變的最好辦法。在第2版中的變化側重網絡的基本原理聽起來好象是為第2版中不做改動找借口。其實正相反,第2版跟蹤網絡的最重要的新進展,補充了大量的新材料。我們也刪除、重新組織和改變了原有材料的側重點,以反映這4年中發生的變化。另外,我們也考慮到來自讀過第1版的人,和沒讀過第1版的人的大量反饋意見。本版的改動包括: ■ 新增關于網絡安全的一章,內容包括PGP、IPSEC、安全套接字和防火墻。 ■ 新增關于網絡應用的一章,內容包括SMTP、HTTP、SNMP、DNS以及實時多媒體應用使用的RTP協議等。 ■ 在服務質量和擁塞控制方面補充了大量新材料,內容包括在區分服務和RSVP方面的最新進展。 ■ 對路由選擇協議的進一步探討,內容包括OSPF和BGP。 ■ 新增關于無線技術的一節,內容包括擴展頻譜技術和最近新出現的802.11標準。 ■ 對音頻和視頻壓縮的探討,內容包括MPEG和MP3。 ■ 增加了ATM的內容,內容包括局域網仿真(LANE) 。 ■ 在公共的因特網頂層建立虛擬專用網(VPN)的材料。 ■ 高速網的內容貫穿全書,而不是限制在某一章中。總的說來,本書x有兩點明顯的改動。首先,按照教師的反饋意見,我們把理解協議實現的教學工具x-kernel去掉了,用不依賴于操作系統的C代碼代替它。在下面還要討論這種改動的細節。其次,我們在每章的最后明顯增加了練習的數量和質量。這一工作由一個專門的教師負責,他從第1版開始就講授我們這本書。方法對于像計算機網絡這樣動態的和不斷變化的領域來說,一本教材能提供的最重要的東西就是洞察能力,以便能夠區別什么是重要的,什么是不重要的,什么是長久的,什么是膚淺的。基于我們致力于網絡新技術研究的20年經驗,和對本科生和研究生講授網絡最新趨勢的課堂反饋,以及把先進的網絡產品投放市場的經驗,我們已經提煉出我們自己的觀點,叫做系統方法,它構成了本書的精髓,這種系統方法有以下幾個含義: ■ 與其接受實際網絡產品作為,不如從最基本的原理開始,讓你了解通向當今網絡技術的發展過程。這就能讓你解釋網絡為什么像現在這樣設計。根據我們的經驗,一旦你理解了基本原理,你遇到的任何新協議就會很容易地被你消化吸收。 ■ 雖然材料基本上是圍繞傳統的網絡分層組織的,從底層開始并且按協議棧向上展開,但是我們并不嚴格的采用分層方法。許多課題沒有分層的含意,例如擁塞控制和安全性就是這樣,所以我們在傳統的分層模型之外討論它們。簡言之,我們相信可以很好地使用分層,但是不必受它的限制。采用端到端的觀點常常是有用的。 ■ 與其抽象的理解協議如何工作,不如我們使用當今最重要的協議具體地說明網絡是如何工作的,許多協議都是源自TCP/IP因特網的。這就允許我們在討論中借鑒實際經驗。 ■ 雖然在最底層可以用從計算機銷售商那是購買的硬件構造網絡,并且通信服務可從電話公司租用,但是只有軟件才可以使網絡提供新的服務,并且迅速地適應新的需求。這就是我們為什么強調網絡軟件是如何實現的理由,而不是只停留在描述所涉及到的抽象算法。 ■ 網絡是由許多組件構成的,而在解決一個具體問題時,基本的方法是忽略一些不重要的因素,而理解所有的組件如何組織在一起,構成一個具有特定功能的網絡。所以我們花費大量的時間解釋網絡總體的端到端行為,而不只是個別的組成部分,以便能夠理解一個完整的網絡,從應用到硬件的所有方面是如何工作的。 ■ 這種系統方法是指要進行性能研究,并且使用兩個方面積累起來的數據,即定量分析各種設計選擇和指導優化實現中的數據。這種強調經驗分析的方法貫穿全書。 ■ 網絡很像其他計算機系統,例如,操作系統、處理器體系結構、分布式和并行系統等。它們都很大,很復雜。為了處理這種復雜性,系統設計者常常提出一組設計原則。我們重點介紹這些貫穿全書的設計原則,并且用計算機網絡中的例子加以說明。軟件如上所述,為了理解計算機網絡,軟件和它的實現在系統方法中扮演著重要的角色。第1版使用x-kernel作為教學工具,它是實現網絡協議的一種軟件模板,但在使用x-kernel時,存在額外的啟動開銷,所以許多人不愿意使用它。因此,我們在第2版中去掉了x-kernel。為了說明如何實現某種協議和算法,全書仍然使用代碼段,事實上,我們已經增加另外的代碼,這些代碼段是用不依賴于操作系統的C語言,而不是x-kernel協議給出的。對于想繼續使用x-kernel的用戶,書中去掉的材料可以從以下站點 http://www.cs.princeton.edu/xkernel 因為我們把網絡軟件看做是建網的基本構件,所以在第2版的第1章中引入了一個簡單的應用套接字程序的例子。基于UNIX套接字的程序設計作業,可在線訪問得到(見下面)。教學法和特點第2版我們保留了幾個建議你充分利用的特點: ■ 問題陳述。在每一章的開頭,我們描述在網絡設計中必須解決的一個問題,由它引出本章探討的一些課題。 ■ 陰影框。本書中,陰影框詳細說明要探討的課題或介紹相關的高級課題。多數情況,這些陰影框與實際生活中的網絡模型有關。 ■ 突出的段落。這些段落歸納了你想從討論中得出的重要結論,例如廣泛使用的系統設計原理。 ■ 實際的協議。雖然本書著重核心概念而不是已有的協議說明,但實際的協議常用來說明大部分重要的思想。因此本書可以用作許多協議的參考源。為了幫助你找到這些協議的描述,每個相應的小節標題中用括號括起來的是協議名稱,指明在那一節定義的協議。例如,5.2節描述可靠的端到端協議的原理,它提供了TCP的詳細描述,TCP是這個協議的典型例子。 ■ 開放的問題。每章的敘述以一個開放討論的問題結尾。這些仍有爭議的各種課題,包括研究領域、商界以及整個社會正在研究的課題。我們發現這些討論能使讀者更貼近地了解所討論的網絡課題并對其產生濃厚的興趣。 ■ 推薦的閱讀部分。在每一章以最后都列有大量參考書目。這些書目一般都包含剛討論的有關課題的啟發性文章。我們竭力推薦那些高級讀者(如研究生)學習推薦閱讀目錄中的這些文章,以便補充本章所講的材料。本書結構和課程使用 ■ 第1章介紹全書使用的核心概念。特別是進行了網絡體系結構的討論,并給出網絡設計常常需要考慮的定量的性能標準。 ■ 第2章綜述了廣泛的低層網絡技術,從以太網到令牌環再到無線網絡。也描述了所有鏈路協議必須解決的許多課題,包括編碼、成幀和錯誤檢驗。 ■ 第3章講述交換網絡(數據報虛電路網)的基本模型,并詳細地介紹一種流行的交換技術(ATM)。也討論基于硬件的交換機設計問題。 ■ 第4章講述互連網絡,并且描述網際協議(IP)的基本原理。這一章討論的中心問題是像因特網這樣規模的網絡如何對分組進行路由選擇。 ■ 第5章講述傳輸層,詳細地描述因特網的傳輸控制協議(TCP)和遠程過程調用,它們用在建立客戶 / 服務器的應用中。 ■ 第6章討論擁塞控制和資源分配。這一章的課題貫穿網絡層(第3章和第4章)和傳輸層(第5章)。特別注意的是,這章描述擁塞控制如何在TCP上工作,并且介紹了為了提供服務質量,因特網和ATM所使用的機制。 ■ 第7章考慮通過網絡發送的數據。這涉及表示格式和數據壓縮兩方面的問題。壓縮的討論包括解釋MPEG視頻壓縮和MP3音頻壓縮是如何工作的。 ■ 第8章討論網絡安全,范圍包括加密協議(DES、RSA、MD5),安全服務的協議(鑒別、數字簽名、消息的完整性)以及完整的安全系統(增強型加密郵件、IPSEC)的討論。這一章也討論像防火墻這樣的實際課題。 ■ 第9章描述網絡應用的典型實例,既包括像電子郵件和萬維網這樣傳統的應用,也包括使用實時傳輸協議(RTP)的多媒體應用。對本科生的課程,可能需要多些課時以幫助學生理解第1章的導論材料,而跳過第6~8章的提高課題。然后在第9章轉到網絡應用的典型課題上。相反,研究生的指導教師可用一兩次課講完第1章的內容,讓學生自己更仔細地研究材料,因此騰出更多的時間深入講授最后四章的內容。研究生和本科生都要完成中間四章(第2~5章)的核心材料。但本科生可有選擇地跳過那些更深入的章節(例如2.2、2.9、3.4和4.4節)。如何自學本書?我們相信我們所選的教材涵蓋了計算機網絡的核心內容,因此建議你從前到后順序閱讀即可。另外我們提供了詳細的參考文獻目錄,以幫助讀者能進一步找到你感興趣領域的補充材料。本書采取獨特的方法來討論擁塞控制,即把有關擁塞控制和資源分配的所有課題集中到第6章中。之所以這樣做是因為擁塞控制問題不能在任何一層單獨解決,我們希望你同時能夠考慮各種設計選擇(這和我們的觀點是一致的,即嚴格的層常常掩蓋了重要的設計考慮)。然而,對擁塞控制的更傳統的處理方式是可能的,可在第3章對照學習6.2節的內容以及在第5章對照學習6.3節的內容。練習在第2版中對練習做了大量的修改。特別是,為了修改練習,我們得到芝加哥Loyola大學教授網絡課的Peter Dordal 老師的支持。他增加了很多習題(從196個增加到362個),并且根據課堂測驗我們發現這樣大大提高了教學的質量。目前的練習集有以下幾種不同的風格: ■ 分析性的練習,要求學生做簡單的代數計算,說明他們對基本關系的理解。 ■ 設計問題,要求學生提出和評價各種情況下的協議。 ■ 動手能力問題,要求學生寫較短的代碼行去測試一個想法或實踐已有的網絡實用功能。 ■ 文獻研究問題,能夠讓學生更深入了解某一個問題還有,正如下面更詳細描述的,x-kernel和基于套接字的程序設計作業是可以在網上得到的。補充材料和在線資源為了幫助教師,我們已經準備了一個教師手冊,內容包括所選練習的答案。這個手冊可從出版商那里得到。其他的教學材料,包括講課的幻燈片、正文中的插圖、基于套接字的程序設計作業和測驗樣題,都可以在Morgan Kaufmann出版公司網站http://www.mkp.com上找到。我們建議你每隔幾周訪問一下本書的主頁,因為我們會經常增加相關材料并與有關的站點建立鏈接。致謝如果沒有許多朋友的幫助本書是不可能問世的。我們非常感謝他們為改進本書所做出的貢獻。然而,在致謝之前,我們要提到的是,我們已經盡力改正審閱人指出的錯誤以及盡量準確地描述我們的同事給我們解釋的協議和機制。如果還有什么錯誤,那就是我們的責任。如果你發現任何錯誤,請發電子郵件給我們的出版商Morgan Kaufmann公司,地址是netbugs@mkp.com,我們將在本書再次印刷時改正它們。首先我們衷心感謝各章草稿的審閱人。這一名單是很長的,包括Kentucky大學的Ken Calvert,Iowa州立大學的Douglas Jacobson,Sherbrooke大學的Michel Barbeau,Colorado-oulder大學的Ken Klingenstein,Stephen F. Austin州立大學的Robert Strader,Utah大學的Lee Hollaar, Marist學院的James TenEyck,學院的Walt Will,Lancaster大學的David Hutchison,Rutgers大學的Ivan Marsic,Infocus and Nova South eastern大學的Lee Leitner,BeComm公司的顧問Michael Cochran和Edward Balassanian UC-Davis的Matt Bishop,以及Cisco的 Steve Casner。第二,普林斯頓網絡系統組和亞利桑那大學的幾位專家提供了意見、例子、校訂、數據和代碼段。除了第1版提到的之外,George Tzanetakis 為我們解釋了MP3,Chad Mynhier幫助修改了文獻目錄。正如以前一樣,我們希望感謝國防部高級研究計劃署和國家科學基金會在過去這幾年對我們網絡研究課題的支持。第三,我們衷心地感謝我們的編輯,David Clark 以及Morgan Kaufmann出版公司中在本書編寫期間指導過我們的所有人。還要特別感謝我們的主編Jennifer Mann;她的助手Karyn Johnson;和我們的責任編輯, Cheri Palmer。MKP 公司的全體人員都很愉快地與我們合作。最后,我們希望感謝我們的妻子,Lynn Peterson 和Jody Davie,在解釋網絡如何實際運行的過程中遇到困惑時,她們一直支持著我們。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -