公网IP and 局域网IP

Part 1 Java获取公网IP

在Java中获取公网IP地址(即外部IP地址,而非局域网地址)通常需要借助外部服务,因为Java本身没有直接获取公网IP地址的API。你可以通过向一个外部服务发送HTTP请求,然后解析其返回的响应来获取公网IP地址。

以下是一个示例代码,展示了如何通过调用一个外部API来获取公网IP地址:

import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.net.HttpURLConnection;  
import java.net.URL;  public class PublicIPAddress {  public static void main(String[] args) {  try {  // 使用一个公共的API来获取公网IP地址,比如 ifconfig.me 或者 ipecho.net  String urlString = "http://ifconfig.me"; // 或者 "http://ipecho.net/plain"  URL url = new URL(urlString);  HttpURLConnection connection = (HttpURLConnection) url.openConnection();  connection.setRequestMethod("GET");  // 读取响应  BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));  String inputLine;  StringBuilder response = new StringBuilder();  while ((inputLine = in.readLine()) != null) {  response.append(inputLine);  }  in.close();  // 打印公网IP地址  String publicIPAddress = response.toString().trim();  System.out.println("Public IP Address: " + publicIPAddress);  } catch (Exception e) {  e.printStackTrace();  }  }  
}

解释

  1. URLhttp://ifconfig.me 和 http://ipecho.net/plain 是两个常用的公共API,它们会返回你当前的公网IP地址。
  2. HttpURLConnection: 用于发送HTTP GET请求到指定的URL。
  3. BufferedReader: 用于读取HTTP响应的内容。
  4. StringBuilder: 用于构建最终的响应字符串。

注意事项

  • 外部服务可靠性: 确保你选择的API服务是可靠的,并且不会因为频繁访问而被限制或封禁。
  • 网络延迟: 调用外部服务可能会有一定的网络延迟,尤其是在网络状况不佳的情况下。
  • 隐私: 调用这些服务意味着你的公网IP地址会被这些服务的提供者知道。

通过这种方式,你可以获取到当前机器的公网IP地址,而不仅仅是局域网地址。

可以使用如下网址验证

Trusted IP Data Provider, from IPv6 to IPv4 - IPinfo.io

Part 2,Java获取IP

获取调用方的公网IP地址在Java环境中通常涉及解析HTTP请求的头信息。以下是一些常用的方法和步骤来获取调用方的公网IP地址:

方法一:通过HttpServletRequest对象获取

在Java Web环境中,HttpServletRequest对象包含了客户端请求的所有信息,包括IP地址。你可以使用以下步骤来获取公网IP:

  1. 检查代理头信息:如果请求是通过代理服务器或负载均衡器发送的,X-Forwarded-For头信息通常会包含真实的客户端IP地址。首先检查这个头信息是否存在并且不为空。

  2. 使用备用头信息:如果X-Forwarded-For头信息不存在或为空,你可以尝试检查其他可能的头信息,如Proxy-Client-IPWL-Proxy-Client-IP(WebLogic Server特有的头信息)。

  3. 获取直接连接的IP地址:如果上述头信息都不存在,你可以使用HttpServletRequestgetRemoteAddr()方法获取直接连接到服务器的客户端IP地址。但请注意,这个方法在存在代理的情况下可能会返回代理服务器的IP地址。

  4. 处理多个IP地址:如果X-Forwarded-For头信息包含多个IP地址(由逗号分隔),通常第一个IP地址是真实的客户端IP地址。

方法二:示例代码

以下是一个Java代码示例,展示了如何获取调用方的公网IP地址:

import javax.servlet.http.HttpServletRequest;  public class IpUtil {  public static String getClientIp(HttpServletRequest request) {  String ip = request.getHeader("X-Forwarded-For");  if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {  ip = request.getHeader("Proxy-Client-IP");  }  if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {  ip = request.getHeader("WL-Proxy-Client-IP");  }  if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {  ip = request.getRemoteAddr();  }  // 如果有多个IP地址,则取第一个(通常是用户真实IP)  if (ip != null && ip.contains(",")) {  ip = ip.split(",")[0];  }  return ip;  }  
}

然后,你可以在一个Servlet中使用这个工具类来获取并处理调用方的IP地址:

import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import java.io.IOException;  public class IpServlet extends HttpServlet {  @Override  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  String clientIp = IpUtil.getClientIp(request);  response.getWriter().write("Client IP: " + clientIp);  }  
}

注意事项

  • 安全性:确保你的应用能够正确处理代理头信息,以防止IP伪造攻击。
  • 隐私:获取并存储用户IP地址可能涉及隐私问题,确保你的应用符合相关的隐私政策和法规。
  • 日志记录:将获取到的IP地址记录在日志中可以帮助你进行安全监控和故障排查。

通过以上方法和注意事项,你可以有效地在Java Web环境中获取调用方的公网IP地址。

Part 3,局域网IP vs 公网IP

局域网IP(Local Area Network IP)与公网IP(Public Network IP)在计算机网络中扮演着不同的角色,它们之间存在显著的差异。以下是对这两种IP地址的详细比较:

一、定义与范围

  1. 局域网IP
    • 局域网IP是在局域网(LAN)内部使用的IP地址。
    • 它用于在局域网内部标识和通信局域网内的设备。
    • 常见的局域网IP地址范围包括RFC 1918规定的三类地址:10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255、192.168.0.0 - 192.168.255.255。
  2. 公网IP
    • 公网IP也称为外网IP,是由互联网服务提供商(ISP)分配的,用于在互联网上唯一标识一台设备的IP地址。
    • 公网IP地址是全球唯一的,由IANA(互联网号码分配机构)分配,并通过ISP提供给用户。
    • 常见的公网IP地址范围包括除局域网IP地址范围之外的所有地址。

二、功能与用途

  1. 局域网IP
    • 主要用于局域网内部设备之间的通信。
    • 设备通过局域网IP地址在局域网内部相互访问和传输数据。
    • 局域网IP地址不能直接访问互联网,需要通过路由器或网关进行NAT(网络地址转换)才能访问外部网络。
  2. 公网IP
    • 用于设备在互联网上进行通信和访问。
    • 拥有公网IP地址的设备可以直接访问互联网上的其他设备和服务。
    • 公网IP地址适用于需要被外界访问的服务,如Web服务器、邮件服务器等。

三、安全性与隐私

  1. 局域网IP
    • 由于局域网IP地址仅在局域网内部使用,因此相对较为安全。
    • 但如果局域网内部存在安全漏洞或不当配置,也可能导致局域网内的设备受到攻击。
  2. 公网IP
    • 公网IP地址直接暴露在互联网上,因此需要考虑网络安全性。
    • 需要采取适当的防火墙和安全措施来保护拥有公网IP地址的设备不受未经授权的访问和攻击。

四、获取与配置

  1. 局域网IP
    • 局域网IP地址通常由路由器或交换机在设备连接到局域网时自动分配(如通过DHCP协议)。
    • 用户也可以手动配置局域网IP地址,但需要注意避免地址冲突。
  2. 公网IP
    • 公网IP地址由ISP分配,用户需要向ISP申请才能获得。
    • 对于需要固定公网IP地址的服务,用户需要与ISP协商并支付额外的费用。
    • 用户还可以通过动态DNS(DDNS)服务将动态变化的公网IP地址映射到一个易记的域名上,以便更方便地访问和管理服务。

综上所述,局域网IP与公网IP在定义、范围、功能、用途、安全性以及获取与配置等方面都存在显著的差异。了解这些差异有助于用户更好地管理网络设备和配置网络服务。

Part 4,判断是否是局域网域名

117.131.6.170是一个公网IP地址。判断一个IP地址是局域网IP还是公网IP,主要依据其地址范围和功能用途。

首先,局域网IP地址通常用于内部网络通信,如家庭网络、公司内网等,它们不直接连接到互联网。常见的局域网IP地址范围包括10.x.x.x、172.16.x.x至172.31.x.x以及192.168.x.x等。这些地址在局域网内部是唯一的,但在互联网上不是唯一的,因此不能用于互联网通信。

而公网IP地址是由互联网服务提供商(ISP)分配的,用于在互联网上唯一标识一台设备。这些地址是全球唯一的,可以被互联网上的任何设备访问。

对于117.131.6.170这个IP地址,它不在任何局域网IP地址范围内,因此可以判断它是一个公网IP地址。这个地址可以被互联网上的其他设备访问和通信。

综上所述,117.131.6.170是一个公网IP地址,而不是局域网IP地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA毕业设计191—基于Java+Springboot+vue的电子产品商城管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue的电子产品商城管理系统(源代码数据库)191 一、系统介绍 本项目前后端不分离,分为用户、管理员两种角色 1、用户: 注册、登录、商品…

C++设计模式——代理模式

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言代理模式的定义代理模式的具体实现 引言 我们经常听到代理服务器「代理服务器是一个中间服务器,能够接收客户端的请求,并代表客户端向服务器发起请求,然后将服…

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单)

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单) 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用…

git stash命令的使用

工作中,若正在一个分支进行开发,而另一个分支出现bug,这时候,不想commit代码,我们就可以使用git stash将代码暂时存储起来,git stash就相当于一个临时暂存区,这样git status就会发现工作区是干净…

YOLOv10改进策略【注意力机制篇】| 2024 SCSA-CBAM 空间和通道的协同注意模块

一、本文介绍 本文记录的是基于SCSA-CBAM注意力模块的YOLOv10目标检测改进方法研究。现有注意力方法在空间-通道协同方面未充分挖掘其潜力,缺乏对多语义信息的充分利用来引导特征和缓解语义差异。SCSA-CBAM注意力模块构建一个空间-通道协同机制,使空间注意力引导通道注意力增…

HTTP 协议详解

HTTP 协议是 Web 的基石,它定义了客户端和服务器之间的通信规则。本文将深入地探讨 HTTP 的核心概念,包括工作原理、请求方法、状态码以及不同 HTTP 版本的演进。 一、HTTP 的工作原理 HTTP 协议基于客户端-服务器模型,遵循请求-响应的循环&…

opencv学习:CascadeClassifier和detectMultiScale算法进行人脸识别

CascadeClassifier CascadeClassifier 是 OpenCV 提供的一个用于对象检测的类,它基于Haar特征和AdaBoost算法。它能够识别图像中的特定对象,比如人脸、眼睛、微笑等。CascadeClassifier 需要一个预训练的XML分类器文件,该文件包含了用于检测…

Mac 需要杀毒软件?

大部分 mac用户普遍认为 Apple mac 不受病毒和恶意软件的影响。这导致许多 Mac 用户误以为无需为 Mac 安装防病毒软件,但事实并非如此。 在这篇文章中,将深入探讨 Mac 安全性的细节,探索针对 Apple 设备的恶意软件类型,并为您…

Python和CUDA(C++)量子退火和伊辛二次算法模型

🎯要点 简化量子退火或离散优化算法处理,使用张量网络模拟和动态系统方法及神经网络逼近。实现并行退火算法和CUDA支持下穷举搜索法。使用大都会算法模拟二维自旋玻璃伊辛模型并测量磁化率、比热容和能量。对比其他组合优化解方法,使用英伟达…

Windows 安装 Maven 并配置环境变量

一、简介 Maven 是一款基于 Java 平台的项目管理和整合工具,用来构建项目的。也就是清理、编译、测试、运行、打包、安装整个过程都交给 Maven 管理,整个过程就是构建。 二、安装 Java JDK Maven 依赖 Java JDK,如果本机没有安装过 Java 的…

C#使用PdfSharp生成PDF文件实例详解

许多项目开发中需要生成PDF, 常规办法使用官方提供的Microsoft.Office.Interop.Worddll插件,但是这种方法需要完全安装OFFICE,另外版本不一致还会出现很多错误。一般不推荐使用。 下面介绍几种巧妙的用法,定能事半功倍。 本文使用PDFsharp完成功能。 PDFsharp一款开源的…

CRM客户关系管理系统的功能、作用、特点有哪些?

大家都知道,CRM是销售常用的客户关系管理系统。销售是客户关系管理系统中的主要组成部分,主要包括潜在客户、客户、联系人、业务机会、订单、回款单、报表统计图等模块。那么CRM只能销售人员用来管理客户关系吗? 其实,CRM的功能远…

HUAWEI_HCIA_实验指南_Lib2.1_交换机基础配置

1、原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数,比如速率、双工模式等。交换机的全双工是指交换机在发送数据的同时也能够接收数据,两者同时进行。就如平时打电话一样,说话的同时也能够听到对方的声音。而半双工指在同一…

开发日志:IIS安全配置

为了解决IIS文件路径泄漏问题,可以采取以下措施: 一. 详细操作 1. CMD关闭NTFS 8.3文件格式的支持 命令行:fsutil 8dot3name set 1 2. 修改注册表禁用短文件名功能 CMD输入regedit回车,在注册表中找到HKEY_LOCAL_MACHINE\SYSTEM\C…

离职跳槽,不要上了这些当!

在离职跳槽的过程中,许多人可能会遇到各种陷阱和误导,这些不当行为不仅会影响个人的职业发展,还可能带来经济损失和法律风险。以下是一些常见的离职跳槽陷阱及应对策略,帮助你避免上当。 一、离职前的陷阱 1. 盲目冲动离职 现象…

科大讯飞C++开发一面-面经总结

1、内存泄漏和内存溢出的概念? 内存泄漏定义:内存泄漏是指程序在动态分配内存后,失去了对该内存的引用,但该内存并没有被释放。也就是说,程序无法再访问这块内存区域,导致这部分内存被“遗忘”而无法被回收…

uniapp学习(005-1 详解Part.1)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第36p-第p40的内容 文章目录 响应式尺寸单位 rpx各种工具修改ui给的图片的宽度ps操作步骤即时设计操作步骤&…

Cherno游戏引擎笔记(61~72)

---------------一些维护和更改------------- 》》》》 Made Win-GenProjects.bat work from every directory 代码更改: echo off->pushd ..\->pushd %~dp0\..\call vendor\bin\premake\premake5.exe vs2019popdPAUSE 为什么要做这样的更改? …

特征点检测与匹配是计算机视觉中的基础任务之一,广泛应用于图像配准、物体识别、运动估计、三维重建等领域。

特征点检测与匹配是计算机视觉中的基础任务之一,广泛应用于图像配准、物体识别、运动估计、三维重建等领域。下面是一些关键的知识点: 1. 特征点检测 特征点检测的目的是从图像中找到独特的、稳定的点,这些点在图像变化(如旋转、…

Caffeine+Redis两级缓存架构

CaffeineRedis两级缓存架构 在高性能的服务项目中,我们一般会将一些热点数据存储到 Redis这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。 但是在一些场景下单纯使用 Redis 的分布…