计算网络地址

如何计算网络地址
  我们日常生活中的地址如:北大街1号,从字面上就能看出街道地址是北大街,而我们从IP地址中却难以看出网络地址,要计算网络地址,必须借助我们上边提到过的子网掩码。
  计算过程是这样的,将IP地址和子网掩码都换算成二进制,然后进行与运算,结果就是网络地址。与运算如下所示,上下对齐,1位1位的算,1与1=1 ,其余组合都为0。
                  1...0...1...0
                  1...0...0...0
              与运算________________ 
                  1...0...0...0
  例如:计算IP地址为:202.99.160.50子网掩码是255.255.255.0的网络地址步骤如下:
  1)将IP地址和子网掩码分别换算成二进制
  202.99.160.50 换算成二进制为 11001010?01100011?10100000?00110010
  255.255.255.0 换算成二进制为 11111111?11111111?11111111?00000000
  2)将二者进行与运算
             11001010?01100011?10100000?00110010
             11111111?11111111?11111111?00000000
         与运算________________________________________
             11001010?01100011?10100000?00000000
  3)将运算结果换算成十进制,这就是网络地址。
  11001010?01100011?10100000?00000000换算成十进制就是202.99.160.0
  现在我们就可以解答上面三种情况的通与不通的问题了。
  1、从下面运算结果可以看出二台计算机的网络地址都为192.168.0.0且IP地址不同,所以可以通。
           192.168.0.1      11000000.10101000.00000000.00000001
           255.255.255.0     11111111.11111111.11111111.00000000
       与运算______________________________________________________________
           192.168.0.0      11000000.10101000.00000000.00000000
           192.168.0.200     11000000.10101000.00000000.11001000
           255.255.255.0     11111111.11111111.11111111.00000000
       与运算______________________________________________________________
           192.168.0.0      11000000.10101000.00000000.00000000

  2、从下面运算结果可以看出1号机的网络地址为192.168.0.0,2号机的网络地址为192.168.1.0 不在一个网络,所以不通。
           192.168.1.200     11000000.10101000.00000001.11001000
           255.255.255.0     11111111.11111111.11111111.00000000
       与运算______________________________________________________________
           192.168.1.0      11000000.10101000.00000001.00000000

  3、从下面运算结果可以看出1号机的网络地址为192.168.0.0,2号机的网络地址为192.168.0.192 不在一个网络,所以不通
           192.168.0.1      11000000.10101000.00000000.00000001
           255.255.255.192    11111111.11111111.11111111.11000000
       与运算______________________________________________________________
           192.168.0.0      11000000.10101000.00000000.00000000

           192.168.0.200     11000000.10101000.00000000.11001000



作者:61.138.234.* 2007-5-3 18:06  回复此发言

--------------------------------------------------------------------------------

2 如何计算网络地址
           255.255.255.192     11111111.11111111.11111111.11000000
       与运算______________________________________________________________
           192.168.0.182     11000000.10101000.00000000.11000000

  相信看到这应该明白了为何计算网络地址和如何计算了,但也许还有很多疑问,如IP地址为什么写成这样,子网掩码到底是怎么回事等等,别急,下面慢慢介绍。
三、计算相关地址—通过IP地址和子网掩码与运算计算相关地址
  知道IP地址和子网掩码后可以算出:
  ●网络地址
  ● 广播地址
  ● 地址范围
  ● 本网有几台主机
  【例1】下面例子IP地址为192.168.100.5 子网掩码是255.255.255.0。算出网络地址、广播地址、地址范围、主机数。
  1、分步骤计算
  1)将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。虚线前为网络地址,虚线后为主机地址
           192.168.100.5     11000000.10101000.01100100.00000101
           255.255.255.0     11111111.11111111.11111111.00000000

  2)IP地址和子网掩码进行与运算,结果是网络地址
           192.168.100.5     11000000.10101000.01100100.00000101
           255.255.255.0     11111111.11111111.11111111.00000000
       与运算______________________________________________________________
      结果为: 192.168.100.0     11000000.10101000.01100100.00000000

  3) 将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。
    网络地址为: 192.168.100.0     11000000.10101000.01100100.00000000
    ___________________________________________________________________________
    将主机地址变为全1 
    广播地址为: 192.168.100.255    11000000.10101000.01100100.11111111
  4) 地址范围就是含在本网段内的所有主机
    网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出
    地址范围是: 网络地址+1 至 广播地址-1
    本例的网络范围是:192.168.100.1 至 192.168.100.254
    也就是说下面的地址都是一个网段的。
    192.168.100.1、192.168.100.2 ... 192.168.100.20 ... 192.168.100.111... 192.168.100.254
  5) 主机的数量
    主机的数量=2二进制的主机位数-2
  减2是因为主机不包括网络地址和广播地址。本例二进制的主机位数是8位。
    主机的数量=28-2=254
  2、总体计算
  我们把上边的例子合起来计算一下过程如下:
           192.168.100.5     11000000.10101000.01100100.00000101
           255.255.255.0     11111111.11111111.11111111.00000000

  2)IP地址和子网掩码进行与运算,结果是网络地址
            192.168.100.5     11000000.10101000.01100100.00000101
            255.255.255.0     11111111.11111111.11111111.00000000
    与运算   ______________________________________________________________
    结果为网络地址:192.168.100.0     11000000.10101000.01100100.00000000

在shell脚本中,你可以使用一些数学运算和字符串操作来计算网络地址。通常,这涉及到IP地址的二进制形式、子网掩码的位操作以及网络部分和广播地址的分离。这里是一个简单的步骤说明: 1. **获取IP地址和子网掩码**: 假设你有两个变量,`$ip`存储IP地址,`$subnet_mask`存储子网掩码。例如,如果IP是192.168.1.100,子网掩码是255.255.255.0(十进制表示)。 2. **将IP和子网掩码转换为二进制**: 使用`echo -n $ip | xxd -p`命令将IP转换为十六进制,再将其转换回二进制。对于子网掩码,手动或使用类似的方法。 3. **应用AND运算**: 对比IP的每个比特位与子网掩码的对应比特位。将它们相与(&)得到网络地址部分。比如,IP的前三位用于网络ID,剩余的是主机ID。 4. **创建网络地址广播地址**: 将结果IP取反并与子网掩码相与,得到广播地址网络地址是IP减去广播地址的结果。 5. **格式化结果**: 最后,将计算出的网络地址从二进制转换回点分十进制形式。 下面是一个简单的bash脚本示例,但请注意,这不是一个完整的解决方案,因为实际的脚本会更复杂,需要处理输入验证和错误处理: ```bash #!/bin/bash # 示例IP和子网掩码 ip="192.168.1.100" subnet_mask="255.255.255.0" # 转换并分割IP和子网掩码 ip_binary=$(printf "%x" $ip | xxd -r -p) mask_binary=$(printf "%b" $subnet_mask) # 计算网络地址广播地址 network=$(printf "$ip_binary\0$mask_binary" | awk '{print $1}') broadcast=$(printf "$ip_binary\0$mask_binary" | xargs echo -n | od -An -t uX | rev | tr -d ' ' | cut -c1-32 | rev) # 输出结果 echo "Network Address: $(echo $network | xxd -r -p)" echo "Broadcast Address: $(echo $broadcast | xxd -r -p)" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值