怎么判断私网地址_如何判断一个IP地址是私有地址
如何判断一个IP地址是私有地址,首先,我们得先了解什么是私有地址。本文所指的IP地址,皆是IPV4。
一个IPV4地址,由四段组成,最大值为255,一个IP地址其实就是一个32位的bit串,每8位一段。所谓私有地址,就是非注册地址,只能做内网地址。私有地址有三类,分别是 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
这里的划分规则是这样的,A类有一个8位的前缀,B类的前缀是12位,C类的前缀是16位,啥意思呢。就拿A类地址来说,前八位已经定下来了,就是10,后面的22位,随意变化,那么范围自然就是10.0.0.0到10.255.255.255了,B类地址前12位已经定下来了,第一个八位定为172,第二个八位的前4位定为16,他们的二进制表示是这样的
第一段 10101100
第二段 00010000
第一段的8位加上第二段的前4位,这12位是固定下来的。那么后面的20位就是可以随便变化的,而第二段的后4位即便都是1,那么第二段的最大值也只能是00011111,也就是31,所以B类地址的第二段最大值就是31
C类地址的前16位都固定了,就是192.168
明白了私有地址的范围,我们也就好计算了。一种方法,就是根据规则对字符串进行比较,用中间的点做分割,然后逐一对每段的值进行判断,然而本文要说的是另一个思路。
我们可以把一个IP地址转成二进制,然后呢,每一类的地址的前面8,12,或16位其实是固定的,只要前面的这些位对得上,那么这个地址就是私有地址,程序用python编写,代码如下:
#coding=utf-8
'''
Created on 2015-11-28
@author: kwsy
'''
import socket
import struct
ip1 = 167772160
ip2 = 2886729728
ip3 = 3232235520
def isPrivateIp(ip):
#将ip地址转换成二进制的形式
binaryIp = socket.inet_aton(ip)
#将二进制转成无符号long型
numIp = struct.unpack('!L', binaryIp)[0]
#32位都是1
mark = 2**32-1
#取numIP的前16位
tag = (mark<<16) & numIp
if ip3 ==tag:
return True
#取numIP的前12位
tag = mark<<20 & numIp
if ip2 == tag:
return True
#取numIP的前8位
tag = (mark<<24) & numIp
if ip1 == tag:
return True
return False
if __name__=='__main__':
print(isPrivateIp('192.168.0.1')) 相比对字符串分割然后逐一比较,是不是简单许多呢
怎么判断私网地址_如何判断一个IP地址是私有地址相关推荐
- 淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使用方法教程
淘宝对外提供共享的一个IP地址库API,更新也比较及时,非常适合我们日常的使用. 以下讨论的是和淘宝网 IP查询 地址库 调用 API 相关的淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使 ...
- abc类ip地址_通信网络的IP地址分配原理
一.网络模型介绍 在计算机网络中有著名的OSI七层协议体系结构,概念清楚,理论完整,但是它既复杂又不实用.TCP/IP体系结构则不同,得到了广泛的应用.最终结合OSI和TCP/IP的优点,采用了一种只 ...
- 更换ip地址_手机怎么改ip地址
为什么会出现手机ip的地址的更换,是因为使用手机的人员越来越多,很多的工作开始使用手机来进行完成.也是因为手机更方便携带,使用也更加的方便,移动用户越来越多.那么手机的ip地址能够修改吗?回答是肯定的 ...
- python修改ip地址_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现
怎么更改电脑ip地址?基于 Python 爬虫原理的篮球鞋选择程序的设计与实现ip修改 [摘 要]伴随着篮球鞋工艺的进步及产业升级,多类型多种类的篮球鞋出现在大众的视野当中.与此同时,消费者对篮球鞋的 ...
- 0分配不到地址_前端学习计算机网络——IP地址的划分及其分类
点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 本文是该系列文章的第二篇,将了解Internet中使用的网络层地址,又称IP地址.每个设备都至少需 ...
- 字符串的地址_面试题:我有一批IPv6地址,你帮我想个办法来存储?
作者:dadiyang-绪扬来源:公众号Java面试那些事儿 之前写了一篇<面试题:请用代码实现ip地址与int之间互换?>,有读者评论问到 IPv6 的转换方法,于是抽时间也自己实现了一 ...
- 联想服务器imm默认地址_命令下配置ip地址
一.添加 IP 地址及默认网关 (是添加,要重设或更新原来IP的请看第三点) netsh interface ip add address 用法 : add address [name=] [[add ...
- java解析ip地址_通过JAVA解析IP地址
如何用Java获得一个域名的IP地址呢?提供这个功能的类叫做java.net.InetAddress.我们假设现在有这样一个域名,他用一个静态的 getByName来重新获得一个InetAddress ...
- win7 计算机名IPDNS修改,怎样改ip地址_怎样更换电脑ip地址-win7之家
在电脑上,电脑是要拥有一个ip地址才能上网的,ip地址就是电脑的标识,一般都会分配一个固定的ip地址,设置好这个地址才可以上网,那么我们要是想改ip地址的话要怎样改呢,下面小编给大家分享更换电脑ip地 ...
最新文章
- AI一分钟 | 北京发放自动驾驶首批牌照,百度获准测试;亿航美国分公司申请破产,债务高达数百万美元
- 顺序表-给定的顺序表L中删除元素值在x到y(x<=y)之间的所有的元素
- python3 selenium 无头浏览器 无界面 chromedriver
- java软件网络工程师面试题_170道Java工程师面试题,你敢挑战吗?
- CNN+LSTM+CTC
- swift变量和函数
- github(5):GitHub的注册与使用(详细图解)
- PowerDesigner V16.5 安装教程以及汉化(数据库建模)
- 6-4-2:STL之list——list的模拟实现
- 【原】 图片预览 Image preview
- RAID一个硬盘FAIL。
- 实现一个左滑删除功能
- LayaAir UI 组件 # Image 位图、Label 标签
- Centos7虚拟机的镜像下载及创建
- 【PIC单片机】-- LCD的相关知识
- “大众摄影”“北外亚非学院”等网站被挂马
- 现在有什么地推项目_目前互联网都有哪些红利地推项目
- 红叶李之Linux文件系统
- 联想R7000 ubuntu 18.04 安装1650ti驱动
- 美国调查半导体装置专利侵权事件;“元宇宙业务”未达到Meta预期;kakao回应韩国数据中心火灾事件 | 每日大事件...
热门文章
- python读取数据画三维图_Python实现读取txt文件并画三维图
- 机顶盒的种类有哪些?
- SAP 使用ABNAN后资本化和价值补录
- 利用SpringBoot和Vue实现前后端分离(附源码)
- UCAS - AI学院 - 知识图谱专项课 - 第8讲 - 课程笔记
- Nginx(docker安装)快速入门
- OCP学习基本知识点总结
- OpenGL进阶之SSAO屏幕空间环境光遮蔽
- nacos 怎么配置 里的配置ip_2.nacos服务配置中心
- 【服务器管理】Ubuntu18.04下安装TensorRT(已经安装CUDA和cudnn的情况下)