为什么 getaddrinfo 有时与 "example.com" 和 "www.example.com" 的行为不同?
Why does getaddrinfo sometimes behave differently with "example.com" and "www.example.com"?
这是来自 MSDN 的代码示例:getaddrinfo。
您可以使用"baidu.com"和"www.baidu.com"进行测试。
因为baidu.com和www.baidu.com是不同的地址!
www.example.com 在 DNS 中注册了一条 A 类型记录(或 CNAME,它指向一条 A 记录——这稍微简化了)一条 A 记录是一个名称,在这种情况下 www
指向 IP 地址 12.34.56.78
。 (我相信你已经知道了!)
example.com 也可以注册 A 记录(虽然不是 CNAME),这称为 Apex(或裸体!)域。 example.com的A记录很可能指向123.45.67.89
一点历史
出现这种情况的部分原因是,在互联网早期,服务器的主机名类似于 LOCUS.UC.EDU,因为很难知道 LOCUS 可能提供哪些服务.您可以附加 CNAME FTP.UC.EDU 以指向该机器。这样人们就知道它提供了什么服务。那时,www 只是另一种服务,它在集体意识中没有特殊的位置。 (所有这些都是在互联网发展的一两年内发生的!)但你也很可能希望 bob@UC.EDU 工作。所以 UC.EDU 也需要是主机名
事实上,它仅以主机名开头(以及获得 telexed 的主机记录 - 我很喜欢这个事实) - 但在这种情况下我们将忽略它。
回到事实
通常 - 应该 - 发生的是在 Apex 注册了一个 A 记录,在 www
注册了一个 CNAME 但是当然没有这个要求你可以在你的域中拥有任何你想要的记录。
这是来自 MSDN 的代码示例:getaddrinfo。
您可以使用"baidu.com"和"www.baidu.com"进行测试。
因为baidu.com和www.baidu.com是不同的地址!
www.example.com 在 DNS 中注册了一条 A 类型记录(或 CNAME,它指向一条 A 记录——这稍微简化了)一条 A 记录是一个名称,在这种情况下 www
指向 IP 地址 12.34.56.78
。 (我相信你已经知道了!)
example.com 也可以注册 A 记录(虽然不是 CNAME),这称为 Apex(或裸体!)域。 example.com的A记录很可能指向123.45.67.89
一点历史
出现这种情况的部分原因是,在互联网早期,服务器的主机名类似于 LOCUS.UC.EDU,因为很难知道 LOCUS 可能提供哪些服务.您可以附加 CNAME FTP.UC.EDU 以指向该机器。这样人们就知道它提供了什么服务。那时,www 只是另一种服务,它在集体意识中没有特殊的位置。 (所有这些都是在互联网发展的一两年内发生的!)但你也很可能希望 bob@UC.EDU 工作。所以 UC.EDU 也需要是主机名
事实上,它仅以主机名开头(以及获得 telexed 的主机记录 - 我很喜欢这个事实) - 但在这种情况下我们将忽略它。
回到事实
通常 - 应该 - 发生的是在 Apex 注册了一个 A 记录,在 www
注册了一个 CNAME 但是当然没有这个要求你可以在你的域中拥有任何你想要的记录。