我在一本书中读到,nslookup命令用于从域名中查找IP地址,反之亦然。域名只是给names的IP Addresses,因为它是容易记住的名字比数字。
当我在浏览器中键入域名时,DNS服务器将解析域名中的IP地址。但是,由于可能有多个站点可能具有相同的IP地址,所以如果我在浏览器中而不是在域名中键入IP地址,会发生什么情况?DNS服务器如何知道我想去哪个网站?
我列出了五个网站。
www.delhians.com
www.finitecolors.com
www.garbagevalue.com
www.hackchefs.com
www.studentdunya.com
它们都有相同的IP地址。
http://166.62.28.108/
当我在cmd中输入nslookup时,有时它会返回delhians.com,有时返回finitecolors.com,有时返回garbagevalue.com等等。
发布于 2017-05-31 07:34:51
您可能需要查看虚拟主机,特别是基于名称的。简而言之,web服务器可以通过查看Host header来确定您要请求的网站。
当您通过IP请求任何网站时,您将得到一个默认页面,而不是从其中任何一个得到响应。这仅仅是因为web服务器不知道您想访问哪个网站。
发布于 2017-05-31 12:45:56
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地址。
发布于 2022-11-23 02:10:32
不同的web服务器(IIS/nginx)有不同的方式来承载多个web应用程序,但一个常见的逻辑是,您可以在同一个IP:80绑定的HTTP (或*IP:443绑定用于HTTPS)上托管多个站点(nginx中的服务器块)。
当HTTP请求到达时,web服务器将检查其主机头,以决定将该请求发送到哪个网站(或服务器块)。因此,在您的示例中,www.delhians.com和www.finitecolors.com将分别托管并接收不同的通信量。
因此,在您的情况下,如果只在URL中使用IP地址,主机名将是IP地址,它依赖于web服务器配置来决定如何发送请求。通常您不会为IP地址配置站点(服务器块),但是IIS和nginx都允许默认站点(服务器块)(所有捕获站点)来处理这些地址。
HTTPS解释起来更加复杂,因为它需要SNI设置来将证书映射到不同的主机名。
更重要的是,浏览器只使用DNS来确定它应该向哪个IP地址发送HTTP请求,因此当地址栏中存在http://166.62.28.108/时,浏览器将不会执行DNS查询。
https://serverfault.com/questions/853142
复制相似问题