本備忘錄的狀態(tài)
本備忘錄提供了internet社區(qū)的一些信息,但并沒有具體講述任何一種internet
標(biāo)準(zhǔn)。本備忘錄的發(fā)布不受任何限制。
版權(quán)聲明
Copyright(C)TheInternetSociety(1998).AllRightsReserved.
摘要
本文檔描述了處理Internet協(xié)議(Tip)[1]的目的(特定使用場景)和要求。
其被有意用來幫助限定此協(xié)議的一些必要特征和功能。本文檔也提供了一些輔助
理解和幫助TIP協(xié)議實(shí)現(xiàn)的補(bǔ)充信息。
目錄
1.介紹 2
2.處理Internet協(xié)議(TIP) 3
3.范圍 4
4.TIP的預(yù)期使用 4
5.TIP的適應(yīng)系統(tǒng) 4
6.X/OpenDTP模型的關(guān)聯(lián) 5
7.TIP特定使用場景的實(shí)例 5
8.TIP處理的恢復(fù) 8
9.TIP處理和應(yīng)用信息連續(xù) 8
10.TIP協(xié)議和本地操作 9
11.安全考慮 10
12.TIP要求 10
參考 12
作者的地址 12
評論 13
附錄A.一個(gè)TIP處理治理器API的實(shí)例 13
版權(quán)聲明 21
1.介紹
處理是一個(gè)非常有用的編程范例,很大程度上簡化了分布式應(yīng)用的書寫。當(dāng)處理被使用
時(shí),不管參與一個(gè)特定的工作單元有多少分布式應(yīng)用組分,可能的結(jié)果被減少至兩個(gè),
即:要么所有工作完全成功,要么什么都完不成(這個(gè)特征常被稱做原子數(shù))。由于程
序員不必應(yīng)付大量可能失敗的場景,所以應(yīng)用編程變得簡單了。典型地,處理語義是由
一些基本的系統(tǒng)底層結(jié)構(gòu)(通常是一種產(chǎn)品,諸如事務(wù)處理監(jiān)控器,和/或者數(shù)據(jù)庫的形
式)提供的。這底部結(jié)構(gòu)應(yīng)付失敗以及執(zhí)行必要的恢復(fù)操作以保證原子數(shù)的特性。處理
的使用能使可靠的分布式應(yīng)用得以發(fā)展,否則,盡管不是不可能使分布式應(yīng)用取得進(jìn)展,
但是會使其變得困難。
支持分布處理的一個(gè)要害技術(shù)是二段提交協(xié)議(two-phasecommitPRotocol)(2-pc)。2-pc
協(xié)議已經(jīng)在商業(yè)事務(wù)處理(TP)系統(tǒng)中使用了很多年了,并且它也是很好理解的(例
如12年前就開始應(yīng)用的LU6.22-pc(同步點(diǎn))協(xié)議)。今天,大量不同的2-pc協(xié)議在許
多TP監(jiān)控器和數(shù)據(jù)庫產(chǎn)品中被支持。在參與一個(gè)分布工作單元(處理)的各個(gè)組分之間,
2-pc被用來確保與工作結(jié)果相關(guān)的所有部分(忽略任何失敗的成分)一致。今天,標(biāo)準(zhǔn)的
和個(gè)性化的2-pc協(xié)議都存在。這些協(xié)議典型的使用了一個(gè)“單管道”模型。就是說處理和
應(yīng)用協(xié)議是緊密結(jié)合的,是在同一個(gè)通信頻道上執(zhí)行的。一個(gè)應(yīng)用可能只使用和處理協(xié)議
聯(lián)結(jié)在一起的特定通信機(jī)制。具有比較龐雜的內(nèi)容和寬泛的結(jié)構(gòu)和治理要求的標(biāo)準(zhǔn)協(xié)議
(OSITP,LU6.2)是復(fù)雜的。因此它們沒有被廣泛配置。假如處理能被使用的話,那么所
有這些組成的網(wǎng)絡(luò)將具有有限的應(yīng)用靈活性和互用性。應(yīng)用就能有希望使用大量沒有處理
變量的通信協(xié)議(例如HTTP),并被配置在不同種類的應(yīng)用環(huán)境中。
概括來說,處理很大程度上簡化了分布式應(yīng)用的編程。2-pc協(xié)議是一種要害的處理技術(shù)。
目前運(yùn)行在一具有非凡目的(復(fù)雜的,同類的)的底部結(jié)構(gòu)中的2-pc協(xié)議只給一套有限
制的應(yīng)用提供了處理語義。這個(gè)應(yīng)用使用一套特定的雙向通信協(xié)議。所以,被當(dāng)前的2-pc
協(xié)議強(qiáng)加的約束限制了處理范例的廣泛使用,因此也抑制了新的分布式商業(yè)應(yīng)用的發(fā)展。
(見[2]以得到更多有關(guān)處理,原子數(shù),以及二段提交協(xié)議的大概知識。)
2.處理Internet協(xié)議(TIP)
TIP是在一異類(網(wǎng)絡(luò)化的)環(huán)境中,用來提供普遍分布式處理支持的一種2-pc協(xié)議,
TIP消除了目前2-pc協(xié)議中的約束,使新的分布式商業(yè)應(yīng)用成為可能。
為了達(dá)到這個(gè)目的,首先要滿足兩個(gè)要害要求:
1)Keeptheprotocolsimple(yetfunctionallysufficient).Ifthe
protocoliscomplexitwillnotbewidelydeployedorquickly
adopted.Simplicityalsomeanssuitabilitytoawiderangeof
applicationenvironments.
2)Enabletheprotocoltobeusedwithanyapplications
communicationsprotocol(e.g.HTTP).Thisensuresheterogeneous
environmentscanparticipateindistributedwork.
1)保持協(xié)議的簡單性(功能仍然充分)。假如這個(gè)協(xié)議是復(fù)雜的話,將不能被廣泛
配置或者很快采用。簡單性也意味著在一個(gè)很大范圍應(yīng)用環(huán)境里的適用性。
2)能使協(xié)議和任何應(yīng)用通信協(xié)議(如HTTP)一起使用。這一點(diǎn)確保異類環(huán)境能參與
分布式工作。
TIP不會將已知要假定廢棄的2-pc協(xié)議作為基礎(chǔ)來重新改造2-pc協(xié)議本身。TIP的更新奇、
更有效之處在于其脫離了應(yīng)用通信協(xié)議(雙管道模型)。
+-------------+應(yīng)用通信+-------------+
應(yīng)用程序---------------------------應(yīng)用程序
"管道1"
+-------------++-------------+
TIPTMAPITIPTMAPI
+-----------------+TIP2-pc協(xié)議+-----------------+
TIP處理治理器----------------------TIP處理治理器
"管道2"
+-----------------++-----------------+
圖1:TIP的雙管道本性
3.范圍
TIP不會去描述商業(yè)事務(wù)處理或者電子商務(wù)在internet上將怎樣被治理。它只講述2-pc
處理協(xié)議(一種對于這些應(yīng)用發(fā)展的輔助)。例如,TIP不會提供一種非評判性的機(jī)制。
一旦對普通電子商務(wù)的要求變得更好理解,這樣的協(xié)議可以是隨后IETF的行為的一個(gè)主
題。TIP不會排除這些協(xié)議后來的定義。
TIP不會講述應(yīng)用編程接口(API)(請留意本文檔(附錄A中)包含的一個(gè)例子TIPTM
API,以幫助理解)。
4.TIP的預(yù)期使用
正如以上所形容的,處理在簡化分布式應(yīng)用編程中是一個(gè)非常有用的工具。所以,TIP可
以定位于任何包括分布式工作的應(yīng)用中。這樣的應(yīng)用可以包含執(zhí)行在一個(gè)簡單系統(tǒng)中的
成分。這個(gè)簡單系統(tǒng)可以穿過一個(gè)企業(yè)內(nèi)部網(wǎng),穿過internet網(wǎng)或者任何別的分布式系
統(tǒng)結(jié)構(gòu)。這個(gè)應(yīng)用可以是“企業(yè)”級的(要求有很高的性能以及實(shí)用性),或者級別要求
不那么高的。人們有意使TIP變得能普遍適用的,以符合任何能從這處理語義規(guī)定中獲益
的應(yīng)用之需要。
5.TIP的適應(yīng)系統(tǒng)
有兩種級別的TIP適應(yīng)處理治理系統(tǒng)
1)單一客戶端系統(tǒng)。這指那些只提供一個(gè)應(yīng)用接口以劃分TIP處理的界線,但是沒有提供
給本地恢復(fù)資源入口的系統(tǒng)。這樣一個(gè)輕量級實(shí)現(xiàn)只對那些只有客戶端應(yīng)用的系統(tǒng)才有用
(如桌面機(jī)器)。這樣的客戶端系統(tǒng)可能是不可靠的,而且作為處理的協(xié)調(diào)器也是不合適
的(它們的不適用性可能導(dǎo)致在別的參與處理的系統(tǒng)上的資源被鎖定或者或者不可用)。
所以這些所謂的“不穩(wěn)定的客戶端”系統(tǒng)將協(xié)調(diào)處理(以及從失敗中恢復(fù))責(zé)任委托給別
的“完全”(服務(wù)器端)TIP系統(tǒng)去執(zhí)行。對于這些輕量級系統(tǒng),只有TIPIDENTIFY,
BEGIN,COMMIT,andABORT指令是需要的,不需要處理日志。
2)服務(wù)器端系統(tǒng)。即指那些提供上述支持,并且加入TIP處理協(xié)調(diào)和恢復(fù)服務(wù)的系統(tǒng)。
這些系統(tǒng)也可以提供入口給恢復(fù)資源(如相關(guān)數(shù)據(jù)庫)。服務(wù)器端系統(tǒng)支持所有TIP指
令,以及提供一個(gè)可恢復(fù)處理日志。
一個(gè)TIP適應(yīng)處理治理器(TM)也將提供給用編程接口(如X/OpenTX接口[3])以劃分
TIP處理的界線,并且加入指令以產(chǎn)生TIPURL,推/拉(PUSH/PULL)TIP處理以及安置
當(dāng)前TIP處理的上下文。利用現(xiàn)有的API和2-pc協(xié)議,能把TIP支持加入TM中,而且處理
可以既包含私有化的處理又包含TIP處理分支(這是假定現(xiàn)有的TM實(shí)現(xiàn)將提供用來在TIP
和其他處理協(xié)議間起協(xié)調(diào)作用的“TIP網(wǎng)關(guān)”設(shè)備)。
6.X/OpenDTP模型的關(guān)聯(lián)
X/Open分布式事務(wù)處理(DTP)模型[4]定義了四種成分:1)應(yīng)用編程(AP),2)處理
治理器(TM),3)資源治理器(RM),以及4)通信資源治理器(CRM)。在這個(gè)模型中,TIP
定義了一個(gè)TM到TM的互用性協(xié)議,這個(gè)協(xié)議是獨(dú)立于應(yīng)用通信之外的(X/Open中沒有
這樣相當(dāng)?shù)膮f(xié)議被闡明,X/Open中所有的處理和應(yīng)用通信都發(fā)生在CRM(單管道模型)間)。
AP和TM/RM間的編程接口不會被TIP影響,但可以被其使用。從TM到RM的相互作用是通
過X/OpenXA接口規(guī)范[5]來定義的。TIP是和XA相適應(yīng)的。一個(gè)TIP處理可以包含一些訪
問
多重RM的應(yīng)用,這里XA接口被用來協(xié)調(diào)RM處理分支。
7.TIP特定使用場景的實(shí)例
可以預(yù)期一個(gè)典型的internet上的TIP使用將包括一些使用代理模型的應(yīng)用。在這個(gè)模型
中,客戶端節(jié)點(diǎn)本身不完全直接包含在TIP協(xié)議中,也不需要一個(gè)本地TIPTM的服務(wù)。相
應(yīng)代替的是一個(gè)代理應(yīng)用控制了與客戶端的對話,并對TIP處理的協(xié)調(diào)負(fù)責(zé)。這個(gè)代理操
作和別的服務(wù)提供者一起把服務(wù)傳遞給客戶端。例如,作為一個(gè)旅行代理,其會在航空公
司/旅館/等服務(wù)公司和顧客之間充當(dāng)媒介。這個(gè)模型的一個(gè)很大的優(yōu)點(diǎn)就是代理得到服務(wù)
提供者的信任,并且這樣的代理數(shù)目上更少(和使用客戶相比),所以安全和性能上的問
題被減少了。
考慮一個(gè)旅行代理處的例子。一個(gè)客戶在一臺連網(wǎng)個(gè)人電腦上運(yùn)行一個(gè)網(wǎng)頁瀏覽器以進(jìn)入
這家旅行代理處的主頁。通過代理處提供的主頁(可以依次由航空公司和旅館服務(wù)商提供
的主頁創(chuàng)立),這個(gè)客戶選定了一條包括所選航空公司和旅館的路線。最后該客戶點(diǎn)擊“
進(jìn)行預(yù)定”的按鈕。這時(shí),下列事件將按序發(fā)生(通過有用的標(biāo)準(zhǔn)或個(gè)性化技術(shù)(例如
CGI),用戶寫入的申請代碼被不同的網(wǎng)絡(luò)服務(wù)商調(diào)用)。
1)首先,旅行代理處開始一個(gè)本地處理,并且為這個(gè)處理得到一個(gè)TIPURL(使用本地
TM的API去執(zhí)行所有這些函數(shù)。例如,“tip_xid_to_url()”將返回TIPURL給本地
處理)。這個(gè)TIPURL包含了本地TM的IP地址的監(jiān)聽端點(diǎn)和本地處理的處理校驗(yàn)符。
2)然后,此旅行代理處的應(yīng)用發(fā)一個(gè)請求給航空公司服務(wù)器(通過某種協(xié)議(如HTTP))
通過請求“book_flight”服務(wù)來傳遞那個(gè)客戶選定的航班和TIPURL(從上面1.中
獲得的)。
3)這個(gè)請求被調(diào)用book_flight應(yīng)用的航空公司服務(wù)器收到。此應(yīng)用在輸入數(shù)據(jù)中找回
TIPURL,并把其傳遞給一個(gè)“tip_pull()”API以請求它的本地TM。這個(gè)tip_pull()
函數(shù)引起以下事件發(fā)生:
a.本地TM創(chuàng)建一個(gè)本地處理(將要被執(zhí)行的工作在此之后),
b.假如一個(gè)TIP連接并不總是生存到上一級(旅行代理處)TM為止(正如通過在TIP
URL里傳遞的IP地址來定義的一樣),一個(gè)連接被創(chuàng)建且一個(gè)IDENTIFY(識別)
交換發(fā)生(假如多路技術(shù)被使用在這個(gè)連接上,接下來將是一個(gè)多路交換),
c.一個(gè)PULL指令被送到上一級TM,
d.作為PULL的響應(yīng),上一級TM和下一級(航空公司)TM通過處理建立聯(lián)結(jié)(通過
結(jié)這個(gè)處理的連接),以及發(fā)送一個(gè)PULLED響應(yīng)給下一級TM,
e.下一級TM返回控制給book_flight應(yīng)用,book_flight現(xiàn)在正執(zhí)行在新的已創(chuàng)建的
本地處理的上下文中。
4)book_flight應(yīng)用開始起作用(它可能包括至一個(gè)可恢復(fù)資源治理器(如一個(gè)RDBMS)
的入口,在這種情況下本地TM將和具有本地處理的RM建立聯(lián)結(jié)(通過XA接口或者別的什
么))。
5)book_flight應(yīng)用返回給旅行代理應(yīng)用指示成功。
6)接著,步驟2-5在旅館服務(wù)器“book_room”應(yīng)用上重復(fù)。在這些步驟結(jié)束后,上一
級的TM已經(jīng)登記了兩個(gè)下一級的TM參與處理。一個(gè)是代理TM和航空公司和旅館服務(wù)器
TM之間的TIP聯(lián)系,另一個(gè)是航空公司和旅館服務(wù)器上正在進(jìn)行中的處理。[注重步驟2-5
和6能被同時(shí)執(zhí)行。
7)旅行代理處應(yīng)用發(fā)布一個(gè)“提交處理”請求(使用本地TM的API)。本地TM在TIP
連接上發(fā)送一個(gè)PREPARE指令給航空公司和旅館的TM(此時(shí)這些TM被定義為次一級的
理參與者)。
8)在航空公司和旅館服務(wù)器上的TM執(zhí)行必要的步驟以預(yù)備他們的本地可恢復(fù)資源(例
如通過發(fā)布xa_prepare()請求)。假如成功的話,下一級的TM改變他們的TIP處理狀
態(tài)為已預(yù)備,并將恢復(fù)信息(例如本地的和上一級的處理分支校驗(yàn)符,以及上一級TM
的IP地址)記入日志。然后這些下一級的TM發(fā)送PREPARED指令給上一級TM。
9)假如兩個(gè)下一級TM都響應(yīng)PREPARED,則上一級TM記錄下處理已提交,以及恢復(fù)信
息(例如本地和下一級處理校驗(yàn)符,以及下一級TM的IP地址)。然后上一級TM在兩個(gè)下
一級TIP連接上發(fā)送COMMIT指令。
10)在航空公司和旅館服務(wù)器上的TM執(zhí)行必要的步驟來提交他們的本地可恢復(fù)資源(如
通過發(fā)布xa_commit()請求)。下一級的TM廢棄此處理。接著下一級的TM發(fā)送
COMITTED指令給上一級的TM。
11)上一級的TM廢棄此處理。上下兩級TM之間的TIP連接返回到閑置狀態(tài)(斷開和任
何處理的聯(lián)結(jié))。上一級的TM返回成功信息給旅行代理處的應(yīng)用“提交處理”請求。
12)旅行代理處的應(yīng)用返回“預(yù)定完成”給客戶。
這個(gè)例子例證了PULL的使用。假如PUSH被替代使用的話,上面的事件2)和3)將做如下
改變:
2)旅行代理處的應(yīng)用:
a.將以上1)中獲得的TIPURL和在航空公司服務(wù)器上TM的監(jiān)聽端點(diǎn)地址一起,通
過一個(gè)“tip_push()”API請求,傳遞給它的本地TM。這個(gè)tip_pull()函數(shù)引
起以下事件發(fā)生:
i.假如一個(gè)TIP連接并不總是生存到下一級(航空公司服務(wù)器)TM為止(正如通
過在tip_push()上傳遞的IP地址來定義的一樣),一個(gè)連接被創(chuàng)建且一個(gè)
IDENTIFY(識別)交換發(fā)生(假如多路技術(shù)被使用在這個(gè)連接上,接下來將是
一個(gè)多路交換),
ii.一個(gè)PUSH指令被發(fā)送到下一級TM,
iii.作為對PUSH的響應(yīng),下一級的TM創(chuàng)建了一個(gè)本地處理,將TIP連接和處理
聯(lián)結(jié)起來然后發(fā)送一個(gè)PUSHED響應(yīng)給上一級的TM,
iv.作為對PUSH的響應(yīng),上一級的TM通過處理和下一級TM聯(lián)結(jié),
v.上一級的TM返回控制給旅行代理應(yīng)用。
b.旅行代理應(yīng)用發(fā)一個(gè)請求給航空公司服務(wù)器(通過某種協(xié)議(如HTTP)),通過
請求“book_flight”服務(wù)來傳遞那個(gè)客戶選定的航班和TIPURL(從上面1.中
獲得的)。
3)這個(gè)請求被調(diào)用book_flight應(yīng)用的航空公司服務(wù)器收到。此應(yīng)用在輸入數(shù)據(jù)中找
回TIPURL,并把其傳遞給一個(gè)“tip_pull()”API以請求它的本地TM。因?yàn)檫@個(gè)本地TM
已經(jīng)“看到”這個(gè)URL(其已經(jīng)被傳遞),本地TM簡單地返回book_flight應(yīng)用,
book_flight現(xiàn)在正執(zhí)行在先前創(chuàng)建的本地處理的上下文中。
[注重盡管這個(gè)例子中,處理協(xié)調(diào)者角色是由一個(gè)節(jié)點(diǎn)來扮演的,這個(gè)節(jié)點(diǎn)也參與了處理(旅
行代理處),但是別的結(jié)構(gòu)也是可能的(如由一個(gè)非參與處理的第三方節(jié)點(diǎn)來扮演處理協(xié)調(diào)
者角色。]
8.TIP處理的恢復(fù)
直到處理達(dá)到已預(yù)備狀態(tài),處理中的任何失敗的結(jié)果將被廢棄。一旦處理已經(jīng)達(dá)到已預(yù)備狀
態(tài),假設(shè)此時(shí)一個(gè)錯(cuò)誤發(fā)生,那么處理恢復(fù)必須被執(zhí)行。對于上下兩級TM來說,恢復(fù)行為
是不同的,其細(xì)節(jié)取決于處理(已提交或已廢棄)的結(jié)果以及失敗發(fā)生的確切位置。例如在
旅行代理處的應(yīng)用,假如其到旅館服務(wù)器的連接在旅館服務(wù)器收到COMMIT指令之前
失敗,那么(一旦連接被恢復(fù)):
1)上一級(旅行代理處)TM發(fā)送一個(gè)RECONNECT指令(傳遞下一級處理校驗(yàn)符(假如
必須的話可以從處理中重新獲得))。
2)下一級(旅館)TM響應(yīng)RECONNECTED(因?yàn)樗鼜奈词盏紺OMMIT指令,仍然使處理為
已預(yù)備態(tài)(假如在下一級TM響應(yīng)COMMITTED之后失敗發(fā)生,那么下一級的TM將已經(jīng)忽略此
處理,并且對RECONNECT指令響應(yīng)為NOTRECONNECTED))。
3)上一級TM發(fā)送一個(gè)COMMIT指令,下一級TM提交此處理并響應(yīng)為COMMITTED。處理
現(xiàn)在已經(jīng)被解析。
4)假如下一級TM在收到一個(gè)RECONNECT指令之前恢復(fù)和上一級TM的連接,那么它可能
發(fā)送一個(gè)QUERY指令。這樣的話,上一級TM將響應(yīng)QUERIEDEXISTS,且下一級TM將等待上
一級發(fā)送RECONNECT指令。假如此處理已被廢棄的話,那么上一級TM可能響應(yīng)
QUERIEDNOTFOUND,這樣,下一級TM將廢棄此處理(注重上一級TM沒有被迫為一個(gè)已廢棄
的處理發(fā)送一個(gè)RECONNECT指令(也就是說,上一級TM能在發(fā)出ABORT指令后和在收到一
個(gè)ABORTED響應(yīng)之前就廢棄這個(gè)處理))。
假如客戶應(yīng)用(調(diào)用“提交”的應(yīng)用)處在失敗的環(huán)境中,將可能不會收到顯示處理最
終結(jié)果的響應(yīng)(即使這個(gè)處理本身已經(jīng)被成功完成了)。這是一個(gè)普遍問題,并不是TIP
所特有的。在這樣的環(huán)境中,直到查明處理的最終結(jié)果,應(yīng)用才會終止(一個(gè)TIPTM可
以通過提供一些非凡機(jī)制的實(shí)現(xiàn)來使其更便利,如把結(jié)果寫入一個(gè)用戶日志)。
9.TIP處理和應(yīng)用信息連續(xù)
一個(gè)聯(lián)系存在于TIP指令和應(yīng)用信息之間:直到確定所有的參與者已經(jīng)適當(dāng)注冊并且已
經(jīng)完成此處理之前的工作之后,一個(gè)TIP處理才能被提交。因?yàn)門IP的雙管道本性,這個(gè)
操作不是必要地要被TIP系統(tǒng)本身所強(qiáng)化(盡管在某些實(shí)現(xiàn)中是可能的)。所以使操作
正常是這個(gè)應(yīng)用所擔(dān)負(fù)的責(zé)任。通常來說,一個(gè)應(yīng)用不能:
1)當(dāng)它還有任何和處理聯(lián)結(jié)在一起的請求仍然待處理時(shí),調(diào)用它本地TM的“commit”
函數(shù)。
2)對從一參與應(yīng)用來的一個(gè)事務(wù)處理請求產(chǎn)生確定響應(yīng)。這個(gè)應(yīng)用和處理一起預(yù)先登
記了它的本地TM。
10.TIP協(xié)議和本地操作
為了確保處理原子數(shù)能被恰當(dāng)?shù)乇WC,一個(gè)系統(tǒng)實(shí)現(xiàn)TIP就必須在協(xié)議交換里的某一點(diǎn)執(zhí)
行一些別的本地操作。這些操作適合于創(chuàng)建和刪除“日志記錄”處理(失敗中幸存的必要
信息,可以確保處理恢復(fù)的正確運(yùn)行)。下列關(guān)于TIP協(xié)議和日志記載事件之間聯(lián)系的信
息只是起參考作用,并非是定論(見[2]以獲得更多主題相關(guān)討論)。
1)在發(fā)送一個(gè)PREPARED響應(yīng)之前,系統(tǒng)應(yīng)該為處理創(chuàng)建一個(gè)預(yù)備好的恢復(fù)記錄。
2)假如已經(jīng)創(chuàng)建了一個(gè)預(yù)備好的恢復(fù)記錄,則這個(gè)記錄不應(yīng)該被刪除,除非:
a.收到一個(gè)ABORT信息;或者
b.收到一個(gè)COMMIT信息;或者
c.收到一個(gè)QUERIEDNOTFOUND響應(yīng)。
3)假如一個(gè)預(yù)備好的恢復(fù)記錄存在的話,系統(tǒng)不應(yīng)該發(fā)送一個(gè)COMMITTED或
NOTRECONNECTED信息。
4)在為處理創(chuàng)建一個(gè)提交恢復(fù)記錄之前,系統(tǒng)應(yīng)該已經(jīng)收到一個(gè)PREPARED響應(yīng)。
5)處在已預(yù)備狀態(tài)的系統(tǒng)在發(fā)送一個(gè)COMMIT之前,應(yīng)該已經(jīng)為處理創(chuàng)建了一個(gè)提交恢
復(fù)記錄。
6)假如已經(jīng)創(chuàng)建了一個(gè)提交恢復(fù)記錄,則這個(gè)記錄不應(yīng)該被刪除,除非:
a.收到一個(gè)COMMITTED信息;或者
b.收到一個(gè)NOTRECONNECTED信息。
11.安全考慮
這種被應(yīng)用用來通信和執(zhí)行分布式工作的方法超出了TIP協(xié)議的范圍。這種在一個(gè)特定系
統(tǒng)上用做客戶的鑒定和授權(quán)以獲取節(jié)目和信息的機(jī)制,是應(yīng)用通信協(xié)議和應(yīng)用運(yùn)行基層構(gòu)
造的一部分。使用TIP協(xié)議不會影響這些考慮。
因?yàn)橄到y(tǒng)要求保護(hù)自己免遭未經(jīng)授權(quán)的TIP指令或者一個(gè)可信任的參與TIPTM的模擬者的
干擾,所以安全是和TIP協(xié)議自身相關(guān)的?;蛟S最糟糕的后果就是可能的無法探測的矛盾數(shù)
據(jù)導(dǎo)致妨礙了TIP協(xié)議的義務(wù)(例如,在一個(gè)TIP連接的ABORT指令位置注入了一個(gè)COMMIT
指令)。TIP采用傳輸層安全協(xié)議(TLS)[6]來限制僅僅被信任的參與者能夠進(jìn)入(即控制
從這些遠(yuǎn)處端點(diǎn)來的TIP處理將被接受,并且驗(yàn)證這些端點(diǎn)是否真實(shí)可信),并把TIP指令
譯成密碼。TLS的使用(或者不使用)是這些TIPTM參與者之間協(xié)定的。見[1]以得到更多
TIP使用TLS的細(xì)節(jié)。
TIPTM實(shí)現(xiàn)也可以提供本地化方法以得到間隔時(shí)間以及廢棄那些沒有在某些特定時(shí)間內(nèi)完
成的處理(因此可以阻止由于有害內(nèi)容引起的資源不可利用)。處理間隔時(shí)間也能作為一
種解決僵局的方法。
12.TIP要求
大多數(shù)的這些要求起源于最初把處理發(fā)展成一個(gè)無所不在的系統(tǒng)服務(wù)目的,能使所有的級
別的應(yīng)用能使用它(正如TCP被假定為能到處使用)。通常這需要加入盡可能少的一些關(guān)于
TIP使用的限制(為了能使用處理,應(yīng)用不應(yīng)該被要求運(yùn)行在某個(gè)“非凡”環(huán)境中),并且
保持協(xié)議簡單高效。這樣能讓TIP在很多系統(tǒng)(運(yùn)行起來很廉價(jià))上得到廣泛的實(shí)現(xiàn)(運(yùn)作
起來很廉價(jià))。
1)應(yīng)用通信協(xié)議獨(dú)立
為了答應(yīng)TIP能使用在和任何應(yīng)用協(xié)議的聯(lián)結(jié)中,TIP協(xié)議必須獨(dú)立定義于用作轉(zhuǎn)錄應(yīng)用數(shù)
據(jù)的通信協(xié)議之外。TIP協(xié)議必須可以使應(yīng)用能使用任意的通信協(xié)議開始,結(jié)束,以及傳播
TIP處理。
這意味著TIP協(xié)議施用了一個(gè)2-管道操作模型。這個(gè)模型要求分隔應(yīng)用通信和處理協(xié)調(diào)為
兩個(gè)離散的通信頻道(管道)。這個(gè)分隔使處理協(xié)調(diào)協(xié)議(TIP)可以和任何應(yīng)用通信協(xié)議
(如HTTP,ODBC,無格式的TCP/UDP,等等)一起使用。
2)支持處理語義
TIP協(xié)議必須提供事實(shí)上標(biāo)準(zhǔn)的、假定廢棄的2-pc協(xié)議功能來保證甚至在失敗事件中的處
理原子數(shù)。TIP應(yīng)該就象提供提交和恢復(fù)函數(shù)一樣來提供一種建造處理樹的方法。
3)應(yīng)用處理傳播和互用
為了能夠推動協(xié)議的獨(dú)立性,應(yīng)用的互用性,以及提供一種傳播TIP處理上下文的方法,
一種TIP處理上下文信息的標(biāo)準(zhǔn)表達(dá)方式是需要的(以一個(gè)URL的形式)。這個(gè)信息必須
包括TIPTM參與者的監(jiān)聽端點(diǎn)地址以及處理校驗(yàn)符信息。
4)易于實(shí)現(xiàn)
TIP協(xié)議必須能夠簡單地實(shí)現(xiàn)。它應(yīng)該只支持那些具有能提供必需的一個(gè)有用的,可執(zhí)行
的2-pc協(xié)議特征的服務(wù)。此協(xié)議不應(yīng)該以額外的優(yōu)化來增加復(fù)雜性。
5)適用于所有級別的應(yīng)用
TIP協(xié)議應(yīng)該是足夠完整和強(qiáng)壯的,這不僅僅是因?yàn)閕nternet網(wǎng)上的電子商務(wù)的需要,還
由于企業(yè)內(nèi)部網(wǎng)和傳統(tǒng)的跨越異種處理治理器環(huán)境的TP應(yīng)用的需要。這個(gè)協(xié)議應(yīng)該是可執(zhí)
行的和有足夠等級范圍的以符合能力從低到高的應(yīng)用需求。
a.TIP協(xié)議應(yīng)該支持單客戶端處理參與者的概念(用做在低端平臺上超輕量級的實(shí)現(xiàn))。
b.既然一些客戶端是不可靠的,那么TIP必須提供對授權(quán)處理協(xié)調(diào)的支持(一個(gè)更可靠
(可信任的)的節(jié)點(diǎn))。
c.TIP協(xié)議必須在每個(gè)TCP連接上將1到n(>1)個(gè)并發(fā)處理分級。
d.TIP指令應(yīng)該能被連接(可管道連接的)。
e.TIP應(yīng)該和X/OpenXA接口相適應(yīng)。
6)安全
TIP協(xié)議必須和現(xiàn)有的安全機(jī)制相適應(yīng),隱含加密,防火墻以及鑒別機(jī)制(如TLS可以用來
鑒別一個(gè)TIP指令的發(fā)送人,還可以用來給TIP指令加密)。協(xié)議定義沒有任何東西可以阻
止TIP工作在任何安全環(huán)境中。
7)TIP協(xié)議傳輸獨(dú)立
對于某些應(yīng)用來說,答應(yīng)TIP協(xié)議穿越不同的傳輸協(xié)議是有益的。益處在于當(dāng)在為應(yīng)用數(shù)
據(jù)使用不同的傳輸協(xié)議時(shí),TIP2-pc協(xié)議能采用同樣的傳輸。所以TIP不必排除別的傳輸
協(xié)議的使用。
8)恢復(fù)
恢復(fù)語義需要充分定義以避免任何類型通信傳輸失敗事件中的模糊結(jié)果。
9)可擴(kuò)展性
TIP協(xié)議應(yīng)該能夠被擴(kuò)展,同時(shí)保持和先前版本的兼容。
參考
[1]Lyon,J.,Evans,K.,andJ.Klein,"TheTransactionInternet
ProtocolVersion3.0",RFC2371,July1998.
[2]TransactionProcessing:ConceptsandTechniques.Morgan
KaufmannPublishers.(ISBN1-55860-190-2).J.Gray,A.Reuter.
[3]X/OpenCAESpecification,April1995,DistributedTransaction
Processing:TheTXSpecification.(ISBN1-85912-094-6).
[4]X/OpenGuide,November1993,DistributedTransactionProcessing:
ReferenceModelVersion2.(ISBN1-85912-019-9).
[5]X/OpenCAESpecification,December1991,DistributedTransaction
Processing:TheXaspecification.(ISBN1-872630-24-3).
[6]Dierks,T.,et.al.,"TheTLSProtocolVersion1.0",Workin
Progress.
作者的地址
KeithEvans
TandemComputersInc,LOC252-30
5425StevensCreekBlvd
SantaClara,CA95051-7200,USA
Phone:+1(408)2855314
Fax:+1(408)2855245
EMail:Keith.Evans@Tandem.Com
JohannesKlein
TandemComputersInc.
10555RidgeviewCourt
Cupertino,CA95014-0789,USA
Phone:+1(408)2850453
Fax:+1(408)2859818
EMail:Johannes.Klein@Tandem.Com
JimLyon
MicrosoftCorporation
OneMicrosoftWay
Redmond,WA98052-6399,USA
Phone:+1(206)9360867
Fax:+1(206)9367329
EMail:JimLyon@Microsoft.Com
評論
請將有關(guān)本文檔的評論發(fā)到作者的信箱<JimLyon@Microsoft.Com>,
<Keith.Evans@Tandem.Com>,<Johannes.Klein@Tandem.Com>,或者發(fā)到TIP郵件組
<Tip@Tandem.Com>。你可以通過發(fā)mail給<Listserv@Lists.Tandem.Com>來訂閱TIP
郵件組,此mail內(nèi)容中的某一行要注明"subscribetip<fullname>"。
附錄A.一個(gè)TIP處理治理器API的實(shí)例
注重這個(gè)API是為了報(bào)告情況而被單獨(dú)加入本文檔,不是正式TIP的規(guī)范的一部分(用TIP
一致實(shí)現(xiàn)來定義可選擇的API是不受限制的)。
1)tip_open()-建立一個(gè)到一個(gè)TIPTM的連接
概要
inttip_open([out]tip_handle_t*ptiptm)
參數(shù)
ptiptm[out]
到這個(gè)TIPTM句柄的指針
形容
tip_open()建立了一個(gè)到一個(gè)TIPTM的連接。這個(gè)調(diào)用返回了一個(gè)鑒別此TIPTM的句
柄。這個(gè)函數(shù)必須在任何工作被執(zhí)行于一個(gè)TIP處理上之前被調(diào)用。
返回值
[TIPOK]
連接已被成功建立。
[TIPNOTCONNECTED]
使用者已經(jīng)被TIPTM斷開。
[TIPNOTCONFIGURED]
TIPTM還沒有被配置。
[TIPTRANSIENT]
太多的開始者,重試開始。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
2)tip_close()-斷開一個(gè)到一個(gè)TIPTM的連接
概要
inttip_close([in]tip_handle_thandle)
參數(shù)
handle[in]
此TIPTM的句柄
形容
tip_close()斷開一個(gè)到一個(gè)TIPTM的連接。所有和那個(gè)連接聯(lián)結(jié)的待處理要求都被
取消。
返回值
[TIPOK]
連接已被成功斷開。
[TIPINVALIDPARM]
無效的連接句柄指定。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
3)tip_push()-輸出一個(gè)本地處理到一個(gè)遠(yuǎn)端節(jié)點(diǎn)并返回一個(gè)TIP處理校驗(yàn)符給已聯(lián)合
的遠(yuǎn)處處理。
概要
inttip_push([in]tip_handle_tTM,
[in]char*tm_url,
[in]void*plocal_xid,
[out]char*pxid_url,
[in]unsignedinturl_length)
參數(shù)
TM[in]
此TIPTM的句柄
tm_url[in]
到遠(yuǎn)處處理治理器TIPURL的指針。一個(gè)處理治理器的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]
plocal_xid[in]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
pxid_url[out]
到聯(lián)結(jié)遠(yuǎn)處處理TIPURL的指針。一個(gè)處理的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]/<處理標(biāo)識符>
url_length[in]
遠(yuǎn)處處理URL緩存的字節(jié)大小
形容
tip_push()輸出(推)一個(gè)本地處理到遠(yuǎn)端節(jié)點(diǎn)。假如一個(gè)遠(yuǎn)處處理校驗(yàn)符沒有
被提供,則調(diào)用者的當(dāng)前處理上下文被使用。這個(gè)調(diào)用返回一個(gè)TIPURL給已聯(lián)結(jié)
的遠(yuǎn)處處理。這個(gè)TIP處理校驗(yàn)符可能在應(yīng)用請求上被傳遞到遠(yuǎn)處節(jié)點(diǎn)(作為一個(gè)
TIPURL的一部分)。為了代表此處理的利益起作用,接收的進(jìn)程使用這個(gè)信息。
返回值
[TIPOK]
處理已被成功地推到遠(yuǎn)處節(jié)點(diǎn)。
[TIPINVALIDXID]
一個(gè)無效的處理校驗(yàn)符已經(jīng)被提供。
[TIPNOCURRENTTX]
當(dāng)前進(jìn)程沒有和一個(gè)處理相聯(lián)結(jié)。
[TIPINVALIDHANDLE]
無效的連接句柄指定。
[TIPNOTPUSHED]
處理不能被推到遠(yuǎn)處節(jié)點(diǎn)。
[TIPNOTCONNECTED]
調(diào)用者已經(jīng)失去與TIPTM的連接。
[TIPINVALIDURL]
無效的端點(diǎn)URL被提供。
[TIPTRANSIENT]
短暫的錯(cuò)誤發(fā)生,重試操作。
[TIPTRUNCATED]
TIP處理校驗(yàn)符的不足緩沖尺寸被指定。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
4)tip_pull()-創(chuàng)建一個(gè)本地處理并將它與TIP處理連接起來。
概要
inttip_pull([in]tip_handle_tTM,
[in]char*pxid_url,
[out]void*plocal_xid,
[in]unsignedintxid_length)
參數(shù)
TM[in]
此TIPTM的句柄。
pxid_url[in]
到聯(lián)結(jié)遠(yuǎn)處處理TIPURL的指針。一個(gè)處理的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]/<處理校驗(yàn)符>
plocal_xid[out]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
xid_length[in]
本地處理標(biāo)識符緩存的字節(jié)大小。
形容
tip_pull()創(chuàng)建了一個(gè)本地處理并將本地處理和TIP處理連接起來(在此TIP處理中
調(diào)用者成為次一級的參與者)。遠(yuǎn)處的TIPTM通過URL(*pxid_url)來識別。這個(gè)本
地處理的校驗(yàn)符被返回。假如一個(gè)本地處理已經(jīng)為了已提供的TIP處理校驗(yàn)符而創(chuàng)建,
那么[TIPOK]被返回(和本地處理校驗(yàn)符一起),并且沒有別的操作被執(zhí)行。
返回值
[TIPOK]
本地處理已經(jīng)被成功創(chuàng)建,且已和TIP處理連接。
[TIPINVALIDHANDLE]
無效的連接句柄指定。
[TIPTRUNCATED]
本地處理校驗(yàn)符的不足緩沖尺寸被指定。
[TIPNOTPULLED]
本地處理和TIP處理之間的連接已失敗。
[TIPNOTCONNECTED]
調(diào)用者已經(jīng)失去與TIPTM的連接。
[TIPINVALIDURL]
無效的端點(diǎn)URL被提供。
[TIPTRANSIENT]
短暫的錯(cuò)誤發(fā)生,重試操作。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
5)tip_pull_async()-創(chuàng)建了一個(gè)本地處理并將本地處理和TIP處理連接起來.一個(gè)本
地處理一被創(chuàng)建,控制就被返回到調(diào)用者。
概要
inttip_pull_async([in]tip_handle_tTM
[in]char*pxid_url,
[out]void*plocal_xid,
[in]unsignedintxid_length)
參數(shù)
TM[in]
TIP網(wǎng)關(guān)句柄
pxid_url[in]
到聯(lián)結(jié)遠(yuǎn)處處理TIPURL的指針。一個(gè)處理的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]/<處理校驗(yàn)符>
plocal_xid[out]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
xid_length[in]
本地處理標(biāo)識符緩存的字節(jié)大小。
形容
tip_pull()創(chuàng)建了一個(gè)本地處理并將本地處理和TIP處理連接起來(在此TIP處理中
調(diào)用者成為下一級的參與者)。遠(yuǎn)處的TIPTM通過URL(*pxid_url)來校驗(yàn)。這個(gè)本
地處理的校驗(yàn)符被返回。在此本地處理已經(jīng)被創(chuàng)建(在TIPPULL協(xié)議指令發(fā)送之前)
之后,一個(gè)對tip_pull_async()的調(diào)用立即返回。一個(gè)后來的對tip_pull_complete()
的調(diào)用必須得到發(fā)布,用來檢查PULL請求的完成成功與否。
返回值
[TIPOK]
本地處理已被成功創(chuàng)建。
[TIPINVALIDHANDLE]
無效的連接句柄指定。
[TIPNOTCONNECTED]
使用者已經(jīng)失去與TIPTM的連接。
[TIPINVALIDURL]
無效的端點(diǎn)URL被提供。
[TIPTRANSIENT]
短暫的錯(cuò)誤發(fā)生,重試操作。
[TIPTRUNCATED]
本地處理校驗(yàn)符的不足緩沖尺寸被指定。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
6)tip_pull_complete()-檢查一個(gè)先前的tip_pull_async()請求是否已被成功完成。
概要
inttip_pull_complete([in]tip_handle_tTM,
[in]void*plocal_xid)
參數(shù)
TM[in]
此TIPTM的句柄。
plocal_xid[in]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
形容
tip_pull_complete()檢查一個(gè)先前的對tip_pull_async()調(diào)用是否已被成功完成。
即是否本地處理已經(jīng)成功地和TIP處理連接在一起。調(diào)用者提供由先前對
tip_pull_async()的調(diào)用返回的本地處理校驗(yàn)符。對同一個(gè)本地處理校驗(yàn)符的
tip_pull_complete()的重復(fù)調(diào)用是等冪的。
返回值
[TIPOK]
本地處理已成功地和TIP處理連接。
[TIPINVALIDHANDLE]
無效的連接句柄指定。
[TIPINVALIDXID]
一個(gè)無效的處理校驗(yàn)符已經(jīng)被提供。
[TIPNOTPULLED]
和TIP處理相連接的本地處理已經(jīng)失敗。本地處理已經(jīng)被廢棄。
[TIPNOTCONNECTED]
調(diào)用者已經(jīng)失去與TIPTM的連接。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
7)tip_xid_to_url()-返回一個(gè)TIP處理校驗(yàn)符作為一個(gè)本地校驗(yàn)標(biāo)識符。
概要
inttip_xid_to_url([in]tip_handle_tTM,
[in]void*plocal_xid,
[out]char*pxid_url,
[in]unsignedinturl_length)
參數(shù)
TM[in]
此TIPTM的句柄。
plocal_xid[in]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
pxid_url[out]
到本地處理TIPURL的指針。一個(gè)處理的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]/<處理標(biāo)識符>
url_length[in]
TIPURL緩存的字節(jié)大小。
形容
tip_xid_to_url()返回一個(gè)TIP處理校驗(yàn)符作為一個(gè)本地處理校驗(yàn)符。這個(gè)TIP處理
校驗(yàn)符能被傳遞到遠(yuǎn)處應(yīng)用來使它們在處理上起作用。例如,拉本地處理到此遠(yuǎn)處節(jié)
點(diǎn)。假如一個(gè)本地處理校驗(yàn)符沒有被提供,那么調(diào)用者當(dāng)前的處理上下文被使用。常
數(shù)TIPURLSIZE定義了一個(gè)TIP處理校驗(yàn)符的字節(jié)大小。這個(gè)值是實(shí)現(xiàn)的細(xì)節(jié)。
返回值
[TIPOK]
TIP處理標(biāo)識符已被返回。
[TIPNOTCONNECTED]
調(diào)用者已經(jīng)失去與TIPTM的連接。
[TIPNOCURRENTTX]
當(dāng)前的進(jìn)程沒有和一個(gè)處理(且一個(gè)都沒有被提供)相聯(lián)結(jié)。
[TIPINVALIDXID]
一個(gè)無效本地處理校驗(yàn)符已被提供。
[TIPTRUNCATED]
TIP處理校驗(yàn)符的不足緩沖尺寸被指定。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
8)tip_url_to_xid()-返回一個(gè)本地處理校驗(yàn)符作為一個(gè)TIP處理校驗(yàn)符。
概要
inttip_url_to_xid([in]tip_handle_tTM,
[in]char*pxid_url,
[out]void*plocal_xid,
[in]unsignedintxid_length)
參數(shù)
TM[in]
此TIPTM的句柄。
pxid_url[in]
到本地處理TIPURL的指針。一個(gè)處理的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]/<處理標(biāo)識符>
plocal_url[out]
到本地處理校驗(yàn)符的指針。處理校驗(yàn)符的結(jié)構(gòu)是由本地處理治理器來定義的。
xid_length[in]
本地處理校驗(yàn)符緩存的字節(jié)大小。
形容
tip_url_to_xid()返回一個(gè)本地處理校驗(yàn)符作為一個(gè)TIP處理校驗(yàn)符(注重本地處理
必須先前已通過一個(gè)tip_push(),或者tip_pull()(或者tip_pull_async())創(chuàng)建。
常數(shù)TIPXIDSIZE定義了一個(gè)TIP處理校驗(yàn)符的字節(jié)大小。這個(gè)值是實(shí)現(xiàn)的細(xì)節(jié)。
返回值
[TIPOK]
TIP處理校驗(yàn)符已被返回。
[TIPINVALIDURL]
一個(gè)無效TIP處理校驗(yàn)符已被提供。
[TIPTRUNCATED]
本地處理校驗(yàn)符的不足緩沖尺寸被指定。
[TIPERROR]
一個(gè)不期望的錯(cuò)誤發(fā)生。
9)tip_get_tm_url()-以TIPURL的格式得到本地TIP處理治理器的名字。
概要
inttip_get_tm_url([in]tip_handle_tTM,
[out]char*tm_url,
[in]inttm_len);
參數(shù)
TM[in]
此TIPTM句柄。
tm_url[in]
到本地處理治理器TIPURL的指針。一個(gè)處理治理器的TIPURL采用格式:
TIP://<主機(jī)>[:<端口>]
tm_len[out]
本地處理治理器TIPURL緩存的字節(jié)大小。
形容
tip_get_tm_url()以TIPURL的格式得到本地TIP處理治理器的名字(即
TIP://<主機(jī)>[:<端口>])。
返回值
[TIPOK]
本地處理治理器的名字已被成功返回。
[TIPTRUNCATED]
由于緩沖尺寸不足,本地處理治理器的名字已被截短。用更大的緩沖尺寸去重
試操作。
版權(quán)聲明
Copyright(C)TheInternetSociety(1998).AllRightsReserved.
Thisdocumentandtranslationsofitmaybecopiedandfurnishedto
others,andderivativeworksthatcommentonorotherwiseeXPlainit
orassistinitsimplementationmaybeprepared,copied,published
anddistributed,inwholeorinpart,withoutrestrictionofany
kind,providedthattheabovecopyrightnoticeandthisparagraphare
includedonallsUChcopiesandderivativeworks.However,this
documentitselfmaynotbemodifiedinanyway,suchasbyremoving
thecopyrightnoticeorreferencestotheInternetSocietyorother
Internetorganizations,exceptasneededforthepurpoSEOf
developingInternetstandardsinwhichcasetheproceduresfor
copyrightsdefinedintheInternetStandardsprocessmustbe
followed,orasrequiredtotranslateitintolanguagesotherthan
English.
Thelimitedpermissionsgrantedaboveareperpetualandwillnotbe
revokedbytheInternetSocietyoritssuccessorsorassigns.
Thisdocumentandtheinformationcontainedhereinisprovidedonan
"ASIS"basisandTHEINTERNETSOCIETYANDTHEINTERNETENGINEERING
TASKFORCEDISCLAIMSALLWARRANTIES,EXPRESSORIMPLIED,INCLUDING
BUTNOTLIMITEDTOANYWARRANTYTHATTHEUSEOFTHEINFORMATION
HEREINWILLNOTINFRINGEANYRIGHTSORANYIMPLIEDWARRANTIESOF
MERCHANTABILITYORFITNESSFORAPARTICULARPURPOSE.
新聞熱點(diǎn)
疑難解答
圖片精選