为什么两个IP不同?

时间:2012-08-31 11:27:15

标签: java ip

以下代码段:

<%= InetAddress.getLocalHost() %>

给出了这个: Feddy / 192.168.42.194

但是当我查看网站ipchicken时,我明白这一点: 106.193.214.75

为什么两个IP不同?

8 个答案:

答案 0 :(得分:4)

106.193.214.75是您网络的公共IP地址。

192.168.42.194是您的本地IP地址 - 内部网络中计算机的IP。网络中的每台计算机都具有相同的公共IP地址。

答案 1 :(得分:3)

地址192.168.x.x仅适用于专用内部网络。您可以与互联网通信的事实意味着您还拥有公共IP地址。

路由器的工作是进行网络地址转换,以便您私人网络上的设备全部显示在您的公共地址中。

答案 2 :(得分:2)

服务器位于NAT之后,与公共互联网上使用的IP地址相比,本地提供了一个单独的IP地址。

使用NAT有几个原因,包括安全性和可用公共IPv4地址的限制。

答案 3 :(得分:1)

192.168.xx.xx是您网络上的本地IP。 106.193.xxx是您的外部IP。

您可以使用以下代码获取两者:

        String hostName = InetAddress.getLocalHost().getHostName();

        InetAddress[] addresses = InetAddress.getAllByName(hostName);
         for (InetAddress a: addresses) {
             System.out.println(a.getHostAddress());
         }

答案 4 :(得分:0)

一个是您的本地IP地址(来自您的路由器),另一个是您通过Internet的IP地址。

192.168始终来自路由器

答案 5 :(得分:0)

ip 192.168.42.194是您的本地IP,它由您的路由器提供给您的电脑。

另一个IP是您的WAN IP,它是由您的isp给出的,是您的路由器获取来自外部世界的连接的IP地址

答案 6 :(得分:0)

因为192.168.42.194是您的私人IP,在您的专用网络上,106.193.214.75是您的公用IP,由您的ISP分配给您的网关。

答案 7 :(得分:0)

在JDK 1.6中

List<InetAddress> addrs = new ArrayList<InetAddress>();
for(NetworkInterface ni : NetworkInterface.getNetworkInterfaces()) {
   if(ni.isUp()) {
      for(InetAddress addr : ni.getInetAddresses()) {
        addrs.add(addr);
      }
   }
}

此致