Python - ipaddress模块
基础概念
ip地址
定义:互联网协议地址,它是分配给网络中每个设备(计算机,手机,路由器等)的唯一逻辑标识符。就像设备的“门牌号,用于在网络中固定位和是被设备,实现设备间的通信”
核心作用:标识主机,定位网络
主要版本
- ipv4:IPv4: 目前最广泛使用的版本,格式为 X.X.X.X (例如 192.168.1.10),其中每个 X 是 0-255 的十进制数(对应8位二进制)。总长度32位,理论上可提供约43亿个地址,但已面临枯竭
- ipv6:为解决IPv4地址耗尽问题而设计,格式为 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX (例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334),其中每个 X 是4位十六进制数。总长度128位,提供近乎无限的地址空间。简化规则(省略前导零、压缩连续零段)使其更易书写
分类:
- 公有ip地址:由ICANN及其下属机构(如APNIC、RIPE NCC等)分配给ISP或大型组织,在互联网上是全球唯一的,用于访问互联网。需要付费租用。
- 私有IP地址: 在局域网内部使用,不需要全球唯一,也不能直接访问互联网。需要通过NAT(网络地址转换)技术转换为公有IP才能上网。私有地址范围:
- 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
 
子网掩码
定义:一个与IP地址成对出现的32位二进制数(通常也写作点分十进制形式)
核心作用:划分网络位和主机位。实现子网划分,提高IP地址利用率和网络管理效率
工作原理:
- 子网掩码由连续的1和连续的0组成
- 1的位:对应ip地址中的网络位
- 0的位:对应ip地址中的主机位
标识方法:
- 点分十进制:如255.255.255.0,255.255.0.0,255.0.0.0
- CIDR表示法:/后跟数字,表示子网掩码中连续1的个数:- /24:- 255.255.255.0,前24位是网络位
- /16:- 255.255.0.0,前16位是网络位
- /8:- 255.0.0.0,前8位是网络位
- /30:- 255.255.255.252,常用于点对点链路
 
网段
定义:指共享同一个网络地址的一组IP地址所覆盖的范围。简单说,就是处于同一个子网内的所有IP地址构成的连续地址块
核心作用: 界定一个广播域的范围。同一个网段内的设备可以直接通信(通常通过交换机/集线器),不需要经过路由器转发。不同网段间的设备通信必须通过路由器(网关)
网络地址
通过将某个IP地址与其子网掩码进行逻辑与运算得到的结果。它代表了一个特定子网的标识符
每个 IP 地址本质上都是一个 /32 网络(在 IPv4 中):这表示只包含自己的网络
特点:
- 是一个网段中最小的地址
- 不能分配给任何主机设备使用
- 用于标识整个子网本身
广播地址
在一个网段中最大的地址,发送到这个地址的数据包,会被该网段的所有主机设备接收和处理
特点:
- 不能分配给任何主机设备使用
- 用于向同一子网内的所有设备发送广播信息(如ARP请求,DHCP发现)
 ![image]() 
主机地址
在一个网段中,拍出了网络地址和广播地址之后,剩下的那些可以实际分配给主机设备(如手机,电脑等)使用的ip地址,范围网络地址+1到广播地址-1(在192.168.1.0/24这个网段中,主机范围是192.168.1.1到192.168.1.254)
默认网关
通常是连接本地网络中(子网)与外部网络(其他子网或互联网)的路由器接口在该本地网络中配置的ip地址
核心作用:当一台设备需要与不同网段的目标设备通信时,它会将数据包发送给默认网关,默认网关(路由器)负责根据路由表将数据包转发到正确的目的地网络
特点:
- 必须与发送设备处于同一个子网中
- 是一个可用的主机地址
 ![image]() 
总结
- 
IP地址+子网掩码 = 定义设备身份和所属网络 
 子网掩码划分出IP地址中的网络部分和主机部分
- 
网络地址 
 子网的“名字”或“编号”,有IP地址AND子网掩码计算得出,代表网段起点
- 
广播地址 
 子网的“全体呼叫地址”,主机位全1,代表网段终点
- 
网段 
 从网络地址+1到广播地址-1的连续IP地址范围
- 
主机地址 
 网段内可分配给设备的具体IP
- 
默认网关 
 本网段内路由器的入口地址,是通往其他网络的“大门”
类比
想象IP地址是你的完整邮寄地址(国家+省+市+区+街道+门牌号)。子网掩码就像一把尺子,划定了“市”这个层级。对于同一个“市”(网络地址)内的不同“门牌号”(主机地址),邮递员(路由器)直接投递;发往不同“市”的信件,则先送到市邮局(网关)
简单示例:
- 设备ip:192.168.1.100
- 子网掩码:255.255.255.0
- 网络地址:192.168.1.100
- 网段:192.168.1.0/24
- 网段范围:192.168.1.1到192.168.1.254(主机范围)
- 广播地址:192.168.1.255
基础用法
创建地址/网络对象
- 
ipaddress.IPv4Address:创建单个ipv4地址
 ![image]() 
- 
ipaddress.IPv4Network:创建ipv4网络(严格模式下要求主机位全0)
 ![image]() 
- 
ipaddress.IPv4Interface:创建带接口信息的对象(保留掩码)
 ![image]() 
常用函数
智能类型推断(自动识别类型)
ip_address():智能创建ipv4/ipv6地址
- 
自动识别ipv4/ipv6地址并创建 
 ![image]() 
- 
支持整数创建 
 ![image]() 
ip_network():智能创建网络对象

ip_interface(): 智能创建接口对象(保留掩码信息)

网络操作函数
collapse_addresses():合并连续/重叠网络(路由聚合)
处理对象是网络对象,非单个IP地址
每个 IP 地址本质上都是一个 /32 网络(在 IPv4 中)

summarize_address_range():生成覆盖IP范围的最小CIDR列表

get_mixed_type_key():IPv4/IPv6混合排序的键函数

其他属性方法
is_private / is_global:检查地址类型

reverse_pointer:获取反向DNS查询名

 








 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号