python验证公网ip与内网ip

什么是公网IP

公网IP(Public IP)是指在互联网中全球唯一标识一个设备或网络的IP地址。它是供公众访问和通信的IP地址。

公网IP是由互联网服务提供商(ISP)分配给用户或组织的,它允许设备通过互联网与其他设备进行通信和交互。每个设备连接到互联网时,都需要分配一个公网IP地址,以便其他设备可以通过该地址找到并与其通信。

 

公网IP地址是由32位的IP协议版本(IPv4)或128位的IP协议版本(IPv6)表示的数字地址。IPv4地址通常以点分十进制的形式表示,例如192.168.0.1,而IPv6地址通常以冒号分隔的16进制数表示。

公网IP地址的分配方式通常由ISP进行管理和控制。一般来说,家庭网络或小型企业网络使用动态分配的公网IP地址,它们可以在每次重新连接互联网时分配一个新的IP地址。而大型企业或服务器通常使用静态分配的公网IP地址,它们的IP地址在一段时间内保持不变。

需要注意的是,由于IPv4地址资源有限,随着互联网的发展,IPv6协议逐渐普及,整个互联网逐渐迁移至IPv6地址空间,以满足不断增长的互联网连接需求。

什么是内网IP

内网IP(Private IP)是在私有网络中使用的IP地址,用于内部组织、家庭或企业内部设备之间的通信。相对于公网IP,内网IP是在局域网或本地网络中使用的,不直接可被公网访问。

内网IP地址通常由组织、家庭或企业内部的网络管理员进行分配和管理,以实现内部网络设备的互连和通信。它们可以用于连接计算机、服务器、路由器、打印机和其他设备,以构建内部网络和局域网。

 

根据不同的网络协议版本,内网IP地址可以是IPv4或IPv6。典型的IPv4内网IP地址范围如下:

- 私有类A网段:10.0.0.0 至 10.255.255.255
- 私有类B网段:172.16.0.0 至 172.31.255.255
- 私有类C网段:192.168.0.0 至 192.168.255.255

这些内网IP地址段在互联网中是保留的,并且在全球范围内具有唯一性。这意味着,内网IP地址可以在不同的私有网络中重复使用,而不会与其他网络的IP地址冲突。

内网IP地址的一个特点是,它们无法直接通过公网进行访问。如果内网设备需要与公网通信,通常需要使用网络地址转换(NAT)等方式将内网IP地址转换为公网IP地址。

通过使用内网IP地址,内部设备可以在局域网中自由进行通信和共享资源,但不会直接暴露在公网中,从而提供了一定的网络安全性。

python怎么验证公网IP和内网IP

在Python中,你可以使用socket库来验证公网IP和内网IP。下面是一个简单的示例代码:

import socket

def is_public_ip(ip):
    try:
        # 创建一个套接字并连接到指定IP的端口,使用超时时间来避免长时间等待
        sock = socket.create_connection((ip, 80), timeout=3)
        # 关闭套接字连接
        sock.close()
        # 如果连接成功,则判断为公网IP
        return True
    except socket.error:
        # 如果连接失败,则判断为内网IP
        return False

# 示例验证
ip_addresses = ['192.168.1.1', '8.8.8.8']

for ip in ip_addresses:
    if is_public_ip(ip):
        print(f'{ip} 是公网IP')
    else:
        print(f'{ip} 是内网IP')

在上述代码中,`is_public_ip`函数尝试与指定IP地址的80端口进行连接。如果连接成功,则判断为公网IP;如果连接失败,则判断为内网IP。

请注意,这种验证方法有一定的局限性。因为它使用的是与IP地址的80端口进行连接,如果目标设备没有开放该端口或有防火墙限制,验证结果可能不准确。另外,由于公网IP地址可能会动态改变,仅通过验证一次并不能确定其是否一直为公网IP。

因此,在实际使用中,可能需要结合其他方法和服务(如合法的IP数据库)来更准确地验证和区分公网IP和内网IP。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何高效的开展app的性能测试

目录 APP性能测试是什么 APP性能测试怎么做 性能测试场景的设计 性能指标的定义 规范化执行流程 性能数据数据收集 性能数据分析 性能问题定位 性能测试报告 APP性能测试是什么 从网上查了一下,貌似也没什么特别的定义,我这边根据自己的经验给出…

3.清除浮动

3.1 为什么需要清除浮动? 由于父级盒子在很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子。 ●由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排…

进制转换解析

进制 进制介绍 对于整数,有四种表示方式: 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。 十进制:0-9 ,满 10 进 1。 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。 十六进制&#xff1…

Spring Boot 中的 Spring Cloud Feign

Spring Boot 中的 Spring Cloud Feign Spring Boot 是一个非常流行的 Java Web 开发框架,它提供了很多工具和组件来简化 Web 应用程序的开发。其中,Spring Cloud Feign 是 Spring Boot 中的一个非常重要的组件,它可以帮助我们实现声明式的 R…

VSCode中打开NodeJS项目自动切换对应版本的配置

这几年搞了不少静态站点,有的是Hexo的,有的是VuePress的。由于不同的主题对于NodeJS的版本要求不同,所以本机上不少NodeJS的版本。 关于如何管理多个NodeJS版本,很早之前就写过用nvm来管理的相关文章,这里就不赘述了&a…

拼多多商品参数怎样复制(实用小技巧分享)

拼多多是一家以拼团购物为主打的电商平台,拼多多的商品信息非常详细,包括商品的价格、规格、型号、颜色、尺寸等多种参数。当我们需要在拼多多上发布商品或者参与拼团购物时,可能需要复制商品参数,那么拼多多商品参数怎样复制呢&a…

MySQL实战解析底层---“order by“是怎么工作的

目录 前言 全字段排序 rowid排序 全字段排序 VS rowid排序 前言 在开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求以举例市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前1000个人的姓…

深度学习常用激活函数总结

激活函数的特点 非线性。引入非线性能提升模型的表达能力可微分。如果激活函数不可微,那就无法使用梯度下降方法更新参数非饱和性。饱和指在某些区间上激活函数的梯度接近于零,使参数无法更新取值范围有界。这样可以使网络更稳定,即使有很大…

SSM项目前后端分离+IDEA运行环境(含前端源码)(个人博客系统)

目录 后端项目环境配置 1、创建一个SpringBoot项目,添加MyBatis框架和数据库MySQL驱动依赖 2、配置项目文件:application.yml 3、创建数据库表 4、创建分层结构目录 返回统一数据格式 创建统一数据格式返回类:AjaxResult 创建实现统一…

软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自广东深圳,就读专业是电子商务,…

Golang学习——string和slice切片

Golang学习——string和slice切片 string整数存储字符存储Unicode存储变长编码规则字符串类型变量的结构字符串变量的修改方式 slice通过make的方式定义变量new底层数组slice扩容规则1.预估扩容后的容量newCap2.newCap个元素需多大内存3.匹配到合适的内存规格练习 string 整数…

Cyclo(Leu-Leu),952-45-4,环(亮氨酸-亮氨酸),进行总结说明

(文章资料汇总来源于:陕西新研博美生物科技有限公司小编MISSwu)​ ●中文名:环(亮氨酸-亮氨酸) ●英文名:Cyclo(-Leu-Leu),Cyclo(L-leucyl-L-leucyl),Cyclo(Leu-Leu) ●…

二叉树OJ实战

目录 二叉树某一节点X祖先节点的交集(证明题) LeetCode_100. 相同的树 LeetCode_965. 单值二叉树 LeetCode_101. 对称二叉树 LeetCode_226. 翻转二叉树 LeetCode_112. 路径总和 LeetCode_113. 路径总和 II LeetCode_110. 平衡二叉树 LeetCode_9…

第一章:光纤通信概述

第一节:通信基本概念 1.1光纤通信基本概念 1.1.1光纤通信的概念 利用光导纤维传输广播信号的通信方式称为光纤通信。光波主要包括紫外线、可见光和红外线。光纤通信工作波长在近红外区,0.8um~1.8um的波长区,频率为167THz~375THz。光纤基础…

Nuxt3引入Element-plus和sass

1.引入Element-plus 打开编辑器终端 运行npm install element-plus/nuxt 或者命令行cd到项目文件 运行npm install element-plus/nuxt package.json文件会出现 使用Element-plus 在nuxt.config.ts文件添加代码 export default defineNuxtConfig({devtools: { enabled: true }…

MFC学习日记(一)——创建新项目

此系列所有文章参考链接:http://www.jizhuomi.com/software/141.html 点击file新建项目创建一个MFC新项目 点击确定 点击下一步 选择应用程序类型 我们看到有四种类型:Single document(单文档)、Multiple documents&#xff…

gigachad1靶机详解

gigachad_vh靶机详解 扫描到ip后对ip做一个全面扫描,发现有一个匿名服务器,是可以免密登陆的。 登陆上后发现就一个文件,get到我们电脑上。 file一下发现是一个zip文件,unzip解压一下,发现给了一个用户名chad&#xf…

【数据挖掘】时间序列教程【二】

2.4 示例:颗粒物浓度 在本章中,我们将使用美国环境保护署的一些空气污染数据作为运行样本。该数据集由 2 年和 5 年空气动力学直径小于或等于 3.2017 \(mu\)g/m\(^2018\) 的颗粒物组成。 我们将特别关注来自两个特定监视器的数据,一个在加利福尼亚州弗雷斯诺,另一个在密…

软考:中级软件设计师:存储管理,分区存储,页式存储,逻辑地址,物理地址

软考:中级软件设计师:存储管理,分区存储 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是…

LLM - Baichuan7B Tokenizer 生成训练数据

目录 一.引言 二.Tokenizer 原始数据 1.原始数据样例 2.加载并 Token 原始数据 2.1 参数准备 2.2 单条样本处理逻辑 2.3 批量处理逻辑 2.4 主函数与完整代码 三.shell 执行 四.总结 一.引言 前面提到了自己在微调 Baichuan7B Lora 的过程中遇到了一些问题&#xff0c…