文章目录
IPv4
IPv4
(Internet Protocol version 4)是互联网上最常用的 IP 协议版本。是给因特网(Intemnet)上的每一个主机(或路由器)的每一个接口 分配的一个在全世界范围内唯一的32比特的标识符 。它是互联网传输层协议栈中的网络层协议,用于为网络中的设备分配唯一的 IP 地址,并在网络上传输数据。
IPv4 地址空间的有限性导致了 IP 地址短缺问题。IPv4 地址共有约 42 亿个,但是随着互联网的快速发展,这个数量已经远远不够。2011年2月3日,因特网号码分配管理局(Internet Assigned Numbers Authority,IANA)(由 ICANN 行使职能)宣布,IPv4 地址已经分配完毕。
IPv4的表示方法
IPv4 地址是由 32位二进制数 表示,通常以"点分十进制 "(dotted decimal)的形式呈现,如 192.168.0.1
。IPv4 地址由两部分组成,网络部分 和主机部分:
- 网络部分用来标识网络
- 主机部分用来标识网络中的具体设备
IPv4的编址方法
IPv4地址的编址方法经历了三个历史阶段:
分类编址
IPv4 的分类编址方法将 32 比特的 IPv4 的地址划分为网络号部分 和主机号部分:
-
网络号 :标志主机(或路由器)的接口所连接到的网络 。同一个网络中,不同主机(或路由器)的接口 的IPv4地址的网络号必须相同,表示它们属于同一个网络。
-
主机号 :标志主机(或路由器)的接口 。同一个网络中,不同主机(或路由器)的接口 的IPv4地址的主机号必须各不相同,以便区分各主机(或路由器)的接口
IPv4 的分类编址方法将 IPv4 地址分为了五类:
-
A类、B类和C类地址都是单播地址 ,只有单播地址可以分配给网络中的主机(或路由器)的各接口
-
主机号为"全0 "的地址是网络地址,不能分配给主机(或路由器)的各接口
-
主机号为"全1 "的地址是广播地址,不能分配给主机(或路由器)的各接口
A类地址
-
开头的八位组(第一个字节)的第一位必须是
0
。 -
这一类地址主要用于大型网络,如企业或国家层面的网络。
-
A 类地址的第一个字节代表网络号,其余三个字节代表主机号。
-
其地址范围是从
1.0.0.0
到126.255.255.255
。 -
每个 A 类网络最多支持约 1677万(2^24)个主机。
本地环回测试地址 ,也被称为环回地址或本地回环地址,是一组特殊的IP地址,主要用于测试本机的网络配置和模拟网络通信。当需要测试本机上的网络应用程序或服务时,可以使用环回地址进行通信,数据报由本机进行接收和处理,不会发送到其他主机。
B类地址
-
开头的八位组的前两位必须是
10
。 -
B 类地址适合中型网络,如大学校园或大公司内部网络。
-
前两个字节代表网络号,后两个字节代表主机号。
-
其地址范围是从
128.0.0.0
到191.255.255.255
。 -
每个 B 类网络最多支持约 65534(2^16 - 2)个主机。
C类地址
-
开头的八位组的前三位必须是
110
。 -
C 类地址通常用于小型网络,如家庭或小型办公室。
-
前三个字节代表网络号,最后一个字节代表主机号。
-
其地址范围是从
192.0.0.0
到223.255.255.255
。 -
每个 C 类网络最多支持约 254(2^8 - 2)个主机。
可指派的地址数量
-
D 类地址:
- 开头的八位组的前四位必须是
1110
。 - D 类地址用于多播通信,即将数据包发送给一组选定的接收者。
- 其地址范围是从
224.0.0.0
到239.255.255.255
。
- 开头的八位组的前四位必须是
-
E 类地址:
- 开头的八位组的前五位必须是
11110
。 - E 类地址保留供实验和研究使用,不用于常规互联网通信。
- 其地址范围是从
240.0.0.0
到255.255.255.255
。
- 开头的八位组的前五位必须是
一般不使用的特殊IPv4地址
如下 IPv4 地址一般在特殊情况下使用
划分子网编址
随着更多的中小网络加入因特网,IPv4
分类编址方法不够灵活、容易造成大量IPv4地址资源浪费的缺点就暴露出来了,剩余的大量地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。
申请新的网络号存在以下弊端:
- 需要等待很长的时间,并且要花费更多的费用
- 即便申请到了两个新的网络号,其他路由器的路由表还需要新增针对这两个新的网络的路由条目。
- 浪费原来已申请到的网络中剩余的大量地址
因此,划分子网编址方法对其进行改进("打补丁")
如果可以从 IPv4
地址的主机号部分借用一些比特作为子网号 来区分不同的子网,就可以利用原有网络中剩余的大量 IPv4
地址,而不用申请新的网络地址了。
子网掩码
从 IPv4
地址的主机号部分借用一些比特作为子网号 来区分不同的子网,就引入了一个新的概念:子网掩码 ,可以表明分类 IPv4
地址的主机号部分被借用了几个比特作为子网号。
与 IPv4
地址类似,子网掩码也是由 32比特 构成的。
- 用左起多个连续的比特1 对应
IPv4
地址中的网络号和子网号 - 之后的多个连续的比特0 对应
IPv4
地址中的主机号。
将划分子网的IPv4地址与相应的子网掩码 进行逐比特的逻辑与运算 ,就可得到该 IPv4
地址所在子网的网络地址。
只要给定了一个分类的 IPv4 地址及其相应的子网掩码就可以得出子网划分的全部细节。
子网划分:
-
原始网络:
- 网络地址:
218.75.230.0
- 子网掩码:
255.255.255.0
- 网络地址:
-
子网划分:
- 从主机号中借用一位来形成子网号,使得每个子网拥有更多的地址。
- 新的子网掩码变为:
255.255.255.128
-
子网0:
- 网络地址:
218.75.230.0
- 主机地址范围:
218.75.230.1
至218.75.230.126
- 广播地址:
218.75.230.127
- 网络地址:
-
子网1:
- 网络地址:
218.75.230.128
- 主机地址范围:
218.75.230.129
至218.75.230.254
- 广播地址:
218.75.230.255
- 网络地址:
- 网络号: 是固定不变的,标识整个网络。
- 子网号: 通过借用主机号的一位来区分不同的子网。
- 主机号: 表示单个设备在网络内的唯一标识。
默认子网掩码
默认子网掩码是指在未划分子网的情况下使用的子网掩码
-
A 类地址 :默认子网掩码为
255.0.0.0
-
B 类地址 :默认子网掩码为
255.255.0.0
-
C 类地址 :默认子网掩码为
255.255.255.0
无分类编址方法
IPv4 地址的划分子网编址方法在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网( 2 24 − 3 = 2097152 2^{24-3}= 2097152 224−3=2097152)由于其每个网络所包含的地址数量太小( 2 8 = 256 2^8=256 28=256),因此并没有得到充分使用,而因特网的 IPv4 地址仍在加速消耗,整个 IPv4 地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址 的方法,来解决 IPv4 地址资源紧张的问题,同时还专门成立 IPv6
工作组负责研究新版本的 IP,以切底解决 IPv4 地址耗尽问题。
1993年,因特网工程任务组IETF发布了无分类域间路由选择 (Classless Inter-Domain Routing,CIDR )的 RFC 文档 [RFC1517~1519,RFC1520]
.
CIDR
消除了传统 A 类、B 类和 C 类地址以及划分子网的概念CIDR
可以更加有效地分配 IPv4 地址资源,且可以在 IPv6 使用之前允许因特网的规模继续增长。
地址掩码
无分类编址方法使用的地址掩码 与划分子网使用的子网掩码 类似,由32比特构成。
-
用左起多个连续的比特1 对应IPv4地址中的网络前缀,
-
之后的多个连续的比特0 对应IPv4地址中的主机号。
-
对于无分类编址的 IPv4 地址,仅从地址自身无法看出网络前缀和主机号各自的长度
无分类编址方法示例:
从二进制表示可以看出,地址掩码中连续的"1"位定义了网络前缀的长度。在这个例子中,连续的"1"位共有20位,因此网络前缀占用了20比特 。剩下的12比特则属于主机号部分。
斜线记法
为了简便起见,可以不明确给出配套的地址掩码的点分十进制形式,而是在无分类编址的IPv4地址后面,加上斜线 "/"
在斜线,之后写上网络前缀所占的比特数量 (也就是地址掩码中左起连续比特1的数量),这种记法称为斜线记法。
如:128.14.35.7/20
,网络前缀为 20 比特 ,主机号为 12 比特(32-20)
无分类域间路由选择 CIDR
无分类域间路由选择 CIDR 是将网络前缀都相同的、连续的多个无分类IPv4地址 ,组成一个CIDR地址块,只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的以下全部细节:
- 地址块中的最小地址
- 地址块中的最大地址
- 地址块中的地址数量
- 地址块中聚合某类网络 (A类、B类、C类)的数量
- 地址掩码
分类编址方法只能以 /8(A类网络)
、/16(B类网络)
或 /24(C类网络)
为单位来分配,既不灵活,也容易造成 IPv4
地址的浪费。而使用 CIDR
的一个好处是,可以根据客户的需要分配适当大小的CIDR地址块 ,因此可以更加有效地分配 IPv4
的地址空间。
使用 CIDR
的另一个好处是路由聚合 (也称为构造超网)
在如下图的例子中,我们对 R2
的路由表进行了聚合操作 。具体来说,我们将五个子网的路由条目合并为一个单一的聚合路由条目 。
-
确定公共前缀 :首先,我们需要找到这些子网地址的公共前缀。观察这些子网地址,我们可以看到它们的前缀都是
172.1
。这意味着它们共享了前 16 位。 -
计算最长公共前缀 :接下来,我们需要找出这些子网地址中最长的公共前缀。在这种情况下,最长公共前缀是
172.1.4
,对应于前 22 位。 -
创建聚合路由 :根据最长公共前缀,我们可以创建一个新的聚合路由条目。该条目的地址范围覆盖了所有的原始子网地址。在这个例子中,聚合后的路由条目是
172.1.4.0/22
。
最终,R2
的路由表中只有一个聚合路由条目 172.1.4.0/22
,而不是原来的五个具体路由条目。这种聚合方式大大减小了路由表的规模,同时也降低了路由查找的时间复杂度。
-
网络前缀越长,地址块越小,路由越具体
-
若路由器查表转发分组时发现有多条路由条目匹配,则选择网络前缀最长的那条路由条目,这称为最长前缀匹配,因为这样的路由更具体。