我在一本书中读到,nslookup
命令用于从域名查找 IP 地址,反之亦然。域名只是给的,names
因为IP Addresses
它比名称更容易记住数字。
当我在浏览器中输入域名时,DNS服务器会解析IP地址来自域名。但是,由于可能有多个网站具有相同的 IP 地址,那么如果我在浏览器中输入的是 IP 地址而不是域名,会发生什么情况?DNS 服务器如何知道我要访问哪个网站?
我列出了五个网站。
它们都有相同的 IP 地址
当我输入nslookup
cmd 时,有时它会返回德里人网, 有时finitecolors.com, 有时垃圾价值网等等。
那么 DNS 如何决定在 cmd 和浏览器中返回哪个域名?
答案1
But as there may be multiple sites that may have the same IP address, so what happened If I type the IP address in the browser instead of the domain name? How does the DNS server know on which website I want to go?
但事实并非如此。
当您使用 nslookup 查找 PTR 记录时,它会返回该 IP 地址的 IP 地址到名称映射,该映射由网络块所有者维护,而不一定(或可能)由网络托管公司维护,甚至可能不存在。
最好的情况是您将获得与该 IP 地址绑定的默认网站。
答案2
您可能需要查看虚拟主机Host
具体来说,基于名称的。简而言之,Web 服务器可以通过查看HTTP 标头来确定您正在请求哪个网站。
当你通过 IP 请求其中任何一个网站时,你都会得到一个默认页面,而不会得到任何一个网站的响应。这是因为 Web 服务器不知道你想访问哪个网站。
答案3
不同的 Web 服务器(IIS/nginx)有不同的方式托管多个 Web 应用,但一个常见的逻辑是,你可以在同一个服务器上托管多个网站(nginx 中的服务器块)。IP:80HTTP 绑定(或 HTTPS 绑定 *IP:443)。
当 HTTP 请求到达时,Web 服务器将检查其 Host 标头,以决定应将此请求分派到哪个网站(或服务器块)。因此,在您的情况下,www.delhians.com
和www.finitecolors.com
将分开托管并接收不同的流量。
因此,如果 URL 中仅使用 IP 地址,则主机名将是 IP 地址,并且它依赖于 Web 服务器配置来决定如何分派请求。通常,您不会为 IP 地址配置站点(服务器块),但 IIS 和 nginx 都允许使用默认站点(服务器块)(catch-all 站点)来处理此类问题。
HTTPS 解释起来更复杂,因为它需要 SNI 设置将证书映射到不同的主机名。
更重要的是,DNS仅由浏览器用来确定应该将HTTP请求发送到哪个IP地址,因此当http://166.62.28.108/如果地址栏中存在,浏览器将不会执行 DNS 查询。