透明进程间通信

透明进程间通信（，缩写为TIPC）是一种用于进程间通信的网络通信协议，原本是为集群间通信特别设计的。它允许设计人员能够创建可以和其它应用快速可靠地通信应用，无须考虑在其它需要通信的应用在集群环境中的位置。

 特点 
TIPC的一些特点：
 网络中服务的位置透明
 自动发现机制。
 可靠传输。
 标准套接字接口支持。
 无链接传输，面向链接传输以及多播消息机制。
 网络事件订阅。
 BSD／GPL双重许可证代码。

 实现 
TIPC项目是TIPC协议的开源实现。TIPC项目组正在关注TIPC的演化，并致力于开发一个自由的可移植的TIPC协议实现。

在Linux和VxWorks中，TIPC已经可用，对Solaris的支持则正在开发当中。用C或C++编写的应用能够创建AF_TIPC协议簇的套接字（Socket）来使用TIPC协议，为Perl, Python和Ruby的插件现在也可使用。

TIPC 协议从Linux kernel版本2.6.16开始已经在内核支持，也可以作为模块置于之前版本的内核。其他操作系统中也有支持，包括Wind River VxWorks和Sun Microsystems的Solaris。

 承载介质 
尽管设计之初是要用于任意介质，目前（2007年10月）的实现只支持以太网.VxWorks实现也支持共享存储，可以被操作系统的多个实例支持，在同一硬件上并发运行。

 相邻节点链路 
 链路建立 
一个TIPC节点在所有配置的接口上定期广播Link Request消息，以发现相邻的集群节点。如果一个以前没有建立过链接的节点收到这样的消息，它会返回一个单播的Link Response消息，这样就在这两个节点之间建立了一个链接.

 链路持续检测 

 逻辑网络拓扑 
逻辑网络拓扑与物理拓扑不一定相同。

 地址模式 
和大多数如IP等网络协议不同，地址并不是与接口关联，而是和整个物理节点关联。一个节点也只能拥有整个网络中唯一的一个地址。

地址模式映射到逻辑网络拓扑。易读的标识为<Z.C.N>方式，其中Z表示Zone,C代表Cluster,N代表（节点）Node.在内部，地址用一个32位的整数表示，高8位最高有效位表示Zone，中间12位表示Cluster,最后12位最低有效位表示节点(Node).

 通信语义 
为了适应用户需要，TIPC允许以下4种不同的通信语义：
 不可靠无连接消息（SOCK_DGRAM），类似UDP。
 可靠无链接消息（SOCK_RDM）。
 可靠面向链接消息（SOCK_SEQPACKET）。
 可靠面向链接字节流（SOCK_STREAM），类似TCP。

 协议操作 

 报丢失检测 

 流控 

 历史 
TIPC协议最初由Jon Paul Maloy在Ericsson开发，在逐步分发到开源社区之前用于该公司的电信级集群应用已有多年。

 参考链接 
 TIPC项目组：http://tipc.sourceforge.net 
 Linux内核：http://www.kernel.org 

Category:并发计算
Category:传输层协议
Category:进程间通信