是否总是可以ping localhost并将其解析为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框中的示例:
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
正如巡洋舰所说,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