240
我爱毛绒绒~~~~~~~

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.0255.255.0.0255.0.0.0
  • CIDR表示法:/后跟数字,表示子网掩码中连续1的个数:
    • /24255.255.255.0,前24位是网络位
    • /16255.255.0.0,前16位是网络位
    • /8255.0.0.0,前8位是网络位
    • /30255.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():智能创建网络对象

image

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

image

网络操作函数

collapse_addresses():合并连续/重叠网络(路由聚合)

处理对象是网络对象,非单个IP地址
每个 IP 地址本质上都是一个 /32 网络(在 IPv4 中)
image

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

image

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

image

其他属性方法

is_private / is_global:检查地址类型

image

reverse_pointer:获取反向DNS查询名

image

实用工具函数-暂无

posted @ 2025-08-07 14:03  水开白  阅读(45)  评论(0)    收藏  举报