是否总是可以 ping 本地主机并解析为 127.0.0.1?
我知道 Windows Vista、XP、Ubuntu 和 Debian 会这样做,但每个人都这样做吗?
TCP/IP 的任何正确实现都将保留地址 127.0.0.1 以引用本地计算机。但是,名称“localhost”到该地址的映射通常取决于系统hosts
文件。如果您要从中删除 localhost 条目hosts
,则 localhost 名称可能根本无法正确解析。
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
不,首先localhost
是一种惯例,而不是规则。大多数情况下它是默认设置的,但没有任何强制要求。
其次,没啥好说的,总能ping通127.0.0.1。作为示例(在 unix 系统上)尝试以下操作:
sudo ifconfig lo down
ping 127.0.0.1
正如cruizer所说,127.0.0.1(如果存在)被定义为本地机器。但它不一定存在。
迂腐的答案(抱歉,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
如果您的客户端连接的 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.
我认为 localhost 对于大多数平台来说几乎可以解析为 127.0.0.1 但所有以 127 开头的 IP 。.* 也解析为 localhost。尝试 ping 127.255.255.254,它仍然会响应。
理论上,在某些情况下它可能不存在。在实践中,它总是存在的。
体面的防火墙也允许您过滤环回接口上的访问。因此,可以设置一个防火墙规则,将 icmp ping 数据包丢弃到 localhost (127.0.0.1)。此外,正如其他人已经提到的那样,即使存在 localhost 或 127.0.0.1 地址和环回接口也无法保证。
答案是:
需要 127.0.0.1,通常称为“环回”。尽管您的计算机可能会让您做一些愚蠢的事情,例如禁用它,或者在物理接口上配置该范围,但这些都是无效的。
“localhost”只是一个主机名,按照惯例,应该是 127.0.0.1 作为系统管理员或主机管理员,您应该避免允许 localhost 指向其他地址的配置。
您不应该编辑您的主机文件来更改“localhost”的地址。您应该将您的域配置为具有 localhost。和指向 127.0.0.1 的 localhost.domain.com 条目。
您不应该让您的代理服务器响应“localhost”或任何以 localhost 开头的 FQDN。
行。
它解决它的原因记录在 %WINDOWS_DIR%\System32\drivers\etc\hosts 文件中,如下所示:
127.0.0.1 本地主机