127.0.0.1和localhost之间的区别是什么

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

127.0.0.1 localhost

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

165822 次浏览

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

好吧,最有可能的区别是,你仍然必须在某处执行localhost的实际查找

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

否则,必须解析名称。并且不能保证你的hosts文件在这个分辨率下(第一个,或者根本)会是使用,所以localhost可能会完全变成不同的 IP地址。

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

维基百科总结得很好:

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

唯一的区别是,它将在DNS中为系统查找localhost解析为什么。这个查找非常非常快。例如,要得到stackoverflow.com,你在地址栏中输入它(或使用指向这里的书签)。不管怎样,你是通过一个主机名来的。localhost提供了类似的功能。

嗯,IP更快。

基本上,当您按服务器名调用时,它将被转换为原始IP。

但是要记住一个IP是很困难的,因此域名被创建了。

我个人使用http://localhost而不是http://127.0.0.1http://username

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

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