根据子网前缀的长度计算ip范围

要根据子网前缀的长度计算IP范围,我们需要了解子网前缀长度与子网掩码之间的关系,以及如何通过子网掩码来确定IP地址的网络部分和主机部分。以下是根据子网前缀长度计算IP范围的步骤:

  1. 确定子网前缀长度
    子网前缀长度(也称为CIDR前缀长度)表示在IP地址中,网络部分占据的位数。例如,/24表示网络部分占据前24位。

  2. 计算子网掩码
    根据子网前缀长度,我们可以计算出子网掩码。子网掩码是一串连续的1,后跟一串连续的0,其长度与IP地址的位数相同(对于IPv4地址是32位)。例如,对于/24前缀长度,子网掩码是255.255.255.0(即11111111.11111111.11111111.00000000)。

  3. 确定网络地址
    网络地址是子网中第一个IP地址,它通过将IP地址与子网掩码进行按位AND运算得到。例如,如果IP地址是192.168.1.1,子网掩码是255.255.255.0,则网络地址是192.168.1.0

  4. 计算广播地址
    广播地址是子网中最后一个IP地址,它通过将网络地址的主机部分全部设置为1得到。例如,对于/24前缀长度的网络,广播地址是网络地址的最后一段 + 255(在二进制下是全部为1)。所以,如果网络地址是192.168.1.0,则广播地址是192.168.1.255

  5. 确定可用的IP地址范围
    可用的IP地址范围是从网络地址的下一个地址开始,到广播地址的前一个地址结束。例如,对于网络地址192.168.1.0和广播地址192.168.1.255,可用的IP地址范围是192.168.1.1192.168.1.254

  6. 考虑特殊地址
    在网络中,网络地址和广播地址通常不分配给主机使用,因为它们有特殊的用途。网络地址用于标识子网本身,而广播地址用于向子网内的所有设备发送广播消息。

综上所述,根据子网前缀的长度计算IP范围涉及确定子网掩码、网络地址、广播地址,并考虑特殊地址的用途。通过这些步骤,我们可以准确地计算出任何给定子网前缀长度的IP地址范围。

//对应ip的32位4部分  a.b.c.d
//子网前缀长度
//计算ip范围的方法实现
//CIDR前缀长度
//a.b.c.d/n   例如220.115.200.0/21
//第一步 将ip转为二进制编码  a,b,c,d
//-------------------------------数字转二进制 start--------------------------------------
//转二进制的方法  先列出8位1 各自代表的值 128  64  32  16  8  4  2 1
//以a为例计算,从高位开始减 依次尝试减去128  64  32  16  8  4  2 1
//temp=a;
//计算第8位a-128 >=0  则第8位为1,当前计算记录值temp减去128;否则第8位为0,当前计算值减去0,也就是不变  220为(220.115.200.0/21中的第一位)  220-128=92 >0   1000 0000  temp=92
//计算第7位temp-64 >=0  则第7位为1,当前计算记录值减去64;否则第7位为0,当前计算值减去0,也就是不变 92-64=28>0  1100 0000  temp=28
//计算第6位temp-32 >=0  则第6位为1,当前计算记录值减去32;否则第6位为0,当前计算值减去0,也就是不变 28-32=-4<0  1100 0000 temp=28
//计算第5位temp-16 >=0  则第5位为1,当前计算记录值减去16;否则第5位为0,当前计算值减去0,也就是不变 28-16=12 >0  1101 0000 temp=12
//计算第4位temp-8 >=0  则第4位为1,当前计算记录值减去8;否则第4位为0,当前计算值减去0,也就是不变  12-8=4>0  1101 1000 temp=4
//计算第3位temp-4 >=0  则第3位为1,当前计算记录值减去4;否则第3位为0,当前计算值减去0,也就是不变  4-4=0==0  1101 1100 temp=4-4=0
//计算第2位temp-2 >=0  则第2位为1,当前计算记录值减去2;否则第3位为0,当前计算值减去0,也就是不变  0-2=-2<0  1101 1100 temp=0
//计算第1位temp-1 >=0  则第1位为1,当前计算记录值减去1;否则第3位为0,当前计算值减去0,也就是不变  0-1=-1<0  1101 1100 temp=0

//200转成二进制表示为10110100
//-------------------------------数字转二进制 end  --------------------------------------

//4个数字都转换  220.115.200.0  =》 11011100   1110011  11001000  00000000


//子网掩码  即前n个是1  220.115.200.0/21 中21个1  11111111 11111111 11111000 00000000



//第二步  ip二进制和子网掩码二进制 进行与运算(相同位都为1,则结果为1,否则为0)
//    11011100 01110011 11001000 00000000
//    11111111 11111111 11111000 00000000 
//结果11011100 01110011 11001000 00000000
//将结果转为10进制 
//----------------------------------------------2进制转10进制的方法----------------------------------------
//当前位的值乘以2(位数-1)的次方, 例如11011100  :1*2^7+1*2^6+0*2^5+1*2^4+1*2^3+1*2^2+0*2^1+0*2^0=220
//以此类推 11011100 01110011 11001000 00000000  =》 220.115.200.0  
//起始地址为 220.115.200.0

//第三步 计算ip地址范围的结束地址
// 起始地址对应二进制的后(32-n)位全部设置为1. ) 11011100 01110011 11001000 00000000的32-21=11位设置为1  
//11011100 01110011 11001000 00000000 => 11011100 01110011 11001111 11111111  再转为10进制 =》 220.115.207.255
//其中最后一位需要减1  220.115.207.255=》220.115.207.254
//大功告成  ip范围为 220.115.200.0-220.115.207.254

你可能感兴趣的:(软考,tcp/ip,网络,服务器)