Linux ip subnet mask - 网段分析

【基本介绍】
网段的分析可以帮助我们查看两个局域地址是否可以互联,在linux平台iptables封堵ip段,web服务器允许特定ip段的访问等等。

【基本概念】
IP段
  A类IP段  0.0.0.0 到127.255.255.255
  B类IP段  128.0.0.0 到191.255.255.255
  C类IP段  192.0.0.0 到223.255.255.255

子网掩码
  默认分配的子网掩码每段只有255或0
  A类的默认子网掩码 255.0.0.0    一个子网最多可以容纳1677万多台电脑
  B类的默认子网掩码 255.255.0.0   一个子网最多可以容纳6万台电脑
  C类的默认子网掩码 255.255.255.0  一个子网最多可以容纳254台电脑

把子网掩码切换至二进制,我们会发现,所有的子网掩码是由一串连续的1和一串连续的0组成的(一共4段,每段8位,一共32位数)。
  255.0.0.0   11111111.00000000.00000000.00000000
  255.255.0.0  11111111.11111111.00000000.00000000
  255.255.255.0 11111111.11111111.11111111.00000000

网络标识符及网段
要想在同一网段,必需要网络标识相同,那网络标识怎么算呢?各类IP的网络标识算法都是不一样的。A类的,只算第一段。B类,只算第一、二段。C类,算第一、二、三段。
  算法只要把IP和子网掩码的每位数AND就可以了。
  AND方法:0和1=0 0和0=0 1和1=1
  如:And 192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位
  IP      11000000.10101000.00000000.00000001
  子网掩码    11111111.11111111.11111111.00000000
  得出AND结果  11000000.10101000.00000000.00000000
  转换为十进制192.168.0.0,这就是网络标识,
  再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP AND
  得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,
  这0.0.0.1就是主机标识。要想在同一网段,必需要网络标识一样。

Mask
获得2进制网络标识符从右边的第一个1数起的位数。
  IP      11000000.10101000.00000000.00000001
  子网掩码    11111111.11111111.11111111.00000000
  得出AND结果  [color=red]11000000.10101[/color]000.00000000.00000000
192.168.0.0/13

【判断脚本】

>>> from netaddr import IPAddress , IPNetwork
>>> print IPAddress('192.169.1.255') in IPNetwork('192.168.0.0/13')
True
>>> print IPAddress('192.169.255.255') in IPNetwork('192.168.0.0/13')
True
>>> print IPAddress('192.169.255.1') in IPNetwork('192.168.0.0/13')
True



【参考】
[url]http://www.cnblogs.com/henryhappier/archive/2010/01/25/1656174.html[/url]
[url]http://www.techopedia.com/6/28587/internet/8-steps-to-understanding-ip-subnetting/5[/url]
[url]http://wenku.baidu.com/link?url=pgr7H0BlaSZAWv459g8N0AmdunNP4easONKg_HC2s67SO-F9C_kcFzrpjX18bey-P8PMC3K-P4zpPyNO3OqLkX33np_PrkiyJ6rs4-dDf6y[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值