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