多台计算机使用相同的IP地址


same IP address for multiple computer

我试图使用PHP代码获取用户的IP地址:

$_SERVER["REMOTE_ADDR"];

,当我检查计算机关联到相同的网络,它提供了相同的IP地址为所有的计算机…为什么会这样?我期待不同的ip地址。我怎么能得到不同的ip地址使用php?

IPV4 IP地址数量有限。因此,大多数不运行面向公众的服务器的人使用网络地址转换。

这将涉及他们使用LAN上的计算机(IP位于私有地址空间,如192.168.1.2)和具有LAN IP地址和Internet IP地址的路由器,该路由器在他们和Internet上的服务器之间中继通信。

Internet上的服务器永远只能看到面向Internet的路由器的IP地址。

要查看私有IP地址,您必须在局域网边界内运行软件。从理论上讲,如果您能够说服用户允许一个签名的Java applet执行,那么您可以获取该地址,但即使这样,如果使用多个ip,您也可能会遇到问题。(例如,我目前有一个环回IP,一个以太网IP,一个Wi-Fi IP,并运行两个虚拟机,我的工作站有几个IP供它们连接)。

您的服务器有一个ip,本地网络有一个外部ip(这就是您所看到的)。该网络上的所有计算机都有自己的内部ip。

当一台计算机连接到你的服务器时,它是通过路由器/交换机的IP连接的

当你在同一个局域网时,如果你的路由器使用NAT(大多数路由器都使用NAT),你将有相同的IPv4地址。你对此无能为力,事情就是这样。请注意,如果有人使用IPv6,大多数时候每台计算机都有自己唯一的IP地址。

一点额外注意:你的路由器正在跟踪传出连接,从而确保每个数据包都到达正确的源(内部计算机)。也没有办法追踪它,所以你必须处理它。但也要注意,使用"正常IP地址",加上你使用的代码,它是非常独特的。也许网络中的某些用户具有相同的IP地址,但它是该特定网络的唯一标识符。还要注意,人们可以有动态IPv4地址,这意味着IP地址经常变化。"静态"IP地址是留在网络中的地址。这是由ISP控制的

您的机器可能在网络代理服务器后面。

在这种情况下,您的web服务器位于本地网络之外。它只能从server变量中看到代理服务器的IP地址。