127.0.0.1和localhost有什么区别

时间:2011-09-12 01:45:42

标签: sockets networking dns localhost

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

127.0.0.1 localhost

使用127.0.0.1localhost作为服务器名称之间的实际差异(如果有的话)是什么,特别是当遇到正在侦听连接的本地运行的进程时?

6 个答案:

答案 0 :(得分:96)

嗯,最可能的区别是您仍然需要在某处进行localhost的实际查找

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

否则,必须解析名称。并且无法保证您的hosts文件实际上将用于用于该解决方案(首先或根本不用),因此localhost可能会变得完全不同 IP地址。

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

答案 1 :(得分:31)

Wikipedia sums this up well:

  

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

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

答案 2 :(得分:28)

某些应用程序会特别对待“localhost”。 mysql客户端将localhost视为连接到本地unix域套接字的请求,而不是使用tcp连接到127.0.0.1上的服务器。这可能更快,并且可能位于不同的身份验证区域。

我不知道其他应用程序对待localhost的方式与127.0.0.1不同,但可能有一些。

答案 3 :(得分:7)

嗯,通过IP更快。

基本上,当您通过服务器名称呼叫时,它将转换为原始IP。

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:-4)

主要区别在于连接可以通过Unix Domain Socket进行,如下所述:localhost vs. 127.0.0.1