网络详解 - 网络层(2)IPv4介绍
在整个互联网就是一整个抽象的网络,而 IP 地址就是一个32位的标识符,标记着网络上一个个主机。IP 中包含前部分的网络号来标志这个 IP 是属于哪个网络的网络号,后部分用于来表示这个 IP 的主机号。
IP 的历史
IP 的划分主要经历了4个阶段
1.IP 的分类
2.子网的划分
3.超网(CIDR)的构建
4.IPv6 的出现(暂不在该文章中讨论)
IP 的分类
所谓的分类,就是在常见网络中,将IP地址划分成若干个部分。常见的分类有5类。
IP 分类 | 前缀(2 进制) | 网络号位数 | 范围 | 用途 |
---|---|---|---|---|
A类 | 0 | 8 | 1.0.0.0 - 126.255.255.255 | 政府机关使用 |
B类 | 10 | 16 | 128.0.0.0 — 191.255.255.254 | 大中型企业使用 |
C类 | 110 | 24 | 192.0.0.0 — 223.255.255.254 | 个人使用 |
D类 | 1110 | 224.0.0.0 — 239.255.255.254 | 多播 | |
E类 | 1111 | 240.0.0.1 — 255.255.255.254 | 用于实验保留 |
子网的划分
子网指的是从分类网络中划分出来的一部分
子网的划分,将 IP 由2级网络拆分成3级网络,包括网络号、子网号、主机号,使得一个大型网络从逻辑上划分成一个个小网络,从而允许一个单一的站点允许拥有多个局域网。还减少了网络的开销,因为将 IP 的区域划分成了几个部分,分组数据只向某个部分进行转发,但是对外还是表现成一个网络。
子网掩码
那么问题来了,有一个数据包是123.4.5.6,已经到达了网关路由器,怎么才能将这个数据包转发给123.4.5.0 呢?单纯从数据报本身是看不出来的,必须要引入别的机制才能知道,这就有了子网掩码。
类别 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
IP地址 | 123 | 4 | 5 | 6 |
2级IP子网掩码 | 11111111 | 11111111 | 00000000 | 00000000 |
3级IP子网掩码 | 11111111 | 11111111 | 11111111 | 00000000 |
将2级掩码和IP进行与运算,就可以得到2级IP的网络号,同理可以得到3级IP的网络号,将这2个网络号进行比较后,就可以轻松的得出子网号。
相应的路由器的转发表也需要进行改动,需要保存三项字段,目标地址、子网掩码、下一跳地址,这样才能是数据报高效正确转发。
特殊的 IP
除了以上的IP以外还有一些特定的IP,来表达特定的值。
网络号 | 主机号 | 原地址 | 目标地址 | 用途 |
---|---|---|---|---|
全0 | 全0 | 可用 | 不可用 | 用于表示本网络中的本主机(常用用于DHCP协议) |
全0 | host-id | 不可用 | 可用 | 用于表示本网络中的host-id主机 |
net-id | 全1 | 不可用 | 可用 | 用于net-id网络进行广播 |
全1 | 全1 | 不可用 | 可用 | 用于本网络进行广播(路由器均不转发) |
127 | 非全0全1 | 可用 | 可用 | 用于主机进行回环测试 |
专用网络
由于全球的 IP 数量有限,不允许每台主机都拥有全球 IP,就划分出一部分特定的 IP 地址专门用来分配个内网。
- 10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
- 172.16.0.0.0 ~ 172.31.255.255(172.16.0.0.0/12)
- 196.168.0.0 ~ 196.168.255.25(196.168.0.0/16)
构建超网CIDR
按照网络分类,只有划分成3类网络,比如我开了一家公司,只需要6个IP地址就可以了,但是我只能申请一个C类IP地址就有 2^8 个 IP,其中有58个是空闲没有用的。很多公司并不需要C类网络这么多IP地址,导致IP的空间利用率很低,而且 IP 资源也会很快被耗尽,这个时候就出现了 CIDR ,消除了A类B类C类以及子网划分的概念
CIDR将网络分成了2部分,前面部分是“网络前缀”,用来指明网络,后面则用来指明主机。因此CIDR将3级网络又改回了2级,采用的是斜线记法,即在 IP 后面添加上斜线“\”,在写上网络的位数。比如:123.4.5.6/24,就代表前24位是网络前缀,类似于一个C类 IP 地址。