在 IPv6 或 IPv4 套接字中接收外来连接

UNIX 平台在同一个套接字中同时接收 IPv4 和 IPv6 外来连接。 Microsoft Windows 不能在同一个套接字中同时接收外来的 IPv4 和 IPv6 连接。如果禁用 IPv6,那么 Microsoft Windows 只接收 IPv4 连接。如果启用了 IPv6 且端口未绑定到地址,则只接收 IPv6 连接。要接收 IPv4 和 IPv6 连接,请定义两个端口:一个绑定到 IPv4 地址,另一个绑定到 IPv6 地址。这对于 NRPC 非常容易做到,但是迄今为止,因特网服务器只为一个 HCL Notes®端口提供支持。

HCL Domino®支持因特网服务器的两个 Notes® 端口。用户界面在 NOTES.INI 变量 SMTPNotesPort 中指定两个 Notes® 端口名称。例如,

SMTPNotesPort=TCPIP,TCPIP6 

如果任何一个端口关闭(停止端口 tcpip),则因特网服务器立刻关闭两个端口,并重新启动对一个剩余端口的侦听。而且,任何地址的外发连接将在任何 TCP 端口中成功完成。对于外发连接,Domino® 将创建适当的套接字来处理所尝试的目标地址。

使用绑定到 IP 地址的 TCP 端口进行外发连接

进行外发连接的客户机或服务器包含绑定到特定 IP 地址的 TCP 端口时,如果使用 NOTES.INI 设置 SMTPNotesPorts= <TCPIPAddress>,则绑定端口只能进行绑定 IP 地址类型的外发连接。例如,如果服务器将 Notes® Port TCPIP 绑定到 IPV4 地址,并将 Notes® Port TCPIP6 绑定到 IPV6 地址,则端口 TCPIP 只能进行到 IPV4 地址的外发连接,端口 TCPIP6 只能进行到 IPV6 地址的连接。

如果将包含 IPV4 和 IPV6 Notes® 端口的配置绑定到 IP 地址,则“连接”文档中列出的端口必须包含可以进行连接的所有 TCP 端口。例如,如果从 serverA 到 serverB 创建“服务器连接”文档,serverB 的 DNS 名称可以解析为 IPV4 地址和 IPV6 地址,而您又希望连接通过 IPV4 或 IPV6 工作,则必须在“连接”文档中包含两个端口。

何时创建和使用 IPv4 或 IPv6 套接字

使用下列规则集来确定需要使用 IPv4 套接字还是 IPv6 套接字:

  • 进行连接或侦听时,如果未启用 IPv6,则始终创建 IPv4 套接字。
  • 如果使用绑定地址进行连接或侦听,则使用与地址类型匹配的套接字。
  • 进行侦听且未绑定任何地址时,如果启用了 IPv6,则使用 IPv6 套接字。
  • 进行侦听且未绑定任何地址时,如果禁用了 IPv6,则使用 IPv4 套接字。
注: 地址 0 表示侦听器可以侦听任何地址。应用上述规则集时,请注意下列几点:
  • 要创建侦听任何 IPv6 地址的 IPv6 套接字,请不要绑定到某个地址。
  • 要创建侦听任何 IPv4 地址的 IPv4 套接字,请将其绑定到地址 ::ffff:0.0.0.0

UNIX 服务器中,绑定到任何地址的 IPv6 套接字接受所有外来连接;但在 Windows 中,同样的套接字只侦听外来的 IPv6 连接。

Linux 中,如果一个端口绑定到“任何”地址且启用了 IPv6,则第二个端口将无法绑定到特定 IPv4 或 IPv6 地址。如果尝试此操作,将返回地址已经在使用的错误。