![为什么 HOSTS 文件中需要“127.0.0.1 localhost”?](https://linux22.com/image/1248107/%E4%B8%BA%E4%BB%80%E4%B9%88%20HOSTS%20%E6%96%87%E4%BB%B6%E4%B8%AD%E9%9C%80%E8%A6%81%E2%80%9C127.0.0.1%20localhost%E2%80%9D%EF%BC%9F.png)
我禁用了所有网络连接并 127.0.0.1 localhost
在 HOSTS 文件中进行了删除,但找不到它破坏了什么。我的 IIS 和 MS SQL Server 2008 R2 继续localhost
正常解析
为什么 HOSTS 文件总是包含127.0.0.1 localhost
?
删除此条目会破坏什么?
我在 Windows XP Pro SP3 上写这篇文章,但 HOSTS 文件中仍然没有 localhost。
我应该把它放回去吗?速度有多快?
引起兴趣的原因有很多,例如:
------更新05:
我不会改变问题!我添加了更新。我可以要求停止删除和编辑它,直到我写下我用它钓鱼了吗?例如,刚才我在所有帖子中都写了相同的评论,针对同一点。
这是我的问题/疑问的本质 - DNS 与“localhost”或“127.0.0.222”或“(local)”名称、同义词、别名、链接、地址、ID、令牌等没有任何关系。
它们是同一实体的数百个同义词,并且它们是内部的,Windows 无需任何解析就知道它,因为在这么多同义词之间进行解析是没有意义的!
它们与计算机内部机制相关,而 DNS 是外部的(各个计算机之间)。内部 ID 怎么会依赖于外部 ID?
所有 Windows(包括家庭版)都将具有内部 DNS 服务器才能运行?然后在连接到网络时复制它?
嗯,正如我所说的,评论中的链接没有出现在链接部分。
我提出了一个子问题:
https://stackoverflow.com/questions/3536351/is-localhost-host-resolved-to-127-0-0-1
答案1
hosts 文件仅将规范或完全限定的名称与 IP 地址关联。
例如,我可以:
127.0.0.1 moes-bar-and-grill
然后,任何连接到的设备moes-bar-and-grill
都会与环回设备建立连接,又名127.0.0.1
,通常解析为localhost
。
我也可以(这很常见)
127.0.0.1 annoying-ad-server.com
应用程序将继续工作,因为如果localhost
无法解析,它们将连接到 127.0.0.1(这仍然是一个已配置/启动的接口)。
我不知道为什么您可能想要禁用环回地址,但仅仅取出localhost
主机文件是无法做到这一点的。
编辑
出色地编写的软件在死机之前会多次尝试解决任何问题(解决问题是指解决问题,没有双关语的意思),在某些情况下,即使事情不如预期,它也会继续运行。这并不意味着该软件会像广告中说的那样工作,它只意味着它是由一个非常谨慎的程序员编写的。
非常防御在告诉用户存在严重问题(例如localhost
无法解决)时,并不总是意味着有帮助。我可以编写通过测试的东西,无论什么用户对系统做了一些事情,但这对促进“这行不通!”的事业毫无帮助。两者之间存在着鲜明的差异它运行和有用并且您将只能通过运行每个程序来探索两者之间的差异。
尽管现在一切似乎都很顺利,但我认为你以后可能会遇到麻烦。
免责声明:我靠编写软件谋生。
答案2
hosts 文件是 IP 地址和主机名之间的映射,以便当您键入主机名时,它会解析为指定的地址。
通过删除该行,您可以阻止 Windows 使用“localhost”并将其映射到“127.0.0.1”。
我可以想到两个你认为它“有效”的原因。
- 您尚未重新启动机器,因此映射仍在内存中。
- 您尝试过的应用程序会为您进行映射。
只要 #2 适用,您就不需要它,但是如果您使用没有为您执行映射的应用程序,它就会失败。
因此,综合考虑,你应该把线放回去。不过,你不必急于这么做。
答案3
我相信 Windows 用户熟记和127.0.0.1
(localhost
以及更多其自身的同义词)。答案可能是,它甚至无法在内部解决任何问题。
我将重启后查看它是否失去了解析能力localhost
但为什么会这样呢?
这有什么意义呢?
MS SQL Server 不仅通过localhost
名称解析(连接),还通过(local)
和.
(单符号点)解析(连接)。
因此,localhost
这只是为了方便(用字母代替数字和点)。
从 localhost 到 的转换127.0.0.1
很愚蠢,
因为我从未听说过数字地址(数字)被解析为名称以供计算机内部进一步使用。
现在,我不仅可以通过127.0.0.1
(或localhost
)连接到本地 MSSQLServer,还可以通过 127.0.0.* 范围内的任何地址连接到本地 MSSQLServer(例如,我现在检查是否已通过 127.0.0.2 连接到本地 MSSQLServer)
但是,如果是这样,那么这个 HOSTS 条目到底是什么鬼?
感谢蒂姆·波斯特 (Tim Post) 引导我走向正确的思想并帮助我摆脱困境。