⚡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地址后面斜杠加具体数字详解 - milantgh - 博客园 (cnblogs.com)
IP Subnet (CIDR) Cheat Sheet - Guide & PDF Download Here (networkstraining.com)