Как определяется маршрут до сервера? Понятно, если как-то запрос дошел до сервера, то вернуть он его сможет, т.к. клиент предоставляет тоннель, по которому пройдет сообщение. Если сервер предоставляет такой же тоннель, то зачем клиент определяет два типа тоннелей входящий/исходящий?