1.2 TIPC Address Structures
- name(+Type, +Instance, +Domain)
- A TIPC name address is used by servers to advertise themselves as services in unicast applications, and is used by clients to connect to unicast services. Type, Instance, and Domain are positive integers that are unique to a service.
- name_seq(+Type, +Lower, +Upper)
- A TIPC name-sequence address is used by servers to advertise themselves as services in multicast and "publish and subscribe" applications. Lower and Upper represent a range of instance addresses. Each server will receive exactly one datagram from a client that sends a name-sequence address that matches the server's Type, and where its Lower and Upper instance range intersects the Lower and Upper instance range bound to the server. Clients may send a datagram to any and all interested servers by providing an appropriate name-sequence address to tipc_send/4.
- port_id(+Ref, +Node)
- A TIPC port-id is the socket's private address. It is ephemeral in
nature. It persists only as long as the socket instance persists. Port
ids are generally provided to applications via tipc_receive/4.
An application may discover its own port_id for a socket using
tipc_get_name/2. Generally,
others cannot discover the port-id of a socket, except by receiving
messages originated from it. A server responds to a client by providing
the received port-id as the sender address in a reply message. The
client will receive the server's port-id via his own tipc_receive/4.
The client can then interact with a specific server instance without
having to perform any additional address resolution. The client simply
sends all subsequent messages related to a specific transaction to the
server instance using the port-id received from the server in its
replies.
Sometimes the socket's port-id alone is enough to establish an ad-hoc session anonymously between parent and child processes. The parent instantiates a socket, then forks into two processes. The child retrieves the port-id of the parent from the socket inherited from the parent using tipc_get_name/2, then closes the socket and instantiates a socket of its own. The child sends a message to the parent, on its own socket, using the parent's port-id as the destination address. The port-id received by the parent is unique to a specific instance of child. The handshake is complete; each side knows who the other is, and two-way communication may now proceed. A one-way communication (e.g. a message oriented pipe or mailbox) is also possible using only the socket inherited from the parent, provided that there is exactly one sender and one receiver on the socket. Both parent and child use the socket's own port-id, one side adopts the role of sender, and the other of receiver.