zoukankan      html  css  js  c++  java
  • 如何判断两个IP地址是不是在同一个网段

     要判断两个IP地址是不是在同一个网段,就将它们的IP地址分别与子网掩码做与运算,得到的结果一网络号,如果网络号相同,就在同一子网,否则,不在同一子网。
    例:假定选择了子网掩码255.255.254.0,现在分别将上述两个IP地址分别与掩码做与运算,如下所示:  www.2cto.com  
    211.95.165.24 11010011 01011111 10100101 00011000
    255.255.254.0 11111111 11111111 111111110 00000000
          与的结果是: 11010011 01011111 10100100 00000000
     
    211.95.164.78 11010011 01011111 10100100 01001110
    255.255.254.0 11111111 11111111 111111110 00000000
          与的结果是: 11010011 01011111 10100100 00000000 
     
    (注:)And:与运算。只有同为真时才为真。
    True and False 结果为False.
    True and True 结果为True;
    Flase and False 结果为False;
     
     
     
    可以看出,得到的结果(这个结果就是网络地址)都是一样的,因此可以判断这两个IP地址在同一个子网。
     
    例如:有一个C类地址为:192.9.200.13,按其IP地址类型,它的缺省子网掩码为:255.255.255.0,则它的网络号和主机号可按如下方法得到:
     
    第1步,将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101
    第2步,将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000
    第3步,将以上两个二进制数逻辑进行与(AND)运算,得出的结果即为网络部分。“11000000 00001001 11001000 00001101”与“11111111 11111111 11111111 00000000”进行“与”运算后得到“11000000 00001001 11001000 00000000”,即“192.9.200.0”,这就是这个IP地址的网络号,或者称“网络地址”。  www.2cto.com  
    第4步,将子网掩码的二进制值取反后,再与IP地址进行与(AND)运算,得到的结果即为主机部分。如将“00000000 00000000 00000000 11111111(子网掩码的取值)反”与“11000000 00001001 11001000 00001101”进行与运算后得到“00000000 00000000 00000000 00001101”,即“0.0.0.13”,这就是这个IP地址主机号(可简化为“13”)。
     
    主机位中有3位被划为“网络标识号”占用,因网络标识号应全为“1”,所以主机号对应的字节段为“11100000”。转换成十进制后为224,这就最终确定的子网掩码。如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是A类网,则子网掩码为255.224.0.0。
  • 相关阅读:
    bzoj2018 [Usaco2009 Nov]农场技艺大赛
    2014.9.27模拟赛【栅栏迷宫】
    cf471B MUH and Important Things
    cf471A MUH and Sticks
    bzoj3016 [Usaco2012 Nov]Clumsy Cows
    bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
    bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典
    bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫
    codevs1040 统计单词个数
    codevs1039 数的划分
  • 原文地址:https://www.cnblogs.com/wgx0428/p/3203157.html
Copyright © 2011-2022 走看看