这纯粹是出于好奇。但是,如果我输入网站的 IP,请求是否仍会经过正向查找过程?如果不是,在什么时候、通过哪一步才意识到这是 IP 位置,而不是字符串形式的主机名?
另外,这将如何记录在我的主机文件中?如果它经历了整个查找过程,主机文件是否会包含字符串主机名以及 IP 并在本地填充?
答案1
如果您使用 IP 地址,操作系统将立即知道它是一个 IP 地址,并且不会进行正向查找。
当您发出 HTTP 请求时,第一步是获取目标的 IP 地址,以便浏览器可以与服务器通信。对于与服务器的通信,一切都通过 IP 进行,从一个 IP 地址到另一个 IP 地址,因此此通信不需要服务器的名称。但是,Host:
如果 Web 服务器托管多个网站,则会将其作为标头传递到 HTTP 标头中,以便让 Web 服务器知道您要访问哪个网站。
如果通过 IP 地址访问,则不会发生这种情况,而是显示默认站点。
您的hosts
文件是一个静态文件,它不会因您采取的任何操作而改变,除非您直接编辑它(或有修改它的脚本或应用程序)。
答案2
正如其他人所写,通过使用 IP 地址,您确实跳过了 DNS,从而无需使用主机名即可访问开发站点。
对于开发网站来说,将 IP - 模拟主机名添加到 /etc/hosts 中也是非常常见的。与直接使用 IP 地址不同,这将 a) 仍然跳过 DNS b) 使浏览器将Host
请求标头添加到 HTTP 请求中,例如允许本地服务器上的虚拟主机。