?? 前言.txt
字號(hào):
前 言
引言和本書的組織
本書是“TCP/IP詳解系列”的延續(xù):此系列的卷1是[Stevens 1994],卷2是[Wright and Stevens 1995]。本書分成三個(gè)部分,每個(gè)部分覆蓋了不同的內(nèi)容。
(1) TCP事務(wù)協(xié)議,通常叫做T/TCP。這是對(duì)TCP的擴(kuò)展,其設(shè)計(jì)目的是使客戶-服務(wù)器事務(wù)更快、更高效和更可靠。這個(gè)目標(biāo)的實(shí)現(xiàn)省略了連接開始時(shí)TCP的三次握手,并縮短了連接結(jié)束時(shí)TIME_WAIT狀態(tài)的持續(xù)時(shí)間。我們將會(huì)看到,在客戶-服務(wù)器事務(wù)中,T/TCP的性能與UDP相當(dāng),而且T/TCP具有可靠性和適應(yīng)性,這兩點(diǎn)相對(duì)UDP來說都是很大的改進(jìn)。
事務(wù)是這樣定義的:一個(gè)客戶向服務(wù)器發(fā)出請(qǐng)求,接下來是服務(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實(shí)現(xiàn)中都提供的,在許多非Unix的實(shí)現(xiàn)中也都提供。這些協(xié)議提供了進(jìn)程之間通信(IPC)的一種手段,采用了與TCP/IP中一樣的插口接口。當(dāng)客戶與服務(wù)器進(jìn)程在同一主機(jī)上時(shí),Unix域協(xié)議通常要比TCP/IP快一倍。
第一部分,即對(duì)T/TCP的介紹,又分成兩個(gè)小部分。第1~4章介紹協(xié)議,并給出了大量實(shí)例來說明它們是怎樣工作的。這些材料主要是對(duì)卷1中24.7節(jié)的補(bǔ)充,在那里對(duì)T/TCP只是做了簡單的介紹。第2小部分,即第5~12章,介紹T/TCP在4.4BSD-Lite網(wǎng)絡(luò)代碼(即,卷2中給出的代碼)中的確切實(shí)現(xiàn)。由于最早的T/TCP實(shí)現(xiàn)遲至1994年9月才發(fā)布,已經(jīng)是本書卷1出版一年以后了,那時(shí)卷2也快完成了,因此T/TCP的詳細(xì)敘述,包括諸多實(shí)例和所有的實(shí)現(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對(duì)HTTP來說也是非常好的,可以這樣來用TCP:在少量數(shù)據(jù)傳輸中縮短連接時(shí)間,因?yàn)檫@種時(shí)候連接的建立和拆除時(shí)間往往占總時(shí)間的大頭。在繁忙的Web服務(wù)器上,成千上萬個(gè)不同而且不斷變化的客戶對(duì)HTTP(因此也對(duì)TCP)的高負(fù)荷使用,也提供了唯一可以對(duì)服務(wù)器上確切的分組進(jìn)行考查的機(jī)會(huì)(第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的實(shí)現(xiàn)在4.2BSD中發(fā)布了。今天,它們?cè)谌魏我粋€(gè)從伯克利衍生而來的內(nèi)核中都在頻繁地使用,但它們的使用往往“被掩蓋在后臺(tái)”,大多數(shù)用戶不知道它們的存在。除了在從伯克利衍生而來的內(nèi)核中充當(dāng)Unix管道的基礎(chǔ)外,它們的另一個(gè)大用戶是當(dāng)客戶程序和服務(wù)器程序在同一主機(jī)(典型的情況是工作站)上時(shí)的X Window系統(tǒng)。Unix域的插口也用于進(jìn)程之間傳遞描述符,也是進(jìn)程之間通信的一個(gè)強(qiáng)大工具。由于Unix域協(xié)議所用的插口API(應(yīng)用編程接口)與TCP/IP所用的插口API幾乎是相同的,Unix域協(xié)議以最小的代碼變化提供了一個(gè)簡單的手段來增強(qiáng)本地應(yīng)用的性能。
以上三個(gè)部分的每個(gè)部分都可以獨(dú)立閱讀。
讀者
與本系列書的前兩卷一樣,這一卷是為所有想要理解TCP/IP如何工作的人寫的:編寫網(wǎng)絡(luò)應(yīng)用的程序員,負(fù)責(zé)維護(hù)采用TCP/IP的計(jì)算機(jī)和網(wǎng)絡(luò)的系統(tǒng)管理員,以及在日常工作中經(jīng)常與TCP/IP應(yīng)用程序打交道的用戶。
第一和第二部分是理解TCP/IP工作原理的基礎(chǔ)。不熟悉TCP/IP的讀者應(yīng)該看看本系列書的卷1,見[Stevens 1994],以便對(duì)TCP/IP協(xié)議集有一個(gè)全面的了解。第一部分的前半部分(第1~4章,TCP/IP中的概念和例子)與卷2無關(guān),可以直接閱讀。但后半部分(第5~12章,T/TCP的實(shí)現(xiàn))則需要先熟悉4.4 BSD-Lite網(wǎng)絡(luò)程序,這些內(nèi)容在卷2中介紹。
在整本書中有大量的向前和向后參考索引,這些參考索引是針對(duì)本書的兩個(gè)主題,以及對(duì)卷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)需要顯示交互的輸入和輸出信息時(shí),將用黑體表示鍵盤輸入,而計(jì)算機(jī)輸出則用Courrier體,并用中文宋體作注釋。
書中總是把系統(tǒng)名作為命令解釋程序提示符的一部分(例如sun),以說明命令是在哪個(gè)主機(jī)上執(zhí)行的。在正文中引用的程序名通常都是首字母大寫(如Telnet和Tcpdump),以避免過多的字體形式。
在整個(gè)這本書中,我們將用像上述這段文字一樣的縮進(jìn)、附加的注釋來說明實(shí)現(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
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -