ipaddress

您所在的位置:网站首页 ipv6转换成ipv4怎么计算 ipaddress

ipaddress

2024-07-01 09:22| 来源: 网络整理| 查看: 265

构建一个 IPv4 网络定义。 address 可以是以下之一:

一个由 IP 地址和可选掩码组成的字符串,用斜线 (/) 分开。 IP 地址是网络地址,掩码可以是一个单一的数字,这意味着它是一个 前缀,或者是一个 IPv4 地址的字符串表示。 如果是后者,如果掩码以非零字段开始,则被解释为 网络掩码,如果以零字段开始,则被解释为 主机掩码,唯一的例外是全零的掩码被视为 网络掩码。 如果没有提供掩码,它就被认为是 /32。

例如,以下的*地址*描述是等同的:192.168.1.0/24,192.168.1.0/255.255.255.0``和``192.168.1.0/0.0.0.255

一个可转化为32位的整数。 这相当于一个单地址的网络,网络地址是*address*,掩码是 /32。

一个整数被打包成一个长度为 4 的大端序 bytes 对象。 其解释类似于一个整数 address。

一个地址描述和一个网络掩码的双元组,其中地址描述是一个字符串,一个 32 位的整数,一个 4 字节的打包整数,或一个现有的 IPv4Address 对象;而网络掩码是一个代表前缀长度的整数 (例如 24) 或一个代表前缀掩码的字符串 (例如 255.255.255.0)。

如果 address 不是一个有效的 IPv4 地址则会引发 AddressValueError。 如果掩码不是有效的 IPv4 地址则会引发 NetmaskValueError。

如果 strict 是 True,并且在提供的地址中设置了主机位,那么 ValueError 将被触发。 否则,主机位将被屏蔽掉,以确定适当的网络地址。

除非另有说明,如果参数的 IP 版本与 self 不兼容,所有接受其他网络/地址对象的网络方法都将引发 TypeError。

在 3.5 版本发生变更: 为*address*构造函数参数添加了双元组形式。

version¶ max_prefixlen¶

请参考 IPv4Address 中的相应属性文档。

is_multicast¶ is_private¶ is_unspecified¶ is_reserved¶ is_loopback¶ is_link_local¶

如果这些属性对网络地址和广播地址都是True,那么它们对整个网络来说就是True。

network_address¶

网络的网络地址。网络地址和前缀长度一起唯一地定义了一个网络。

broadcast_address¶

网络的广播地址。发送到广播地址的数据包应该被网络上的每台主机所接收。

hostmask¶

主机掩码,作为一个 IPv4Address 对象。

netmask¶

网络掩码,作为一个 IPv4Address 对象。

with_prefixlen¶ compressed¶ exploded¶

网络的字符串表示,其中掩码为前缀符号。

with_prefixlen 和 compressed 总是与 str(network) 相同,exploded 使用分解形式的网络地址。

with_netmask¶

网络的字符串表示,掩码用网络掩码符号表示。

with_hostmask¶

网络的字符串表示,其中的掩码为主机掩码符号。

num_addresses¶

网络中的地址总数。

prefixlen¶

网络前缀的长度,以比特为单位。

hosts()¶

返回一个网络中可用主机的迭代器。 可用的主机是属于该网络的所有IP地址,除了网络地址本身和网络广播地址。 对于掩码长度为31的网络,网络地址和网络广播地址也包括在结果中。掩码为32的网络将返回一个包含单一主机地址的列表。

>>> list(ip_network('192.0.2.0/29').hosts()) [IPv4Address('192.0.2.1'), IPv4Address('192.0.2.2'), IPv4Address('192.0.2.3'), IPv4Address('192.0.2.4'), IPv4Address('192.0.2.5'), IPv4Address('192.0.2.6')] >>> list(ip_network('192.0.2.0/31').hosts()) [IPv4Address('192.0.2.0'), IPv4Address('192.0.2.1')] >>> list(ip_network('192.0.2.1/32').hosts()) [IPv4Address('192.0.2.1')] overlaps(other)¶

如果这个网络部分或全部包含在*other*中,或者*other*全部包含在这个网络中,则为 True。

address_exclude(network)¶

计算从这个网络中移除给定的 network 后产生的网络定义。 返回一个网络对象的迭代器。 如果 network 不完全包含在这个网络中则会引发 ValueError。

>>> n1 = ip_network('192.0.2.0/28') >>> n2 = ip_network('192.0.2.1/32') >>> list(n1.address_exclude(n2)) [IPv4Network('192.0.2.8/29'), IPv4Network('192.0.2.4/30'), IPv4Network('192.0.2.2/31'), IPv4Network('192.0.2.0/32')] subnets(prefixlen_diff=1, new_prefix=None)¶

根据参数值,加入的子网构成当前的网络定义。 prefixlen_diff 是我们的前缀长度应该增加的数量。 new_prefix 是所需的子网的新前缀;它必须大于我们的前缀。 必须设置 prefixlen_diff 和 new_prefix 中的一个,且只有一个。 返回一个网络对象的迭代器。

>>> list(ip_network('192.0.2.0/24').subnets()) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')] >>> list(ip_network('192.0.2.0/24').subnets(prefixlen_diff=2)) [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=26)) [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=23)) Traceback (most recent call last): File "", line 1, in raise ValueError('new prefix must be longer') ValueError: new prefix must be longer >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=25)) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')] supernet(prefixlen_diff=1, new_prefix=None)¶

包含这个网络定义的超级网,取决于参数值。 prefixlen_diff 是我们的前缀长度应该减少的数量。 new_prefix 是超级网的新前缀;它必须比我们的前缀小。 必须设置 prefixlen_diff 和 new_prefix 中的一个,而且只有一个。 返回一个单一的网络对象。

>>> ip_network('192.0.2.0/24').supernet() IPv4Network('192.0.2.0/23') >>> ip_network('192.0.2.0/24').supernet(prefixlen_diff=2) IPv4Network('192.0.0.0/22') >>> ip_network('192.0.2.0/24').supernet(new_prefix=20) IPv4Network('192.0.0.0/20') subnet_of(other)¶

如果这个网络是*other*的子网,则返回 True。

>>> a = ip_network('192.168.1.0/24') >>> b = ip_network('192.168.1.128/30') >>> b.subnet_of(a) True

Added in version 3.7.

supernet_of(other)¶

如果这个网络是*other*的超网,则返回 True。

>>> a = ip_network('192.168.1.0/24') >>> b = ip_network('192.168.1.128/30') >>> a.supernet_of(b) True

Added in version 3.7.

compare_networks(other)¶

将这个网络与*ohter*网络进行比较。 在这个比较中,只考虑网络地址;不考虑主机位。 返回是 -1 、 0``或``1。

>>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.2/32')) -1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.0/32')) 1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.1/32')) 0

自 3.7 版本弃用: 它使用与""相同的排序和比较算法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3