主机localhost是否始终可用于自己的系统?

Tho*_*aaf 3 ping localhost

是否总是可以ping localhost并将其解析为127.0.0.1?

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

Gre*_*ill 16

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

  • 我认为依赖现有的"localhost"别名是安全的,因为它在任何现代操作系统中默认设置.用户必须实际*从主机列表中删除*它,并且没有必要担心用户可以破坏他们的计算机的方式. (3认同)
  • Greg指的是'localhost'名称,而不是环回设备.两件不同的事情. (2认同)

Tho*_*n79 6

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
Run Code Online (Sandbox Code Playgroud)


And*_*mbe 5

不.首先localhost是一个约定而不是一个规则.大多数情况下它是默认设置的,但没有什么可以强制执行的.

其次,没有什么可以说你总能ping 127.0.0.1.作为示例(在unix系统上),请尝试以下操作:

sudo ifconfig lo down ping 127.0.0.1

正如巡洋舰所说,127.0.0.1(如果存在)被定义为本地机器.但它不一定存在.


小智 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].
Run Code Online (Sandbox Code Playgroud)

(上面的"通常"应该被解读为"经常" - 大多数当前的操作系统都支持使用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
Run Code Online (Sandbox Code Playgroud)