引言展开目录
我们把整个因特网看成是一个单一的,抽象的网络。IP 地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围是唯一的 32 位的标识符。IP 地址的编址方法共经历了分类、改进分类、无分类三个历史阶段,本文将介绍基础的分类编址方式,以辅助后面第四、第五篇笔记介绍改进分类(子网划分)及无分类(超网构成)
IP 层次结构展开目录
层次化 IP 地址展开目录
以前人们打座机电话前面都要加几位区号,你一拨前面的区号,电话交换机才知道转到哪去。回到上图,假设现在有一个数据包的目的地址是
192.168.1.0
,路由器收到数据包,只要看到 192.168.1
,就往第一个网段发送了。路由器根本不管到某一台计算机怎么走,他只关心到某一个网段怎么走。这就是将 IP 地址分成网络 ID 和主机 ID 的意义。
分类的 IP 地址结构展开目录
所谓的 “分类的 IP 地址” 就是将 IP 地址划分为若干类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id), 它标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号所指明的网络范围内是唯一的。由此可见,一个 IP 地址在整个网络范围内是唯一的
这种两级的 IP 地址可以记为:IP 地址 ::= {< 网络号>, < 主机号 >},图 1 给出了各种 IP 地址的网络号字段和主机号字段,这里 A 类、B 类和 C 类地址都是单播地址,是最常用的由上图可以得到以下信息:
- A 类、B 类和 C 类地址的网络号字段,分别是 8、16 和 24 位,而在网络号字段的最前面有 1~3 位的类别号,其数值分别规定为 0、10 和 110
- A 类、B 类和 C 类地址的主机号字段分别为 24、16 和 8 个字节长
- D 类地址(前 4 位 1110)用于多播(一对多通信)
- E 类地址(前四位 1111)保留为以后用
A、B、C 类常用地址及划分依据展开目录
从 IP 地址的结构来看,IP 地址并不仅仅指明一个主机,而且还指明了主机所连接到的网络
把 IP 地址划分为 A、B、C 三个类别,当初是这样考虑的,各种网络的差异很大,有的网络拥有很多主机,有的网络上主机则很少。把 IP 地址划分为 A 类、B 类、C 类是为了更好满足不同用户的要求。当一个单位申请到一个 IP 地址时,实际上是获得了同样网络号的一块地址。其中具体的各个主机号则由该单位自行分配,只要做到单位管辖的范围内无重复的主机号即可
IP 地址分类示意图展开目录
要想记住每类 IP 地址的范围非常简单,首先画出 0~255,取一半就是 128,所以 [0,127] 就是 A 类地址;再将 128~255 取一半就是 192,所以 [128,191] 就是 B 类地址;再将 192~255 取一半就是 224,所以 [192,223] 就是 C 类地址。以此类推
A 类地址展开目录
A 类地址的网络号字段有 8 位,只有 7 位可供使用(该字段第一位固定为 0),但可指派的网络号是 126 个(即 128-2)。减 2 的原因是:第一,网络号字段为全 0 的 IP 地址是个保留地址,意思是 “本网络”。第二,网络号为 127 即(01111111)保留作为本地软件环回测试本主机的进程之间通信之用
若主机发送一个目的地址为环回地址(如 127.x.x.x)的 IP 数据报,则本主机中的协议软件就处理数据报中的数据,不会把数据报发送到任何网络。目的地址为环回地址的 IP 数据报永远不会出现在任何网络上,因为网络号为 127 的地址根本不是一个网络地址
A 类地址的主机号占 24 位,因此每一个 A 类网络中的最大主机号为 $2^{24}-2$,即 16777214。这里减 2 的原因是:全 0 的主机号字段表示该 IP 地址是 “本主机” 所连接到的单个网络地址(例如一主机 IP 地址为 5.6.7.8,则该主机所在的网络地址就是 5.0.0.0)。全 1 表示所有的(all),因此全 1 的主机号字段表示该网络上的所有主机
IP 地址空间共有 $2^{32}$ 即 4294976296 个地址。整个 A 类地址空间共有 $2^{31}$ 个地址,占有整个地址空间的 50%
B 类地址展开目录
B 类地址的网络号字段有 16 位,但前面两位(10)已经固定了,只剩下 14 位可以进行分配。因为网络号字段后面的 14 位无论怎样取值也不可能出现使整个 2 字节网络号字段称为全 0 或者全 1,因此这里不存在网络总数减 2 的问题。但实际上 B 类网络地址 128.0.0.0 是不指派的,可以指派的 B 类最小地址为 128.1.0.0. 因此 B 类地址可指派的网络数为 $2^{14}-1$,即 16383。B 类地址的每一个网络上最大主机数是 $2^{16}-2$,即 65534,减去的是全 0 和全 1 的主机号。整个 B 类地址空间共约有 $2^{30}$ 个地址,占整个 IP 地址空间的 25%
C 类地址展开目录
C 类地址有 24 位网络号字段,最前面的 3 位是(110),还有 21 位可以进行分配。C 类网络地址 192.0.0.0 也是不指派的,可以指派的 C 类地址最小是 192.0.1.0,因此 C 类地址可指派的网络总数是 $2^{21}-1$,即 2097151. 每一个 C 类地址最大主机数是 $2^8-2$,即 254。整个 C 类地址空间共约有 229 个地址,占整个 IP 地址的 12.5%
IP 地址的指派范围展开目录
IP 地址的一些重要特点展开目录
IP 地址是一种分等级的地址结构。分两个等级的好处是:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
- 按照因特网的定义,一个网络是指具有相同网络号 net-id 的主机的集合,因此用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id
- 在 IP 地址中,所有分配到网络号 net-id 的网络,不论是范围很小的局域网,还是覆盖很大地理范围的广域网,都是平等的
一个实际的例子展开目录
图中画出了三个局域网 LAN1、LAN2、LAN3。这三个局域网通过三个路由器 (R1、R2、R3) 互连起来构成了一个互联网(用虚线圆角方框表示)。其中局域网 LAN2 是通过网桥 B 互连的。图中圆圈表示需要一个 IP 地址
结合上面内容及 IP 地址特点,我们应该注意到:
- 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。图中的网络号就是 IP 地址中的 网络号字段的值
- 路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址
- 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊 “网络”(如图中 N1、N2、N3)。之所以称之为网络,因为他们有 IP 地址、但为了节省 IP 地址,对于这种仅由一段连线构成的特殊 “网络”,现在常不指明 IP 地址。称为无编号网络或者无名网络
- 用网桥(它只在数据链路层工作)互连的网段仍然是一个局域网,只能有一个网络号
备注:实际可以分配的 IP 数量 = 可指派的网络号数量 * 单个网络最大主机数,以 A 类地址为例,(27 - 2) *(224-2),可以粗略记为 $2^{31}$
保留的 IP 地址展开目录
- 主机 ID 全为 0 的地址:特指某个网段,比如 192.168.10.0 255.255.255.0,指 192.168.10.0 网段
- 主机 ID 全为 1 的地址:特指该网段的全部主机,如果你的计算机发送数据包使用主机 ID 全是 1 的 IP 地址,数据链层地址用广播地址 FF-FF-FF-FF-FF-FF
- 127.0.0.1:是本地环回地址,指本机地址,一般用来测试使用
- 回送地址 (127.x.x.x) 是本机回送地址 (Loopback Address),即主机 IP 堆栈内部的 IP 地址
- 169.254.0.0:169.254.0.0-169.254.255.255 实际上是自动私有 IP 地址
- 0.0.0.0:如果计算机的 IP 地址和网络中的其他计算机地址冲突,使用 ipconfig 命令看到的就是 0.0.0.0,子网掩码也是 0.0.0.0