127.0.0.1和localhost有什么区别


157

假设在中定义了以下内容.../hosts

127.0.0.1 localhost

使用127.0.0.1localhost作为服务器名称之间的实际区别是什么(如果有的话),尤其是在访问本地运行的正在侦听连接的进程时?


15
您可以说localhost是独立于协议的,IPv4和IPv6都可以工作。
史蒂夫·

Answers:


122

那么,最有可能的区别是,你还要做一个实际查找localhost地方。

如果您使用127.0.0.1,则(智能)软件将直接将其转换为IP地址并使用它。的某些实现gethostbyname将检测点格式(大概是等效的IPv6格式),并且根本不进行查找。

否则,必须解析名称。并且不能保证您的hosts文件将实际用于该分辨率(首先或根本不使用),因此localhost可能成为完全不同的 IP地址。

我的意思是,在某些系统上,hosts可以绕过本地文件。该host.conf文件在Linux(和许多其他Unices)上对此进行控制。


6
主要区别在于可以通过Unix域套接字建立连接,如下所示:stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
Don Viegues 2014年

/etc/nsswitch.conf如果hosts正在运行nss,则选择是否将DNS或DNS首先用于主机查找。
Mark Lakata

@DonViegues这是MySQL特定的和IMO不良的设计。它将看到localhost并尝试使用unix-socket而不是使用IP进行连接,但对于127.0.0.1,它仅使用IP。
阿曼·奥尔杜卡尼

@ArmanOrdookhani AFAIK如果要通过SSH连接到远程主机,然后从那里连接到MySQL(例如通过SSH隧道到达MySQL服务器),则必须使用127.0.0.1,因为整个过程都是通过TC / IP进行的。但是,如果要在同一台计算机上运行的2个进程要连接,则localhost(unix套接字)的速度更快/有少量开销。谢谢!
Don Viegues

1
@DonViegues是的,是的,Unix套接字的开销比TCP / IP的开销小。我只想提到这种行为是特定于MySQL的,而不是操作系统或网络级别的某些行为。
阿曼·奥尔杜卡尼

36

维基百科对此进行了很好的总结:

在现代计算机系统上,本地主机作为主机名转换为127.0.0.0/8(环回)网络块中的IPv4地址,通常是127.0.0.1或IPv6中的:: 1。

唯一的区别是它将在DNS中查找系统localhost解析的内容。此查找非常非常快。例如,要进入,stackoverflow.com请在地址栏中输入该地址(或使用此处指向的书签)。无论哪种方式,您都是通过主机名到达的。localhost提供类似的功能。


11
这实际上很重要。本地主机可以解析为IPv6地址,而127.0.0.1则不能。在仅IPv6的系统上使用localhost可以工作,而127.0.0.1将无法使用,因为IPv4不可用。
Erwin Jansen

32

一些应用程序将对“ localhost”进行特殊处理。mysql客户端会将本地主机视为连接到本地unix域套接字的请求,而不是使用tcp连接到127.0.0.1上的服务器。这可能更快,并且可能在其他身份验证区域中。

我不知道其他将localhost与127.0.0.1区别对待的应用程序,但是可能有些。


8

好吧,通过IP更快。

基本上,当您通过服务器名称进行调用时,它将转换为原始IP。

但是记住一个IP会很困难,因此创建了域名。

我个人使用http://localhost代替http://127.0.0.1http://username


本地主机速度更快,不使用TCP / IP
Don Viegues

@Don Viegues-您的发言与本主题的其他答案相矛盾。你能详细说明吗?
迪克拉2015年

是的,我将复制并粘贴我的其他评论:主要区别在于可以通过Unix域套接字建立连接,如下所示:stackoverflow.com/questions/3715925/localhost-vs-127-0-0-1
Don Viegues

5
@DonViegues特定于MySQL,它localhost特殊方式处理。其他应用程序可能仍会查找localhost
威廉·丹尼斯

0

没有什么不同。一个比另一个更容易记住。通常,您定义一个名称以与IP地址关联。您不必为127.0.0.1指定本地主机,可以指定任何名称。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.