TCP/IP 连接的备用方法

以下主题描述了绕过 TCP/IP 连接的端口和 IP 地址查找的某些方法。

TCP/IP 连接的 IP 地址

对于 TCP/IP 连接(TLI 和套接字),您可以使用 hostname 字段中的实际 IP 地址来代替主机名或 hosts 文件中找到的别名。以下示例显示 hosts 文件中的样本 IP 地址和主机。
#address       hostname  alias
555.12.12.12   smoke
98.555.43.21   odyssey
12.34.56.555   knight    sales
如果对该表中的 knight 使用 IP 地址,以下两个 sqlhosts 条目是等效的:
#dbservername    nettype       hostname      servicename      options
sales           ontlitcp   12.34.56.789   sales_ol   
#dbservername    nettype       hostname      servicename      options
sales   ontlitcp   knight         sales_ol   

使用 IP 地址在某些情况下可能加速连接时间。 但是,由于计算机通常由其主机名标识,因此在主机名字段中使用 IP 地址不便于标识与条目相关联的计算机。

UNIX: 您可以在 hosts 文件的网络地址字段中查找 IP 地址,或者您可以使用 UNIX ™ arpypmatch 命令查找 IP 地址。

TCP/IP 连接的通配符寻址

同时满足以下两个条件时,可以在 hosts 文件的 hostname 字段中使用通配符寻址:
  • 您使用的是 TCP/IP 连接。
  • 数据库服务器所在的计算机使用多块网络接口卡 (NIC)。

如果满足上述条件,您可以在数据库服务器使用的 hostname 字段中使用星号 (*) 作为通配符。当您在 hostname 字段中输入一个通配符时,数据库服务器可以在其主计算机上接受任何有效 IP 地址的连接。

每个 IP 地址都与唯一的主机名相关联。计算机使用多个 NIC 时(如下表中所示),hosts 文件必须针对每个接口卡具有一个条目。例如,使用两个 NIC 的 texas 计算机的 hosts 文件中可能包含以下条目。
#address       hostname   alias
123.45.67.81   texas1
123.45.67.82   texas2

如果客户机应用程序和数据库服务器共享 sqlhosts 信息,那么可以在 hostname 字段中同时指定通配符和主机名或 IP 地址(例如,*texas1*123.45.67.81)。 客户机应用程序忽略通配符并使用主机名(或 IP 地址)来建立连接,并且数据库服务器使用通配符从任何 IP 地址接受连接。

通配符格式允许数据库服务器的侦听线程等待每块有效的网络接口卡上使用相同服务端口号的客户机连接。但是,等待多个 IP 地址的连接可能比等待特定主机名或 IP 地址的连接所需处理器时间更长。

下图显示具有两块网络接口卡的计算机 texas 上的数据库服务器。这两个客户机站点使用不同的网卡与数据库服务器通信。

图: 使用多块网络接口卡


本图在周围文本中进行了描述。
以下示例显示了 texas_srvr 数据库服务器可能的 sqlhosts 连接信息。
#dbservername    nettype       hostname      servicename      options
texas_srvr      ontlitcp   *texas1         pd1_on
#dbservername    nettype       hostname      servicename      options
texas_srvr      ontlitcp   *123.45.67.81   pd1_on
#dbservername    nettype       hostname      servicename      options
texas_srvr      ontlitcp   *texas2         pd1_on
#dbservername    nettype       hostname      servicename      options
texas_srvr      ontlitcp   *123.45.67.82   pd1_on
#dbservername    nettype       hostname      servicename      options
texas_srvr      ontlitcp   *               pd1_on
如果连接信息与前面任意一行的内容一致,那么 texas_srvr 数据库服务器就可以接受来自其中任意一块网卡的客户机连接。数据库服务器将在 hostname 字段中查找通配符并忽略显式的主机名。
提示: 为了清晰简便地维护,在主机名字段中使用通配符时,请包含主机名(即,使用 *host,而不是 *)。

客户机应用程序使用的连接信息必须包含显式的主机名或 IP 地址。iowa 上的客户机应用程序可以使用下列主机名中的任何一个:texas1*texas1123.45.67.81*123.45.67.81。如果 hostname 字段中有通配符 (*),客户机应用程序会将其忽略。

kansas 上的客户机应用程序可以使用下列主机名中的任何一个:texas2*texas2123.45.67.82*123.45.67.82

TCP/IP 连接的端口号

对于 TCP/IP 网络协议,可以在服务名称字段中使用实际的 TCP 侦听端口号。

例如,如果在 services 文件中,sales 数据库服务器的端口号是 1543,那么可以在 sqlhosts 文件中写入一个条目,如下所示:
#dbservername    nettype       hostname      servicename      options
sales           ontlitcp   knight     1543

在有些情况下,使用实际端口号可能会节省建立连接的时间。但是,对于 hostname 字段中的 IP 地址,使用实际端口号可能不便于对连接信息的管理。