- Python - 网络编程
- Python - 网络概述
- Python - 网络环境
- Python - 互联网协议
- Python - IP 地址
- Python - DNS 查询
- Python - 路由
- Python - HTTP 请求
- Python - HTTP 响应
- Python - HTTP 头部
- Python - 自定义 HTTP 请求
- Python - 请求状态码
- Python - HTTP 认证
- Python - HTTP 数据下载
- Python - 连接重用
- Python - 网络接口
- Python - 套接字编程
- Python - HTTP 客户端
- Python - HTTP 服务器
- Python - 构建 URL
- Python - 网页表单提交
- Python - 数据库和 SQL
- Python - Telnet
- Python - 电子邮件
- Python - SMTP
- Python - POP3
- Python - IMAP
- Python - SSH
- Python - FTP
- Python - SFTP
- Python - Web 服务器
- Python - 数据上传
- Python - 代理服务器
- Python - 目录列表
- Python - 远程过程调用
- Python - RPC JSON 服务器
- Python - 谷歌地图
- Python - RSS Feed
Python - IP 地址
IP 地址(互联网协议)是网络中的一个基本概念,它提供了在网络中分配地址的能力。Python 模块ipaddress被广泛用于验证和分类 IP 地址为 IPv4 和 IPv6 类型。它还可以用于比较 IP 地址值以及进行 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 地址的值是否大于另一个 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,则前一个八位字节会递增以容纳该值。如果额外值不能被任何前一个八位字节吸收,则会引发 ValueError。
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
广告