A communication system includes a first endpoint located behind a first
connectivity barrier, such as a firewall or a consumer gateway, and a
second endpoint. A service is arranged to respond to a request from the
first endpoint to establish communications with the second endpoint by
assigning a server to handle a session between the first endpoint and the
service. A session initiated by the second endpoint is established with
the service if the second endpoint is located behind a second
connectivity barrier. If the second endpoint is not located behind a
connectivity barrier, a transport level communications connection can be
established with the second endpoint. In some cases, the service can
instruct the first endpoint to establish a direct session with the second
endpoint.