localhost和ip地址的区别

Dav*_*vid 19 tcpip sockets

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

如果将 Python 中的套接字绑定到 xxxx,8200, machinename,8200 可以通过http://xxxx:8200/http://machinename:8200/ 访问,但不能通过http://localhost:8200/

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

127.0.0.1 总是与机器 ip 地址不同的 ip 地址吗?

更新:

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

例如,维基百科
“将 Web 浏览器指向 URL http://127.0.0.1/http://localhost/将访问该计算机自己的网站”

但该网站也可以在 xxxx 上访问,并且大概在 xxxx 上设置了一个套接字 那么这两个引用如何工作呢?

结论:

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

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/
Run Code Online (Sandbox Code Playgroud)

并不是

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer
Run Code Online (Sandbox Code Playgroud)

或者

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer
Run Code Online (Sandbox Code Playgroud)

感谢大家的帮助

hoo*_*enz 20

回答你的问题。

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

xxxx 将是您的以太网卡。

顺便说一句,'localhost' 只是主机文件中指向 127.0.0.1 的一个条目

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

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

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

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

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

环回适配器的其他特性:

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

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