假设…/hosts中定义如下:
127.0.0.1 localhost
如果有的话,使用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文件。conf文件在Linux(和许多其他unix)上控制这一点。
维基百科总结得很好:
在现代计算机系统中,localhost作为主机名转换为127.0.0.0/8(环回)网块中的IPv4地址,通常是127.0.0.1,或IPv6中的::1。
唯一的区别是,它将在DNS中为系统查找localhost解析为什么。这个查找非常非常快。例如,要访问stackoverflow.com,您可以在地址栏中输入该地址(或使用指向此处的bookmarklet)。不管怎样,你是通过一个主机名来的。Localhost提供了类似的功能。
嗯,IP更快。
基本上,当您按服务器名调用时,它将被转换为原始IP。
但是要记住一个IP是很困难的,因此域名被创建了。
我个人使用http://localhost而不是http://127.0.0.1或http://username。
一些应用程序会特别对待“localhost”。mysql客户端将localhost视为连接到本地Unix域套接字的请求,而不是使用TCP连接到127.0.0.1上的服务器。这可能更快,并且可能位于不同的身份验证区域。
我不知道其他应用程序对待localhost不同于127.0.0.1,但可能有一些。