本地主机和IP地址之间的区别


16

如果将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地址,但它似乎是不同的ip。

是127.0.0.1始终是与机器IP地址不同的IP地址吗?

更新:

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

例如,wikepedia
“将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   ==/

并不是

--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地址”。点之间的数字不同,即IP地址不同。您问的问题真奇怪。如果通过计算机的IP地址,您的意思不是127.0.0.1,则是,那将是另一个IP地址。而且,如果您所说的计算机的IP地址是192.168.0.1(或其他一些标准的本地范围),那么您不必担心。您可以写它而不是xxxx互联网上根本不会存在192个地址。
barlop 2010年

由于Web服务器的配置方式,这两个引用均起作用。您可以告诉服务器绑定到所有地址,或仅侦听特定地址。由于回送和实际IP是不同的地址,因此配置正在确定要侦听的IP。由于localhost只是127.0.0.1的主机项,因此仅当Web服务器绑定到127.0.0.1时,它才起作用。
Peelman 2010年

Answers:


17

回答您的问题。

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或主机文件条目)访问指向127.0.0.1)。

绑定到xxxx:8200的套接字只能通过http:// xxxx:8200或指向该端口的dns或主机文件条目使用。

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

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

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


那么“回送”位有什么作用?它回送给什么?我认为这是一种引用机器ip地址的方法,无论发生什么情况,即127.0.0.1 => xxxx
David

1
回送接口是虚拟接口。它通常用于允许程序在同一台计算机上相互通信。这不是引用机器IP地址的方法。127.0.0.1是回送虚拟适配器的IP地址。
Matt H

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

1
从字面上看,这浪费了4个小时,无法理解这个概念……显然,某些Web服务器会自动为您绑定到xxxx和127.0.0.1,这会引起混乱。伟大的问题和答案的家伙。Thx =)
jrhee17 '16

3

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

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

127.0.0.1指向您自己的计算机,但这并不意味着它在到达您的计算机后将以相同的方式运行

如果您想要一个非技术类比,则可以考虑将它们视为进入您房屋的不同门。

两者都指向同一个房子,但它们不是同一件事。每个门都可以将您带到同一个房间,也可以将您带到另一个房间。也可以锁定一个门而不是另一个。

在配置网站时,您指定要绑定到的地址,答案通常是所有地址。(这相当于让所有门将您带入一个房间)

您还可以指定网站仅绑定到一个地址。(这等效于锁定除一个门以外的所有门。)

如果您有两个(或更多)网站,则可以将它们绑定到单独的地址。(这相当于让每个门进入不同的房间)。

关于这两个引用如何工作的示例,我的Windows 7计算机已安装IIS,当我进入IIS管理器并右键单击“默认网站”时,它为我提供了“编辑绑定”菜单选项。选择该选项将显示绑定列表。我只有一个,但是对于IP地址,它有*,这意味着IIS侦听我所有的IP地址。


打个比方!太谢谢你了!我刚试过 我成功绑定127.0.0.1:5000到一个网站并绑定192.168.1.104:5000到另一个网站。关键在于这address:port意味着房屋(计算机)中的其他房间(服务)。
瑞克(Rick)

1

系统上的每个IP地址都是独立的,可以分别由套接字绑定,唯一的例外是0.0.0.0,该特殊地址指示OS将套接字绑定到所有接口。


1
但是127.0.0.1也是一个特殊的地址,是回送接口的最常见选择。该地址循环回什么地址?
David

但这并不能使其成为“特殊的”,而只是使其成为“回送接口上的地址”(除非您说“每个地址都以其自己的方式是特殊的”,但我们不要去那里了)。进行循环的是接口,而不是地址。
伊格纳西奥·巴斯克斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.