?? 前言.txt
字號:
前 言
引言和本書的組織
本書是“TCP/IP詳解系列”的延續(xù):此系列的卷1是[Stevens 1994],卷2是[Wright and Stevens 1995]。本書分成三個部分,每個部分覆蓋了不同的內(nèi)容。
(1) TCP事務(wù)協(xié)議,通常叫做T/TCP。這是對TCP的擴展,其設(shè)計目的是使客戶-服務(wù)器事務(wù)更快、更高效和更可靠。這個目標(biāo)的實現(xiàn)省略了連接開始時TCP的三次握手,并縮短了連接結(jié)束時TIME_WAIT狀態(tài)的持續(xù)時間。我們將會看到,在客戶-服務(wù)器事務(wù)中,T/TCP的性能與UDP相當(dāng),而且T/TCP具有可靠性和適應(yīng)性,這兩點相對UDP來說都是很大的改進。
事務(wù)是這樣定義的:一個客戶向服務(wù)器發(fā)出請求,接下來是服務(wù)器給出響應(yīng)(這里的名詞“事務(wù)”(transaction)并非數(shù)據(jù)庫中的事務(wù)處理,數(shù)據(jù)庫中的事務(wù)處理有封鎖、兩步提交和回退)。
(2) TCP/IP應(yīng)用,特別是HTTP(超文本傳送協(xié)議,WWW的基礎(chǔ))和NNTP(網(wǎng)絡(luò)新聞傳送協(xié)議,Usenet新聞系統(tǒng)的基礎(chǔ))。
(3) Unix域協(xié)議。這些協(xié)議是所有Unix中的TCP/IP實現(xiàn)中都提供的,在許多非Unix的實現(xiàn)中也都提供。這些協(xié)議提供了進程之間通信(IPC)的一種手段,采用了與TCP/IP中一樣的插口接口。當(dāng)客戶與服務(wù)器進程在同一主機上時,Unix域協(xié)議通常要比TCP/IP快一倍。
第一部分,即對T/TCP的介紹,又分成兩個小部分。第1~4章介紹協(xié)議,并給出了大量實例來說明它們是怎樣工作的。這些材料主要是對卷1中24.7節(jié)的補充,在那里對T/TCP只是做了簡單的介紹。第2小部分,即第5~12章,介紹T/TCP在4.4BSD-Lite網(wǎng)絡(luò)代碼(即,卷2中給出的代碼)中的確切實現(xiàn)。由于最早的T/TCP實現(xiàn)遲至1994年9月才發(fā)布,已經(jīng)是本書卷1出版一年以后了,那時卷2也快完成了,因此T/TCP的詳細(xì)敘述,包括諸多實例和所有的實現(xiàn)細(xì)節(jié)都只好放在本系列書的卷3中了。
第二部分,即HTTP和NNTP應(yīng)用,是卷1的第25~30章中介紹TCP/IP應(yīng)用的延續(xù)。在卷1出版后的兩年里,隨著Internet的發(fā)展,HTTP得到了極大的流行,而NNTP的使用則在最近的10多年中每年增長了大約75%。T/TCP對HTTP來說也是非常好的,可以這樣來用TCP:在少量數(shù)據(jù)傳輸中縮短連接時間,因為這種時候連接的建立和拆除時間往往占總時間的大頭。在繁忙的Web服務(wù)器上,成千上萬個不同而且不斷變化的客戶對HTTP(因此也對TCP)的高負(fù)荷使用,也提供了唯一可以對服務(wù)器上確切的分組進行考查的機會(第14章),可以觀察卷1和卷2中給出的TCP/IP的許多特性。
第三部分中的Unix域協(xié)議原本是準(zhǔn)備在卷2中介紹的,但由于卷2已多達(dá)1200頁而刪去了。在書名為《TCP/IP詳解》這樣的系列書中夾雜著TCP/IP以外的協(xié)議不免令人生奇,但Unix域協(xié)議幾乎15年前就已經(jīng)伴隨著BSD版TCP/IP的實現(xiàn)在4.2BSD中發(fā)布了。今天,它們在任何一個從伯克利衍生而來的內(nèi)核中都在頻繁地使用,但它們的使用往往“被掩蓋在后臺”,大多數(shù)用戶不知道它們的存在。除了在從伯克利衍生而來的內(nèi)核中充當(dāng)Unix管道的基礎(chǔ)外,它們的另一個大用戶是當(dāng)客戶程序和服務(wù)器程序在同一主機(典型的情況是工作站)上時的X Window系統(tǒng)。Unix域的插口也用于進程之間傳遞描述符,也是進程之間通信的一個強大工具。由于Unix域協(xié)議所用的插口API(應(yīng)用編程接口)與TCP/IP所用的插口API幾乎是相同的,Unix域協(xié)議以最小的代碼變化提供了一個簡單的手段來增強本地應(yīng)用的性能。
以上三個部分的每個部分都可以獨立閱讀。
讀者
與本系列書的前兩卷一樣,這一卷是為所有想要理解TCP/IP如何工作的人寫的:編寫網(wǎng)絡(luò)應(yīng)用的程序員,負(fù)責(zé)維護采用TCP/IP的計算機和網(wǎng)絡(luò)的系統(tǒng)管理員,以及在日常工作中經(jīng)常與TCP/IP應(yīng)用程序打交道的用戶。
第一和第二部分是理解TCP/IP工作原理的基礎(chǔ)。不熟悉TCP/IP的讀者應(yīng)該看看本系列書的卷1,見[Stevens 1994],以便對TCP/IP協(xié)議集有一個全面的了解。第一部分的前半部分(第1~4章,TCP/IP中的概念和例子)與卷2無關(guān),可以直接閱讀。但后半部分(第5~12章,T/TCP的實現(xiàn))則需要先熟悉4.4 BSD-Lite網(wǎng)絡(luò)程序,這些內(nèi)容在卷2中介紹。
在整本書中有大量的向前和向后參考索引,這些參考索引是針對本書的兩個主題,以及對卷1和卷2的內(nèi)容,為想要了解更詳細(xì)內(nèi)容的讀者提供的。在本書最后有書中用到的所有縮略語,封底背面則有書中介紹的所有結(jié)構(gòu)、函數(shù)和宏(以字母順序排列)及其介紹起始頁碼的交叉參考列表。如果本書引用了卷2中的定義,則該交叉參考列表也列出了卷2中的定義。
源碼版權(quán)
本書中引自4.4BSD-Lite版的所有源碼(源程序)都包括有下面這樣的版權(quán)說明:
第6章路由表的源碼則包括下面這樣的版權(quán)說明:
印刷慣例
當(dāng)需要顯示交互的輸入和輸出信息時,將用黑體表示鍵盤輸入,而計算機輸出則用Courrier體,并用中文宋體作注釋。
書中總是把系統(tǒng)名作為命令解釋程序提示符的一部分(例如sun),以說明命令是在哪個主機上執(zhí)行的。在正文中引用的程序名通常都是首字母大寫(如Telnet和Tcpdump),以避免過多的字體形式。
在整個這本書中,我們將用像上述這段文字一樣的縮進、附加的注釋來說明實現(xiàn)細(xì)節(jié)中的歷史階段。
W. Richard Stevens
Tucson, Arizona
1995年11月
rstevens@noao.edu
http://www.noao.edu/~rstevens
[關(guān)閉此窗口]
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -