This different connection "types" (server -> cl, server -> server) are handled best with a peer architecture. This means that there are only peers which can connect to any other peer. From my experience I know that this makes multi-server system a lot easier ( compared to other solutions like interprocess communication ).