为什么两个IP不同

  • 本文关键字:两个 IP 不同 java ip
  • 更新时间 :
  • 英文 :


以下片段:

<%= InetAddress.getLocalHost() %>

给出了这个:Feddy192.168.42.194

但是当我查看ipchicken网站时,我得到的是:106.193.214.75

为什么这两个IP不同?

106.193.214.75是网络的公共IP地址。

192.168.42.194是您的本地IP地址——机器在内部网络中的IP。网络中的每台机器都有相同的公共IP地址。

地址192.168.x.x仅用于专用内部网络。事实上,你可以与互联网交谈,这意味着你也有一个公共IP地址。

路由器的工作是进行网络地址转换,以便您在专用网络上的设备都显示您的公共地址。

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

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

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());
         }

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

另一个ip是您的WAN ip,它由您的isp提供,是您的路由器从外部世界连接时获得的ip地址

因为192.168.42.194是您的专用ip,位于您的专用网络上,而106.193.214.75是您的公共ip,由您的ISP分配给您的网关。

在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);
      }
   }
}

问候,

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

192.168总是来自路由器

最新更新