localhost 和 ip 地址的区别

localhost 和 ip 地址的区别

如果将 Python 中的套接字绑定到 localhost,8200,则可以通过以下方式访问http://本地主机:8200/。 但不是http://xxxx:8200/

如果在 Python 中将套接字绑定到 xxxx,8200, machinename,8200,则可以通过以下方式访问http://xxxx:8200/http://机器名:8200/, 但不是http://本地主机:8200/

我以为 localhost 的意思是“这台机器”,使用它会“环回”到机器的 IP 地址,但它似乎是不同的 IP。

127.0.0.1 是否总是与机器的 IP 地址不同的 IP 地址?

更新:

我知道实际数字有所不同,但是环回有什么作用呢?

例如维基百科
'将 Web 浏览器指向 URLhttp://127.0.0.1/或者http://本地主机/将访问该计算机自己的网站'

但是该网站也将在 xxxx 上访问,并且大概在 xxxx 上设置一个套接字,那么这两个参考如何工作?

结论:

我想我终于明白了 127.0.0.1 和 xxxx 是这样工作的

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

并不是

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

或者

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

感谢大家的帮助

答案1

回答你的问题。

127.0.0.1 不仅仅是一个与机器 IP 地址不同的 IP 地址,它还是一个不同的接口。127.0.0.1 不应该在本地网络上看到。它是环回适配器的特殊内部 IP 地址。

xxxx 将是您的以太网卡。

顺便说一下,“localhost”只是 hosts 文件中的一个条目,指向 127.0.0.1

如果将套接字绑定到 127.0.0.1:8200,则只有在本地运行的客户端才能访问它,并且只能使用http://127.0.0.1:8200或者http://本地主机:8200(或指向 127.0.0.1 的 dns 或 hosts 文件条目)。

绑定到 xxxx:8200 的套接字只能通过http://xxxx:8200或指向该地址的 dns 或 hosts 文件条目。

将套接字绑定到 127.0.0.1 不会自动使其在以太网接口上可用。

这就是你无法连接到 xxxx:8200 的原因

您可以将端口 8200 绑定到所有可用接口(0.0.0.0),然后它就可以工作了。

环回适配器的其他特点:

环回接口是一个虚拟接口。它通常用于允许同一台机器上的程序相互通信。它不是引用机器 IP 地址的方法。127.0.0.1 是环回虚拟适配器的 IP 地址。

关于环回适配器的另一个事情是,由于它是虚拟的,所以它实际上不会将任何数据包传递到网卡。

答案2

例如,维基百科说“将网络浏览器指向 URLhttp://127.0.0.1/或者http://本地主机/将访问该计算机自己的网站'

有点不准确。它可能这样做。同样,它可能不会显示任何网站,甚至可能显示与您使用 xxxx 地址时显示的网站不同的内部网站。

127.0.0.1 指向你自己的机器,但这并不意味着它到达你的机器后会以相同的方式运行

如果您想要一个非技术性的类比,您可以将它们视为进入您家的不同门。

两个门都指向同一间房子,但它们并不是一回事。每扇门都可能将您带入同一个房间,也可能将您带入不同的房间。也可以锁上一扇门而不锁上另一扇门。

配置网站时,您可以指定要绑定到哪些地址,通常答案是所有地址。(这相当于所有门都带您进入一个房间)

您还可以指定仅绑定到一个地址的网站。(这相当于锁定了所有门,只留下一扇门。)

如果您有两个(或更多)网站,您可以将它们绑定到不同的地址。(这相当于每扇门都通向不同的房间)。

这两个参考资料的工作原理如下:我的 Windows 7 计算机安装了 IIS,当我进入 IIS 管理器并右键单击“默认网站”时,它会给我一个“编辑绑定”菜单选项。选择该选项会弹出一个绑定列表。我只有一个,但对于 IP 地址,它有 *,这意味着 IIS 监听我的所有 IP 地址。

答案3

系统上的每个 IP 地址都是独立的,可以单独与套接字绑定,但特殊地址 0.0.0.0 除外,该地址指示操作系统将套接字绑定到所有接口。

相关内容