1. Yes. They all go to the same end point (TCP port)
2. Each message, as part of its payload has metadata indicating the subject of the message. Each subject maps to a unique handler on the receiver end.
3. Even when no topology is connected, there is background activity that goes on in the cluster. Examples of this include: heartbeat messages for cluster membership and failure detection, Various store specific messaging such as eventually consistent map (anti-entropy, etc) and consistent map specific messaging (Raft) and there could be other application store specific messaging. Between any 2 controller instances, there are can exist multiple TCP connections. These connections are established on demand and taken down if they are idle for more than 1 min. We use apache commons pool for maintaining the TCP connection pool. It has simple primitives for creating connections on demand and tearing down idle connections. See org.onlab.netty.NettyMessaging for specific implementation details.
Madan.