假设.../hosts
中定义了以下内容:
127.0.0.1 localhost
使用127.0.0.1
和localhost
作为服务器名称之间的实际差异(如果有的话)是什么,特别是当遇到正在侦听连接的本地运行的进程时?
答案 0 :(得分:96)
嗯,最可能的区别是您仍然需要在某处进行localhost
的实际查找。
如果您使用127.0.0.1
,则(智能)软件会直接将其转换为IP地址并使用它。 gethostbyname
的某些实现将检测点状格式(可能是等效的IPv6格式),而不是进行查找。
否则,必须解析名称。并且无法保证您的hosts
文件实际上将用于用于该解决方案(首先或根本不用),因此localhost
可能会变得完全不同 IP地址。
我的意思是,在某些系统上,可以绕过本地hosts
文件。 host.conf
文件在Linux(以及许多其他Unices)上控制它。
答案 1 :(得分:31)
在现代计算机系统上,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.1
或http://username
。
答案 4 :(得分:0)
没有什么不同。一个比另一个更容易记住。通常,您定义要与IP地址关联的名称。您不必为127.0.0.1指定localhost,您可以指定任何您想要的名称。
答案 5 :(得分:-4)
主要区别在于连接可以通过Unix Domain Socket进行,如下所述:localhost vs. 127.0.0.1