IPv4的IP地址
1、分类IP
IP地址的表示方式:
IP地址在整个互联网中是唯一的,指明了连接到某个网络上的一个主机。IP地址用32位二进制数表示,每一个字节代表一段,如下图IP地址即为128.11.3.31。
什么是多归属主机:
当一个主机通过两个网卡同时连接到两个网络时,此时该主机同时拥有两个IP,这种主机被称为多归属主机。
IP地址中常见的二进制数:
- 255:1111 1111
- 128:1000 0000
- 192:1100 0000
- 224:1110 0000
- 240:1111 0000
特殊的IP地址:
网络号全为0/1/127、主机号全为1/0 这几类IP是特殊的IP,具体特殊含义如下:
总结:网络全0代表本网络,主机号全0代表广播,网络号127代表回环。
IP地址的网络号与主机号(2级结构):
IP地址的32个位可以分为网络号与主机号两个部分。网络号与主机号所占位数的多少与IP的种类有关,所占位数与IP种类关系如下图:
从上图可以看到,A类IP由0开头,网络号占8位,所以网络号的范围是0~127。A类主机号占24位,所以总共的主机号有2^24个,但主机号全为0或全为1的IP不可用,是特殊功能IP,因此实际可用IP个数为2^24-2。以此类推,各类IP的网络号范围如下:
|------|----------|------------------|
| IP类型 | 网络号范围 | 实际可用IP个数 |
| A | 0~127 | 2^24-2(>1600w) |
| B | 128~191 | 2^16-2(65534) |
| C | 192~223 | 2^8-2(254) |
| D | 223~239 | |
| E | 240~255 | |
IP地址的子网号(3级结构):
划分子网号的目的是为了解决主机号浪费的问题,子网号是根据需求从主机号中划分出来的。
比如一个拥有10000台主机的组织,如果按照2级结构,需要申请的IP类型应该为B型,但是B型实际可用IP为65533个,这就浪费了大量的IP。
如果使用3级结构划分子网,IP分配过程为:申请的IP类型仍然是B型,但因为10000<2^14,所以可以将16位的主机号分为2位的子网号和14位的主机号,这样就可以将剩余的IP分配给其他的组织。即:该组织的子网号是00,主机号为14位;另一个组织子网号是01,主机号为14位。这样就节约了一些IP资源。
2、CIDR方式处理IP
CIDR是什么:
CIDR就是无分类域间路由选择,也称为误分类编址。它消除了A、B、C类地址以及划分子网的概念,比前面叙述的2级、3级结构更有效的分配IPv4的地址空间。
CIDR如何处理IP:
CIDR将IP的32位分为了网络前缀和主机号这两部分,与2级结构区别是不再事先规定网络号的前缀,而是根据需求去分配网络前缀,即:网络前缀的位数可以是0~32。记作a.b.c.d/n,其中n代表前n位是网络前缀,比如128.14.35.7/20代表高20位是网络前缀,剩余低位是主机号。
计算128.14.35.7/20的网络前缀方法如下:
什么是CIDR地址块:
地址块就是所有网络前缀一样的IP的集合。地址块用二进制代码表示为:<网络编号>*
下面是20位网络编号的IP的地址块,其中网络编号是10000000 00001110 0010
区分CIDR与2级结构的IP:
CIDR必须在点分十进制记法后有 " /<网络编号位数> ",如果没有就是2级结构的IP。
什么是地址掩码:
地址掩码也称子网掩码,它是一个32位的数,其中网络编号部分全为1,主机号部分全为0。
例如:20位网络编号的IP的子网掩码为11111111 11111111 11110000 00000000,用CIDR记法记作:255.255.240.0/20,点分十进制记法记作255.255.240.0
默认的地址掩码:
尽管CIDR消除了A、B、C类地址,但依旧存在A、B、C类地址的地址掩码,这些被称为默认地址掩码。
- A:255.0.0.0(A是8位网络号)
- B:255.255.0.0(B是16位网络号)
- C:255.255.255.0(C是24位网络号)
通过掩码计算网络前缀:
子网掩码的目的是让计算机快速从IP中计算出网络地址。计算公式为:IP & 掩码 = 网络地址
IPv6的IP地址
IPv4的每个地址占32位,而IPv6的每个地址占128位,大大扩大了IP地址的资源。
IPv6冒号十六进制记法:
十六进制记法就是用4个十六进制数表示2个字节。原IPv4的记法是用3个十进制数表示1个字节。
十六进制记法中一共有128/8/2=8个部分
什么是零压缩:
零压缩就是在使用十六进制记法时,如果出现了一连串的0,则用 "::" 来表示,而不需要再写0。
注意:在一个IPv6的地址中,只能使用一次零压缩。
即不存在xxx::xxx::xxx压缩后有两个"::"的情况