Python - IP 地址
IP地址(Internet Protocol Address 互联网协议)是一个基本的网络概念,可在网络中提供地址分配功能。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
python 模块 ipaddress 广泛用于验证 IP 地址并将其分类为 IPV4 和 IPV6 类型。 它还可以用于比较 IP 地址值以及用于操作 IP 地址的算术。
验证 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
验证 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
检查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
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
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