快速计算子网IP和广播IP的方法

快速计算子网IP和广播IP的方法

我很难找到一种快速有效的方法来确定基于给定路由器 IP 和网络掩码的有效 IP 范围

我知道如何通过将所有 IP 和网络掩码转换为二进制并进行按位与/或运算来计算子网 IP 和广播 IP,但这种方法需要花费大量时间并且很容易导致失误......

答案1

有各种网站和应用程序可以帮你计算,例如http://www.subnet-calculator.com/cidr.php

否则,使用网络掩码计算子网的大小(网络掩码中零位数的 2 次方)。找到子网大小的整数倍但低于路由器 IP 地址的最大 IP 地址。该 IP 地址是网络地址,IP 地址加上子网大小减 1 是广播地址。

答案2

如果某件事需要时间,就编写脚本。

Python 有以下ipaddress模块:

$ python
Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
>>> import ipaddress
>>> x = ipaddress.IPv6Interface("2001:470:709a:107::1a2b:3c/64")
>>> x.network
IPv6Network('2001:470:709a:107::/64')
>>> y = ipaddress.IPv4Interface("194.219.181.195/26")
>>> y.network
IPv4Network('194.219.181.192/26')
>>> y.network.network_address
IPv4Address('194.219.181.192')
>>> y.network.broadcast_address
IPv4Address('194.219.181.255')

这将导致:

#!/usr/bin/env python
import ipaddress
import sys

for arg in sys.argv[1:]:
    addr = ipaddress.ip_interface(arg)
    print("address =", addr)
    print("network =", addr.network)
    if addr.version == 4:
        print("netmask =", addr.netmask)
        print("broadcast =", addr.network.broadcast_address)
    print()

相关内容