2011-08-04 202 views
13

本地主机和真实IP地址有什么区别?本地主机vs真实IP地址

如果我通过使用http://localhost:8080/index.htmlhttp://192.123.456.001:8080/index.html(例如,192.123.456.001是主机的真实IP地址)访问应用程序,有什么区别?

+15

* 192.123.456.001 *不是一个真正的IP地址:-) –

回答

19

当您访问localhost时,您的/etc/hosts文件会告诉您的计算机不要再查看并将您重定向到您自己的计算机。当您访问本地IP地址时,您的计算机将要求路由器获取数据,然后您的路由器将指向您的计算机。

1

维基百科,相关点:

与作为 与网络上的另一计算机以相同的方式环回接口通信,但绕过本地网络 接口硬件,为的目的是有用的测试软件。

可以通过环回地址以高效的方式执行连接到本地托管的网络服务,例如计算机游戏服务器,或者用于其它进程间通信,可以执行 。

http://en.wikipedia.org/wiki/Localhost

+0

虽然,这将是很高兴知道*如何*这是“高效的方式”。程序员是否有效地不考虑服务器地址?服务器是否有效地不必查找地址?都?我认为这就是最初的海报所要求的。 – Skotte

+1

@Skotte网络遵循OSI 7层模型,运行环回允许操作系统通过跳过层来优化事物。在现代操作系统和TCP/IP上,区别应该与本地路由表中的查询一样简单。 –

0

所不同的是,当你建立一个监听套接字(等待连接),你必须告诉它要绑定到的地址。这同样适用于所有常用Web服务器的网站配置。

通常情况下,您只需绑定到任何地址,这意味着您可以通过127.0.0.1或192.xxx或机器碰巧拥有的任何其他IP地址访问它,但偶尔您可能需要绑定到特定的地址 - 例如如果您在一台机器上有4个公共IP,您可能希望在特定IP上拥有特定站点。

3

除了其他答案,您可以遇到使用本地主机的神秘问题。

一个示例:如果您在地址栏中输入http://localhost,则Windows上的IE会生成一个快捷方式。当您开发Web应用程序并安装本地代理(例如Fiddler)以查看在本地运行的客户端网页和服务器之间传递的消息时,这会成为问题 - 消息不会被捕获,因为它不会通过在这种情况下的代理。这使得在您的应用程序中发现仅限IE的错误有点不方便... ;-)