A connect string is simply a user defined alias. It is an alias to a longer connect string that tells the software how to connect over the network to a database.
A sid is the Site Identifier. It, plus the oracle_home, uniquely identify a database instance on a single machine. If you are on the machine with the database, you only need the oracle_sid and oracle_home to get connected directly.
A dbname is the name of the database, it typically is not relevant.
The instance name is generally the sid.
You can definitely have dozens of connect strings for the same database. They could specify the same or different connect time options.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
enabled OS authentication on windows.
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
says when you get: scott/tiger@db
use the local tnsnames.ora file to try and resolve db, if not found, then use Oracle Names to resolve it, if not found, then using hostname naming to resolve it (that involves connecting to a machine named DB on the default port 1521)
The instance name is the SID
for mts/dedicated see
</code>
http://docs.oracle.com/cd/A81042_01/DOC/network.816/a76933/concepts.htm#1011542 <code>
...