TCP/IP協議參考書

TCP/IP協議是當前廣域網和局域網通用的網絡協議,因此,基於TCP/IP的編程就格外重要。從應用上來說,現在直接利用C層次Socket API進行TCP/IP編程的人確實越來越少了,各種現成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大簡化了TCP/IP編程的難度。但是,如果想要在這個領域達到融會貫通的地步,不打下堅實的基礎是不可想象的。正如Richard Stevens在TCP/IP Illustrated中所說,在網絡編程領域,開發者所遇到的實際問題中,大約有90%都與開發者對於TCP/IP的理解相關。高層的框架和控件總結了TCP/IP的主要使用模式,並且進行了抽象和封裝,這固然非常好,但是想要真正掌握TCP/IP網絡編程的真諦,恐怕需要認真學習下面幾本著作。
 
1.Richard Stevens,TCP/IP Illustrated, Vol.1 / Vol.2 / Vol.3
《 TCP/IP詳解卷1:協議 》《 TCP/IP詳解 卷2:實現 》《 TCP/IP詳解 卷3:TCP事務協議、HTTP、NNTP和UNIX域協議 》

這是一本衆望所歸的書。自從1994年出版以來,TCP/IP Illustrated就一直是TCP/IP領域具有傳奇色彩的聖經級著作。這一套著作共分爲三卷,第一卷通過實際動手實驗的方式深入探討TCP/IP協議,第二卷逐行解釋了4.4BSD系統TCP/IP協議棧的15,000行實現代碼,第三卷探討了T/TCP和HTTP等高級協議。整套書最大的特點就是貼近實戰,完全符合程序員的胃口,不空談,不說教,用實驗和代碼來說明問題。寫作這樣的書,對於作者要求非常之高,即使在今天看來,敢於這麼寫作的作者也是鳳毛麟角。Richard Stevens以他的寫作風格和作品,在TCP/IP編程領域豎立起一座豐碑,令其他作者高山仰止,心嚮往之。在下文將要提到的Effective TCP/IP Programming一書中,甚至把“讀Stevens的書”專門列爲一個條款。這套著作的地位,可見一斑。
學習這套書,與其說需要讀,不如說需要做。Stevens最強調程序員的兩項能力,一是讀代碼,二是動手實驗。他在自己所有的書裏都敦促讀者將範例輸入電腦,親自編譯、運行和調試。這當然需要花費大量的時間和精力,但是如果有讀者能夠紮紮實實地這麼做,那麼他所付出的每一分鐘都將會有雙倍的回報。
 

2.Richard Stevens, UNIX Network Programming, 2/e, Vol.1 / Vol.2 

《 UNIX網絡編程卷2:進程間通信(影印版·第2版) 》《 UNIX網絡編程(第2版)第1卷:套接口API和X/Open傳輸接口API 》

又是Richard Stevens,又是經典名著。這本書的第一版問世於1990年,是Stevens的開山之作,一舉奠定了Stevens在網絡編程領域的重要地位。如果說TCP/IP Illustrated解答了“什麼是TCP/IP”和“TCP/IP是怎麼實現的”兩個問題,那麼這本書則是在回答“怎樣運用TCP/IP開發網絡應用程序”的問題。顯而易見,這本書的內容更加貼近普通程序員,因此,大多數人是先學習UNP,然後再深入學習TCP/IP Illustrated。
這也是一本讓人傷感的書,Richard Stevens從1997年開始撰寫此書第二版,制定了一個宏大的計劃,卷1闡述Socket API和TLI API,卷2闡述除Socket之外的其他IPC機制,卷3闡述網絡編程應用。應該說,卷1和卷2都是爲了給卷3打基礎。然而天妒英才,就在世人翹首企盼第三卷的時候,1999年9月1日,Richard Stevens英年早逝。留下這套未完成的鉅著,讓人感慨不已。不過最近從Prentice Hall傳來好消息,出版社已經找到合適的作者,重新修訂這套經典鉅著,其中第一卷即將問世,並且已經在Amazon上熱賣。相信會有當世高人沿着Stevens的足跡給我們續寫第三卷的,讓我們拭目以待。
可選圖書:Douglas E. Comer, Internetworking with TCP/IP, Vol.1 / Vol.2 / Vol.3
《 用TCP/IP進行網際互聯第一卷:原理、協議與結構(第四版) 》《 用TCP/IP進行網際互聯-第二卷:設計、實現與內核(第三版) 》《 用TCP/IP進行網際互聯 第三卷:客戶-服務器編程與應用(Linux/POSIX套接字版) 》
這套書也是三卷,前兩卷內容與TCP/IP Illustrated相似,最後一卷則偏重應用程序的開發。總體上來看,這三卷書的內容與上述Stevens的兩套著作相當。Comer教授的這套書定位是教材,因此寫出來中規中矩,寓精彩於平和之中。讀者如果喜歡閱讀教材風格的書,這套應該是很好的選擇。
 
3.Jon C. Snader, Effective TCP/IP Programming  (《 高級TCP/IP編程 》,中國電力出版社)
自徹讀Effective C++之後,我總結出一條經驗。無論在哪個領域中,一旦掌握基礎知識,則應該迅速去尋找該領域中一本名爲“Effective XXX”的著作並閱讀之,一定可取得事半功倍的效果。Effective C++如此,Effective STL如此,Effective Java如此,這本Effective TCP/IP同樣如此,也是一劑功效強大的催化劑。
本書作者是經驗豐富的TCP/IP程序員,他在這本書中總結了44個難得的TCP/IP開發經驗,並且將每條經驗背後的道理都詳細地講解。毫無疑問,這種“專家經驗”型著作對於提高讀者水平,能夠起到最高效、最直接的作用。
初學TCP/IP的朋友可能覺得,自己應該先把基本知識熟練掌握,再看這本書,效果會更好。我認爲不必如此,您可以在基本觀念建立起來之後直接品讀此書。這本書篇幅不大,起點不高,卻對很多關鍵問題進行了全面而細緻地介紹,在具體問題的闡述上頗有Richard Stevens之風,也是純而又純的程序員風格——拿代碼說話。
系統學習和重點難點的突破相結合,歷來是快速掌握一門技術的良方。由Scott Meyers開創的“Effective”之風,已有愈演愈烈之勢,這是程序員們的巨大福音。我強烈建議大家,不要放過任何一本以“Effective”爲名的技術書籍。
 
4. Douglas Schmidt, Steven Huston,C++ Network Programming, Vol.1 / Vol.2 《 C++網絡編程 卷1:運用ACE和模式消除複雜性 》《 C++網絡編程,卷2 基於ACE和框架的系統化複用 》ACE介紹
今天的網絡編程環境是建立在C的基礎之上。如果你滿足於C層次的TCP/IP編程,那麼Stevens的書可以說達到了一個最高境界,你大可以登東山而小魯。但是如果再上一個層次,考慮如何運用C++強大的抽象機制是網絡編程變得更加富於藝術性,更加高效可靠,那麼恐怕必須要高度重視這套書。
這套書共兩卷,篇幅都不大,主要內容是介紹ACE。在C++領域,由於這套書被Bjarne Stroustrup編入C++ In Depth系列,因此具有崇高的地位。而在網絡編程領域,也有人稱讚此書爲Stevens之後最重要的網絡編程著作。作者Douglas Schmidt是C++、網絡程序設計和模式領域中國際公認的權威專家,潛心研究C++網絡編程已經十多年。他發起的ACE開源項目是目前當之無愧的最優秀和最成功的C++網絡編程環境,不僅具有非常出色的可移植性,而且性能卓越。美國國防部的ARPA已經支持這個項目好幾年了,其最終目的是在ACE的基礎上建立可用於現代戰爭的分佈式實時嵌入式系統。毫無疑問,ACE無論在理論上還是在實踐中,都是最值得程序員關注的網絡編程典範項目,而這一套兩卷對ACE的介紹性書籍,也毫無疑問是最值得網絡程序員品讀分析的經典。學習這兩本書,你可以將經典的基於C API的網絡編程知識與現代面向對象、模式和框架等最新技術思想結合起來,從而使你對網絡編程的認識上升到一個新的高度。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章