127.0.0.1和localhost有什么不同?
假设在.../hosts
定义了以下内容:
127.0.0.1 localhost
什么(如果有的话)是使用127.0.0.1
和localhost
作为服务器名称之间的实际区别,尤其是在本地运行正在侦听连接的进程时?
那么,最可能的区别是,你仍然需要做一个localhost
的实际查找 。
如果您使用127.0.0.1
,那么(智能)软件将直接将其转换为IP地址并使用它。 gethostbyname
一些实现将检测点状格式(大概是等效的IPv6格式),而不是查找。
否则,名称必须解决。 而且不能保证你的hosts
文件实际上会被用于这个分辨率(首先,或者根本不),所以localhost
可能成为一个完全不同的 IP地址。
我的意思是,在某些系统上,本地hosts
文件可以被绕过。 host.conf
文件在Linux(和许多其他的Unices)上控制这个。
维基百科总结得很好:
在现代计算机系统上,localhost作为主机名转换为127.0.0.0/8(环回)networking块中的IPv4地址,通常是127.0.0.1或IPv6中的:: 1。
唯一的区别是,它将查找localhost
parsing到的系统的DNS。 这个查询真的很快。 例如,要进入到stackoverflow.com
你input到地址栏(或使用一个书签在这里指出)。 无论哪种方式,你通过主机名来到这里。 localhost
提供了类似的function。
有些应用程序会特别对待“localhost”。 mysql客户端会将localhost视为连接到本地unix域套接字的请求,而不是使用tcp连接到127.0.0.1上的服务器。 这可能会更快,并可能在不同的身份validation区域中。
我不知道其他的应用程序,对待本地主机不同于127.0.0.1,但可能有一些。
那么,通过IP更快。
基本上,当你通过服务器名称呼叫,它被转换为原始IP。
但是要记住一个IP很困难,因为这个原因是域名被创build的。
我个人使用http://localhost
而不是http://127.0.0.1
或http://username
。
没有什么不同。 一个比另一个更容易记住。 通常,您需要定义一个与IP地址关联的名称。 你不必为127.0.0.1指定localhost,你可以指定任何你想要的名字。
主要区别在于可以通过Unix域套接字进行连接,如下所示: localhost与127.0.0.1