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號