很榮幸DougComer給我這個機會,讓我能在他的這本書第三版付印時與諸位探討一些個人的想法。在這過去的十年期間,Internet以驚人的速度發(fā)展著。Internet上主機的數(shù)目從1989年的100000臺發(fā)展到1998年的30000000臺。在本書第二版出版的時候,連接到Internet的網絡大約有26000個。到1998年,這個數(shù)字大約在2000000到350000之間,這還不包括那些利用互聯(lián)網技術但未連接到公共網絡上的專用內聯(lián)網。除了規(guī)模上的變化,Internet在應用上也發(fā)生了驚人的變化。Internet技術與正在蓬勃發(fā)展的WWW作為一個完整的、不可缺少的系統(tǒng)已被人們所認可。而WWW在商業(yè)、學術和政府等部門都掀起了一場革命。在WWW上每天出現(xiàn)的“網頁”可達三億兩千萬之多,并且還在不斷涌現(xiàn)。有些學校大約四分之一的入學申請都是通過電子郵件或其他網頁申請形式進行的。Dell公司透露,他們通過網站每天銷售價值大約六百萬美元的PC機。Amazon網上書店以季度盈利達六千六百萬美元成為歷史上發(fā)展最快的公司,這也是第一個在一年之內銷售額超過兩億五千萬美元的公司。目前,至少有兩千多家無線電臺將他們的音頻服務推向了Internet,許多網站也開始提供音頻甚至低質量的視頻服務。隨著將訪問速率提高到兆比特的范圍,以及主干網容量的增加,視頻服務的質量也將得到提高。隨著1996年網絡電視和1997年Nokia推出的支持網絡功能的手機的問世,其他支持網絡功能的產品也不斷地涌現(xiàn)。更多的實用產品實現(xiàn)了相似的網絡功能,例如水暖加熱器既可以用家用電腦來控制,也可以由電力公司來控制用以滿足適度的調峰需求。盡管智能代理還沒有成為主流,但是XML近來的發(fā)展也表明Internet上有關事務處理的應用正在急劇增多。SML的標準“文檔”表示方式以及一致的常用解釋格式構成了一種可傳輸對象,該對象已形成所有商業(yè)、金融、事務、數(shù)據庫事務及其他需要標準表示方式和解釋格式的交易的基礎。再回頭看看電話產品的發(fā)展,無論傳統(tǒng)的服務商還是現(xiàn)代企業(yè)都在將支持網絡的電話產品推向市場?!败汸BX”系統(tǒng)利用LAN和Internet實現(xiàn)傳統(tǒng)的專用交換機的功能,基于微處理器的電話機也正在改變遠程通信的經濟情況和可操作性。具有IP功能的傳真機已經出現(xiàn)。網關把原有的模擬世界與現(xiàn)在的Internet世界聯(lián)系在一起,起著非常重要的作用。對Internet服務需求量的增長速度趕上甚至超過了網絡本身的增長。主干網絡的速度達到每秒622兆已是很平常的事。新一代利用硬件IP中繼器的路由器可望以每秒10G(OC192)以上的速度處理Internet上傳輸?shù)臄?shù)據。下一個挑戰(zhàn)是利用單模光纖處理每秒兆兆字節(jié)的信息量。網絡的安全性過去總是處于后臺操作狀態(tài),隨著越來越多領域依賴于Internet,安全性已逐漸走向前臺。防火墻技術、端-端加密、密鑰管理、信用證策略或鑒認系統(tǒng)已成為成功管理Internet的關鍵因素。再向未來展望,網絡協(xié)議和結構已經朝著星際互連的方向發(fā)展,也許會形成和互聯(lián)網一樣的形式。域名系統(tǒng)如果還存在,還要考慮將不同的行星計入命名體系?!盎ミB的Internet”協(xié)議將能夠處理更高的延遲,傳統(tǒng)的TCP概念也將被更多的單向過程取代。未來的網際遨游者回看這十年,一定會覺得這是個充滿挑戰(zhàn)但技術相對落后的時代。在他們看來,這段前言中的觀點可能已經過時又難以理解,因為他們所面對的是經歷了另外二十年革命的Internet。序言用TCP/IP進行網際互聯(lián)第二卷提供了第一卷所沒有包含的關于TCP/IP協(xié)議的一些細節(jié)問題。第二卷如同將TCP/IP置于放大鏡下,考察每個協(xié)議的具體細節(jié)。它討論了協(xié)議的實現(xiàn)方案,并著重于介紹協(xié)議軟件的內部機制。第三版包含了對某些協(xié)議的修改和更新的內容。其中的代碼改用C++語言的ANSI標準C子集,包含了函數(shù)原型和參數(shù)的聲明。另外還糾正了一些錯誤。我們將SNMP更新為標準的第二版,這包括替換了地址轉換表,增加了UDPlistener列表。在本書的最后,還增加了附錄2,給出了書中代碼所用到的主要數(shù)據結構的聲明及變量的交叉參考表,并擴充了附錄1中的過程調用交叉參考的內容。書中的范例代碼用GnuC++編譯器在Intel體系平臺編譯通過,也在PentiumTM系統(tǒng)上經過測試。所有的代碼均可在以下網址得到:ftp://ftp.cs.purdue.edu/pub/comer/TCPIP-vol2.dist.tar.Z雖然本書受到版權保護,但書中的代碼可供讀者使用,而且已經在許多商業(yè)產品中實現(xiàn)。這些代碼使用的惟一限制是不得在公開出版物中出版。我們鼓勵讀者利用計算機工具來查看、修改、編譯和測試這些代碼。事實上,盡管附錄1和附錄2中提供了定位代碼條目的有效途徑,但在查看大段代碼時,UNIXgrep程序的價值更是不可估量。對于各種正式的協(xié)議規(guī)范,以及對協(xié)議的實現(xiàn)和使用的討論,可參見請求評論文檔(RFC)。盡管一些RFC文檔對初學者來講難以理解,但這些文檔是信息詳盡的權威性資源,沒有哪個作者能夠做到在自己編寫的書中包涵RFC文檔中的所有內容。盡管RFC文檔涉及了每一個協(xié)議,但有時它們對協(xié)議之間的交互問題并未加以說明。例如,選路信息協(xié)議(RIP或OSPF)之類的選路協(xié)議規(guī)定了網關如何將路由置入IP路由表中,以及如何將表中的路由通知其他網關。RIP還規(guī)定路由必須設立定時機制,一旦某條路由超時,就將其刪除。但是,我們在RFC文檔中并不容易看出RIP和其他協(xié)議之間是如何交互作用的,隨之而來的問題是:“路由超時機制將如何影響路由表中那些由ICMP設置的路由呢?”我們可能還會考慮這樣一個問題:“當RIP更新路由時,應不應該推翻那些由管理員直接輸入的路由呢?”為了有助于解釋協(xié)議之間的交互作用,并確保我們的方案能協(xié)調工作,我們設計并構造了一個工作系統(tǒng),作為全書的中心范例。該系統(tǒng)提供了TCP/IP協(xié)議族中的大部分協(xié)議,包括:TCP、IP、ICMP、IGMP、UDP、ARP、RIP、SNMPv2以及OSPF的主要部分。另外,還具有一個finger服務的客戶和服務器范例。由于本書包括了每一個協(xié)議的程序代碼,讀者可以研究其實現(xiàn)方法及理解其內部結構。最重要的是,由于范例系統(tǒng)將所有協(xié)議軟件集成為一個工作整體,讀者可以清楚地了解協(xié)議之間的交互作用。范例的程序代碼試圖做到一方面遵守協(xié)議標準,另一方面引入一些新的思想。例如,我們的TCP程序代碼中包含了“糊涂窗口預防”技術、Jacobson-Karels的“慢啟動”和“防擁塞”等優(yōu)化技術,諸如此類的性能可能在商業(yè)實現(xiàn)中被忽略。但同時,我們也清楚地認識到商業(yè)領域并不總是遵從已經公布的標準,因此我們也努力將系統(tǒng)調整到能夠在現(xiàn)實環(huán)境中使用。例如,程序代碼中包含了一個配置參數(shù),使得它既可以采納Internet標準,也可以采納BSDUNIX中“TCP緊急數(shù)據指針”的實現(xiàn)方法。我們并不認為書中所提供的程序代碼都是準確無誤的,甚至不能斷言它肯定比其他實現(xiàn)方法要好。事實上,經過多年使用,我們仍然在不斷完善這套軟件,同時,也希望讀者跟我們一起繼續(xù)改進它。本書可以作為網絡工程人員的高級教程,或者作為研究生教材使用。在作為本科教程使用時,應將重點放在前幾章,而忽略有關OSPF、SNMP和RIP這幾章內容。研究生可能會在有關TCP的章節(jié)中發(fā)現(xiàn)一些最為有趣和最難理解的概念。為保證其高性能而采用的自適應重發(fā)和相關的試探法尤為重要,應當仔細加以研究。縱觀全書,絕大部分習題都向大家提示了其他可選擇的實現(xiàn)方案及其大致情況,它們并不要求死記硬背,因此學生們可能需要閱讀本書以外的其他資料,才能解答這些習題。正如任何耗費甚巨的工程一樣,本書中包含了許多人的心血,對此我們表示衷心的感謝。作者之一DavidStevens完成了大部分軟件的編制工作,其中包括一個完整的TCP版本。ShawnOstermann為本書付出了許多努力。Shawn將TCP/IP代碼集成到Xinu版本8中,并將其從最初的Sun3平臺移植到DECstation3100上。在這一版本中,他還對上一版中由VicNorman編寫的SNMP軟件進行了大量的修改,以滿足第二版的標準,也有助于代碼的調試。JohnLin對書中的技術細節(jié)進行了校對,糾正了一些錯誤。珀杜(Purdue)大學的網際互連研究小組(InternetworkingResearchGroup)的許多成員對程序代碼的早期版本做過很多貢獻。AndyMuckelbauer和SteveChapin建立了一個UNIX兼容庫,并與ShawnOstermann和ScottMark合作,使用TCP代碼運行一個Xwindow服務器。他們對TCP做了大量的測試工作,并指出其性能上存在的幾個問題。ScottM.Ballew參與了一些軟件的開發(fā)工作。我的妻子Christine對本書手稿進行了編輯,并提出許多建議。最后,我們感謝珀杜大學的計算機科學系和計算中心所提供的幫助。