4

是否总是可以 ping 本地主机并解析为 127.0.0.1?

我知道 Windows Vista、XP、Ubuntu 和 Debian 会这样做,但每个人都这样做吗?

4

10 回答 10

17

TCP/IP 的任何正确实现都将保留地址 127.0.0.1 以引用本地计算机。但是,名称“localhost”到该地址的映射通常取决于系统hosts文件。如果您要从中删除 localhost 条目hosts,则 localhost 名称可能根本无法正确解析。

于 2008-09-22T05:24:00.073 回答
6

127.0.0.1 在任何 IP 堆栈中为本地主机保留。

不能保证“localhost”作为主机名存在。如果主机/DNS 设置配置错误,localhost 将无法解析。

debian box 上的示例:

topaz:/root# vi /etc/hosts
[comment out localhost entry]

topaz:/root# ping localhost 
ping: unknown host localhost
于 2008-09-22T05:30:35.503 回答
5

不,首先localhost是一种惯例,而不是规则。大多数情况下它是默认设置的,但没有任何强制要求。

其次,没啥好说的,总能ping通127.0.0.1。作为示例(在 unix 系统上)尝试以下操作:

sudo ifconfig lo down ping 127.0.0.1

正如cruizer所说,127.0.0.1(如果存在)被定义为本地机器。但它不一定存在。

于 2008-09-22T06:03:44.750 回答
5

迂腐的答案(抱歉,Greg :) 是阅读RFC 3330

   127.0.0.0/8 - This block is assigned for use as the Internet host
   loopback address.  A datagram sent by a higher level protocol to an
   address anywhere within this block should loop back inside the host.
   This is ordinarily implemented using only 127.0.0.1/32 for loopback,
   but no addresses within this block should ever appear on any network
   anywhere [RFC1700, page 5].

(上面的“通常”应该读作“经常”——大多数当前的操作系统都支持使用所有 127.0.0.0/8 作为环回。)

关于“localhost”是否总是解析为 127.0.0.1 - 他是正确的,它通常是相同的,但在技术上是特定于实现的:

~> dig localhost.t...e.org

...

;; ANSWER SECTION:
localhost.t...e.org. 86400 IN    A       127.0.0.2
于 2008-09-22T06:29:13.817 回答
1

如果您的客户端连接的 DNS 服务器遵循 rfc1912,那么是的,localhost 应该解析为 127.0.0.1。

RFC1912
4.1
...
   Certain zones should **always be present** in nameserver configurations:
           primary         localhost               localhost
           primary         0.0.127.in-addr.arpa    127.0
...
   The "localhost" address is a "special" address which always refers to
   the local host.  It should contain the following line:

           localhost.      IN      A       127.0.0.1

   The "127.0" file should contain the line:

           1    PTR     localhost.
于 2008-09-22T07:59:10.573 回答
0

我认为 localhost 对于大多数平台来说几乎可以解析为 127.0.0.1 但所有以 127 开头的 IP .* 也解析为 localhost。尝试 ping 127.255.255.254,它仍然会响应。

于 2008-09-22T05:24:11.743 回答
0

理论上,在某些情况下它可能不存在。在实践中,它总是存在的。

于 2008-09-22T05:27:35.913 回答
0

体面的防火墙也允许您过滤环回接口上的访问。因此,可以设置一个防火墙规则,将 icmp ping 数据包丢弃到 localhost (127.0.0.1)。此外,正如其他人已经提到的那样,即使存在 localhost 或 127.0.0.1 地址和环回接口也无法保证。

于 2008-09-22T08:16:49.783 回答
0

答案是:

需要 127.0.0.1,通常称为“环回”。尽管您的计算机可能会让您做一些愚蠢的事情,例如禁用它,或者在物理接口上配置该范围,但这些都是无效的。

“localhost”只是一个主机名,按照惯例,应该是 127.0.0.1 作为系统管理员或主机管理员,您应该避免允许 localhost 指向其他地址的配置。

您不应该编辑您的主机文件来更改“localhost”的地址。您应该将您的域配置为具有 localhost。和指向 127.0.0.1 的 localhost.domain.com 条目。

您不应该让您的代理服务器响应“localhost”或任何以 localhost 开头的 FQDN。

于 2008-09-29T04:43:15.000 回答
-3

行。

它解决它的原因记录在 %WINDOWS_DIR%\System32\drivers\etc\hosts 文件中,如下所示:

127.0.0.1 本地主机

于 2008-09-22T05:28:27.800 回答