ipaddress - Python 中的 IPv4/IPv6 操作庫
網際網路協議目前正在從版本 4 遷移到版本 6。這是因為版本 4 無法提供足夠的地址來處理連線到網際網路的裝置數量的增加。
IPv4 地址由 32 位組成,表示為四個 8 位組,稱為“八位位元組”。這是一種“點分十進位制”格式,其中每個 8 位八位位元組可以具有 0 到 255 的十進位制值。
例如: 192.168.1.1
帶有 CIDR 表示法的 IPv4 地址:192.168.1.1/24,其中 24 表示前三個八位位元組標識網路,最後一個八位位元組標識節點。
IPv6 地址長 128 位。它使用十六進位制表示法。IPv6 地址中的每個位置表示 4 位,其值從 0 到 f。128 位分為 8 個 16 位分組,每個分組之間用冒號分隔。
示例:2001:db8:abcd:100::1/64
所有 IPv6 地址都使用 CIDR 表示法來確定前導位中有多少用於網路標識,其餘用於主機/介面標識。
Python 的標準庫具有 ipaddress 模組,該模組提供了建立、操作和操作 IPv4 和 IPv6 地址和網路的功能。
該模組提供以下工廠函式,以便於建立 IP 地址、網路和介面
ip_address()
根據作為引數傳遞的 IP 地址返回 IPv4Address 或 IPv6Address 物件。可以提供 IPv4 或 IPv6 地址。
>>> import ipaddress >>> ipaddress.ip_address('192.168.0.1') IPv4Address('192.168.0.1') >>> ipaddress.ip_address('2001:ab7::') IPv6Address('2001:ab7::')
ip_network()
根據作為引數傳遞的 IP 地址返回 IPv4Network 或 IPv6Network 物件。
>>> ipaddress.ip_network('192.168.100.0/24') IPv4Network('192.168.100.0/24') >>> ipaddress.ip_network('2001:db8:abcd:100::/64') IPv6Network('2001:db8:abcd:100::/64')
ip_interface()
根據作為引數傳遞的 IP 地址返回 IPv4Interface 或 IPv6Interface 物件。
>>> ipaddress.ip_interface('192.168.100.10/24') IPv4Interface('192.168.100.10/24') >>> ipaddress.ip_interface('2001:db8:abcd:100::1/64') IPv6Interface('2001:db8:abcd:100::1/64')
ipaddress 模組定義了以下類
IPv4Address(address)
此建構函式返回一個 IPv4 地址物件。
有效的 IPv4 地址由以下內容標識
以點分十進位制表示法的字串,由四個介於 0 到 255(含)之間的十進位制整陣列成,並用點分隔(例如 192.168.0.1)。
其二進位制等效值為 32 位的整數。
打包到長度為 4 的位元組物件中的整數(最顯著的八位位元組在前)。
>>> ipaddress.IPv4Address('192.168.0.1') IPv4Address('192.168.0.1') >>> ipaddress.IPv4Address(3162581505) IPv4Address('188.129.42.1') >>> ipaddress.IPv4Address(b'\xC0\xA8\x00\x01') IPv4Address('192.168.0.1')
IPv6Address()
構造 IPv6 地址。
有效的 IPv6 地址構成如下
由八組四個十六進位制數字組成的字串,每組表示 16 位。各組之間用冒號分隔。
適合 128 位的整數。
打包到長度為 16 的位元組物件中的整數,大端序。
>>> ipaddress.IPv6Address('2001:db8::1000') IPv6Address('2001:db8::1000') >>> ipaddress.IPv6Address("::abc:7:def") IPv6Address('::abc:7:def')
版本
返回相應的版本號
>>> add = ipaddress.IPv4Address('192.168.0.1') >>> add.version 4 >>> ip = ipaddress.IPv6Address('2001:db8::1000') >>> ip.version 6