IP地址(Internet協議)是一種基本的網路概念,可在網路中提供地址分配功能。python模組ipaddress
廣泛用於驗證IP地址並將其分類為IPV4和IPV6類型。它還可以用於比較IP地址值以及用於處理ip地址的IP地址演算法。
1. 驗證IPV4地址
ip_address
函數驗證IPV4地址。如果值的範圍超出0到255,則將引發錯誤。
print (ipaddress.ip_address(u'192.168.0.255'))
print (ipaddress.ip_address(u'192.168.0.256'))
當運行上面的程式時,得到以下輸出-
192.168.0.255
ValueError: u'192.168.0.256' does not appear to be an IPv4 or IPv6 address
2. 驗證IPV6地址
ip_address
函數驗證IPV6地址。如果值的範圍超出0
到ffff
,則將引發錯誤。
print (ipaddress.ip_address(u'FFFF:9999:2:FDE:257:0:2FAE:112D'))
#invalid IPV6 address
print (ipaddress.ip_address(u'FFFF:10000:2:FDE:257:0:2FAE:112D'))
當運行上面的程式時,得到以下輸出-
ffff:9999:2:fde:257:0:2fae:112d
ValueError: u'FFFF:10000:2:FDE:257:0:2FAE:112D' does not appear to be an IPv4 or IPv6 address
3. 檢查IP地址的類型
我們可以提供各種格式的IP地址,並且該模組將能夠識別有效格式。它還將指示它是IP地址的類別。
print type(ipaddress.ip_address(u'192.168.0.255'))
print type(ipaddress.ip_address(u'2001:db8::'))
print ipaddress.ip_address(u'192.168.0.255').reverse_pointer
print ipaddress.ip_network(u'192.168.0.0/28')
當運行上面的程式時,得到以下輸出-
255.0.168.192.in-addr.arpa
192.168.0.0/28
4. IP地址比較
可以對IP地址進行邏輯比較,以確定它們是否相等。還可以比較一個IP地址的值是否大於另一個IP地址的值。
print (ipaddress.IPv4Address(u'192.168.0.2') > ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') == ipaddress.IPv4Address(u'192.168.0.1'))
print (ipaddress.IPv4Address(u'192.168.0.2') != ipaddress.IPv4Address(u'192.168.0.1'))
當運行上面的程式時,得到以下輸出-
True
False
True
5. IP地址算術
還可以應用算術運算來操縱IP地址。可以在IP地址中添加或減去整數。如果相加後最後一個八位位組的值超過255,則前一個八位位組將遞增以容納該值。如果多餘的值不能被任何先前的八位位組吸收,則將引發值錯誤。
print (ipaddress.IPv4Address(u'192.168.0.2')+1)
print (ipaddress.IPv4Address(u'192.168.0.253')-3)
# Increases the previous octet by value 1.
print (ipaddress.IPv4Address(u'192.168.10.253')+3)
# Throws Value error
print (ipaddress.IPv4Address(u'255.255.255.255')+1)
當運行上面的程式時,得到以下輸出-
192.168.0.3
192.168.0.250
192.168.11.0
AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4 address
上一篇:
Python Internet協議模組
下一篇:
Python DNS查找