ipaddress |
您所在的位置:网站首页 › ipv6转换成ipv4怎么计算 › ipaddress |
构建一个 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) TrueAdded 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) TrueAdded 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 |