⚡IP地址计算相关(补充)

IP地址组成

IP地址是一个32位的二进制地址,被分为4个8位段(八位组)。

IP地址由四段组成,每个字段是一个字节,8位,最大值是255。

IP地址是由两部分组成:网络地址+主机地址

网络地址可以确定IP地址的范围,IP地址其实跟身份证号比较像。

  • A类地址:IP地址的前8位表示网络ID,后24位表示主机ID
  • B类地址:IP地址的前16位表示网络ID,后16位表示主机ID
  • C类地址:IP地址的前24位表示网络ID,后8位表示主机ID

特殊的IP地址

  • 全0主机ID:表示网络本身,如IP地址129.152.0.0是指网络ID为129.152的B类网络
  • 全1主机ID:表示广播地址,如IP地址129.152.255.255是指网络ID为129.152的B类网络的广播地址
  • 十进制127开头的地址:环回地址,用于测试自身TCP/IP软件是否正常,如ping自己127.0.0.1

子网掩码

子网掩码是需要配合IP地址一起使用的,用于指示IP地址的前多少比特是网络ID,后多少比特是主机ID。

如上所示,A、B、C类地址均有固定的默认子网掩码。

即:

A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位);

即11111111.00000000.00000000.00000000

B类的为255.255.0.0(/16); 即11111111.11111111.00000000.00000000

C类的为255.255.255.0(/24);即11111111.11111111.11111111.00000000

IP地址后面斜杠加具体数字CIDR

斜杠后面的数字N,表示IP地址前N位是网络位

例如: /24表示掩码位是24位的

即用32位二进制表示的子网掩码中有连续的24个“1”:11111111 11111111 11111111 00000000

将其转化为十进制,就是:255.255.255.0了。

CIDR(无类别域间路由选择,Classless and Subnet Address Extensions and Supernetting))的形式表示的一个网段,或者说子网

我们知道确定一个子网需要知道主机地址和子网掩码,但用CIDR的形式,可以简单得到两个数值

举例说吧,192.168.0.0/24”就表示,这个网段的IP地址从192.168.0.1开始,到192.168.0.254结束(192.168.0.0和192.168.0.255有特殊含义,不能用作IP地址);子网掩码是255.255.255.0。

上面的子网掩码怎么来的呢?

其实关键就在“24”上。

我们知道IP地址是四个十进制数组成的,相当于32位二进制。

用CIDR表示形式,后一个数字将这32位进行了间隔(以24为例):

前24位用"1"表示,后面8位用0表示,得到一个二进制数:

11111111 11111111 11111111 00000000。

将其转化为十进制,就是:255.255.255.0了。

再如:

192.168.1.0/28表示的意思是网段是192.168.1.0,

子网掩码为:255.255.255.240,

用二进制表示为:11111111 11111111 11111111 11110000。

那24和28两个字不一样,为什么网段是一样的呢?

24位说明网络位是24位,那么主机位就是32-24=8位了,则子网的IP个数是254个,即是从00000001到11111110.

28位说明网络位是28位,那么主机位4位,则子网的IP个数是14个,即是从00000001到00001110.

Assume our fictitious ISP (or big enterprise) is assigned the following IP address range (using CIDR notation):

100.45.48.0 /20

The above notation means that the Network part is 20 bits (as indicated by the CIDR prefix number /20 at the end of the IP address range). Therefore, the Host part is 32-20 = 12 bits which allows for a total of 212 = 4096 IP addresses for hosts.

Using our example above, the actual usable IP addresses that can be assigned to hosts are always 2 less than the total number of IPs.

This is because we don’t use the network address and the broadcast address for hosts.

计算网络地址?

第一问题:已知一个IP地址是192.168.2.1,子网掩码是255.255.255.0,那么它的网络地址是多少?

//将ip地址192.168.2.1转换为二进制
11000000.10101000.00000010.00000001
//将子网掩码255.255.255.0转换成二进制
11111111.11111111.11111111.00000000
//然后将两者相“与(and)"运算(,即乘运算,有一个为0,即为0,两个都为1是才为1):
11000000.10101000.00000010.00000001
11111111.11111111.11111111.00000000
//然后得到:
11000000.10101000.00000010.00000000
//转换成网络地址就是:192.168.2.0

计算IP地址个数?

第二问题:已知某主机的IP地址是192.168.100.200,子网掩码为255.255.255.192,其网络内可用的IP地址个数为多少?

参考

计算机网络 IP地址与子网划分 - 知乎 (zhihu.com)

关于ip地址的计算,都在这里 (qq.com)

IP地址后面斜杠加具体数字详解 - milantgh - 博客园 (cnblogs.com)

IP Subnet (CIDR) Cheat Sheet - Guide & PDF Download Here (networkstraining.com)