《TCP/IP詳解卷3:TCP事務協(xié)議、HTTP、NNTP和UNIX域協(xié)議》 —1.8 歷史
1.8?? 歷史
RFC 938 [Miller 1985]是較早講述事務的RFC文檔之一。該文檔中規(guī)定了IRTP,即:Internet可靠的事務協(xié)議,它能保證數(shù)據(jù)分組的可靠、按順序提交。該文檔中把事務定義為一個短小的、自包含的報文;而IRTF定義了任意兩臺主機(即IP地址)之間持續(xù)存在的優(yōu)選連接,當其中任何一臺主機重新啟動后,該連接都會重新同步。IRTF協(xié)議位于IP協(xié)議之上,并定義了專門的8字節(jié)首部。
RFC 955 [Braden 1985]本質(zhì)上并未規(guī)定任何協(xié)議,而只是給出了事務協(xié)議的一些設計準則。它認為UDP和TCP這兩個主流的運輸層協(xié)議所提供的業(yè)務相差太大,而事務協(xié)議正好填補了TCP和UDP之間的空檔。該RFC文檔把事務定義為一次簡單的報文交換:一個請求發(fā)給服務器,然后一個應答發(fā)回到客戶。它還認為各種事務都有如下特征:不對稱的模式(一端是服務器,另一端是客戶)、單工數(shù)據(jù)傳遞(任一時刻都只有一個方向有數(shù)據(jù)傳輸)、持續(xù)時間短(可能延續(xù)幾十秒,但絕不可能幾小時)、時延小、數(shù)據(jù)分組少以及面向報文(不是字節(jié)流)。
該RFC中列舉了域名服務系統(tǒng)(DNS)的例子。它認為,在考慮是用UDP還是用TCP作為域名服務系統(tǒng)的運輸層協(xié)議時,設計者往往陷入兩難的境地。一個理想的解決方案應該既能提供可靠的數(shù)據(jù)傳輸,又不需要專門地建立和釋放連接,不需要報文的分段和重組(從而使應用程序不再需要知道像576這樣的神秘數(shù)字),同時還能使兩端的空閑狀態(tài)所處時間最短。TCP什么都好,只可惜它需要建立和釋放連接。
另一個相關(guān)的協(xié)議是RDP,即可靠數(shù)據(jù)協(xié)議。該協(xié)議在RFC 908 [Velten,inden,and Sax 1984]中定義,后來又更新為RFC 1151 [Patridge and Hinden 1990]。與RDP實現(xiàn)有關(guān)的經(jīng)驗在參考文獻[Patridge 1987] 中可以找到。參考文獻[Patridge 1990a]中對RDP有如下評價:“當人們尋求一個可靠的數(shù)據(jù)報協(xié)議時,他們通常是想要一個事務協(xié)議,一個能夠讓他們與多個遠端系統(tǒng)可靠地交換數(shù)據(jù)單元的協(xié)議,一個類似于可靠UDP的協(xié)議。RDP應該看作是一個面向記錄的TCP協(xié)議,它利用連接可靠地傳輸有格式數(shù)據(jù)塊流。RDP并不是一個事務協(xié)議。”(RDP不是事務協(xié)議的理由是,它和TCP一樣采用了三次握手技術(shù)。)
RDP使用通常的插口應用編程接口。與TCP類似,RDP提供流插口接口(SOCK_ STREAM)。另外,RDP還提供SOCK_RDM插口類型(可靠的報文提交)和SOCK_SEQPACKET插口類型(有序的分組)。
VMTP,即通用報文事務協(xié)議,是在RFC 1045 [Cheriton 1998]中規(guī)定的,是一個專門用于事務的協(xié)議,就像遠程過程調(diào)用一樣。像IRTP和RDP那樣,VMTP也是IP之上的運輸層協(xié)議,但VMTP還支持多播通信,這個特性是T/TCP以及本節(jié)提到過的其他協(xié)議所不具備的(參考文獻[Floyd et al. 1995]中有不同意見,他們認為提供可靠的多播通信是應用層的任務,而不是運輸層的任務)。
VMTP還為應用程序提供不一樣的應用編程接口,其插口類型為SOCK_TRANSACT。具體定義詳見RFC 1045。
雖然T/TCP的許多概念早在RFC 955中就已經(jīng)出現(xiàn),但直到RFC 1379 [Braden 1992b]發(fā)布才正式有了T/TCP的第一個規(guī)范。該RFC文檔定義了T/TCP的概念,接下來的RFC 1644 [Braden 1994]給出了更多細節(jié),并討論了一些實現(xiàn)問題。
圖1-15比較了實現(xiàn)各種運輸層協(xié)議分別都需要多少行C源代碼。
圖1-15?? 實現(xiàn)各種運輸層協(xié)議所需要的源代碼行數(shù)
為支持T/TCP所需增加的源代碼行數(shù)(大約1200行)是UDP協(xié)議源代碼行數(shù)的1.5倍。為使4.4BSD支持多播通信,需要增加大約2000行源代碼(設備驅(qū)動程序的改變和支持多播路由所需要的代碼行數(shù)尚未計算在內(nèi))。
VMTP可以從ftp://gregorio.stanford.edu/vmtp-ip得到。RDP通常還無法得到。
HTTP UDP Unix TCP/IP
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。