透明進(jìn)程間通信(Transparent Inter-process Communication,縮寫為TIPC)是一種用于進(jìn)程間通信的網(wǎng)絡(luò)通信協(xié)議,原本是為集群間通信特別設(shè)計(jì)的。它允許設(shè)計(jì)人員能夠創(chuàng)建可以和其它應(yīng)用快速可靠地通信應(yīng)用,無(wú)須考慮在其它需要通信的應(yīng)用在集群環(huán)境中的位置。
歷史TIPC協(xié)議最初由Jon Paul Maloy在Ericsson開發(fā),在逐步分發(fā)到開源社區(qū)之前用于該公司的電信級(jí)集群應(yīng)用已有多年。1
特點(diǎn)TIPC的一些特點(diǎn):
網(wǎng)絡(luò)中服務(wù)的位置透明
自動(dòng)發(fā)現(xiàn)機(jī)制。
可靠傳輸。
標(biāo)準(zhǔn)套接字接口支持。
無(wú)鏈接傳輸,面向鏈接傳輸以及多播消息機(jī)制。
網(wǎng)絡(luò)事件訂閱。
BSD/GPL雙重許可證代碼。1
實(shí)現(xiàn)TIPC項(xiàng)目是TIPC協(xié)議的開源實(shí)現(xiàn)。TIPC項(xiàng)目組正在關(guān)注TIPC的演化,并致力于開發(fā)一個(gè)自由的可移植的TIPC協(xié)議實(shí)現(xiàn)。
在Linux和VxWorks中,TIPC已經(jīng)可用,對(duì)Solaris的支持則正在開發(fā)當(dāng)中。用C或C++編寫的應(yīng)用能夠創(chuàng)建AF_TIPC協(xié)議簇的套接字(Socket)來(lái)使用TIPC協(xié)議,為Perl, Python和Ruby的插件現(xiàn)在也可使用。
TIPC 協(xié)議從Linux kernel版本2.6.16開始已經(jīng)在內(nèi)核支持,也可以作為模塊置于之前版本的內(nèi)核。其他操作系統(tǒng)中也有支持,包括Wind RiverVxWorks和Sun Microsystems的Solaris。2
承載介質(zhì)盡管設(shè)計(jì)之初是要用于任意介質(zhì),目前(2007年10月)的實(shí)現(xiàn)只支持以太網(wǎng).VxWorks實(shí)現(xiàn)也支持共享存儲(chǔ),可以被操作系統(tǒng)的多個(gè)實(shí)例支持,在同一硬件上并發(fā)運(yùn)行。2
鏈路建立一個(gè)TIPC節(jié)點(diǎn)在所有配置的接口上定期廣播Link Request消息,以發(fā)現(xiàn)相鄰的集群節(jié)點(diǎn)。如果一個(gè)以前沒(méi)有建立過(guò)鏈接的節(jié)點(diǎn)收到這樣的消息,它會(huì)返回一個(gè)單播的Link Response消息,這樣就在這兩個(gè)節(jié)點(diǎn)之間建立了一個(gè)鏈接。2
地址模式和大多數(shù)如IP等網(wǎng)絡(luò)協(xié)議不同,地址并不是與接口關(guān)聯(lián),而是和整個(gè)物理節(jié)點(diǎn)關(guān)聯(lián)。一個(gè)節(jié)點(diǎn)也只能擁有整個(gè)網(wǎng)絡(luò)中唯一的一個(gè)地址。
地址模式映射到邏輯網(wǎng)絡(luò)拓?fù)?。易讀的標(biāo)識(shí)為方式,其中Z表示Zone,C代表Cluster,N代表(節(jié)點(diǎn))Node.在內(nèi)部,地址用一個(gè)32位的整數(shù)表示,高8位最高有效位表示Zone,中間12位表示Cluster,最后12位最低有效位表示節(jié)點(diǎn)(Node)。2
通信語(yǔ)義為了適應(yīng)用戶需要,TIPC允許以下4種不同的通信語(yǔ)義:
不可靠無(wú)連接消息(SOCK_DGRAM),類似UDP。
可靠無(wú)鏈接消息(SOCK_RDM)。
可靠面向鏈接消息(SOCK_SEQPACKET)。
可靠面向鏈接字節(jié)流(SOCK_STREAM),類似TCP。2
本詞條內(nèi)容貢獻(xiàn)者為:
李岳陽(yáng) - 副教授 - 江南大學(xué)