4.2.2 IPv4 地址
## 4.2.2 IPv4 地址
### 1. IPv4 地址
IP地址是为连接到互联网上的每台主机(或路由器)的每个接口,分配的一个全球唯一的32位标识符。IP地址的分配由互联网名字与数字分配机构(ICANN)统一管理。为方便书写和记忆,通常将32位IP地址分为4段,每段8位,转换为等效的十进制数,并用小数点分隔,即一个IP地址用4段十进制数表示,这种表示方法称为点分十进制记法。
### 2. 分类的 IP 地址
互联网早期采用的是分类的IP地址,如图4.7所示。
无论哪类 IP 地址,都由网络号和主机号两部分组成。即 IP 地址:: = {<网络号>, <主机号>}。其中网络号标志主机(或路由器)的接口所连接到的网络,一个网络号在整个互联网范围内必须唯一。主机号标志该主机(或路由器)的接口,一个主机号在其网络号所指的网络范围内必须唯一。由此可见,每个 IP 地址在整个互联网中是唯一的。
<!-- page: 152 -->
2027年计算机网络考研复习指导
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图4.7 分类的IP地址
## 考点说明
## 0.0.0.0 地址的作用(2017)
A类、B类和C类地址均为单播地址(用于一对一通信),可分配给主机或路由器的接口。但以下特殊IP地址不能用作普通主机的地址:
- 主机号全为0:表示本网络本身(网络地址),例如202.98.174.0。
- 主机号全为 1:表示本网络的广播地址,也称直接广播地址,例如 202.98.174.255。
- $127.\times.\times.\times$:保留用于本地环回测试(Loopback Test),仅用于本机进程间的通信,目的地址为环回地址的IP数据报不会被发送到任何物理网络。
- 32位全为0,即0.0.0.0:表示本网络上的本主机(常用于DHCP,见4.2.6节)。
- 32位全为1,即255.255.255.255:表示受限广播地址,仅在本网络内广播。
常用的三种类别IP地址的使用范围见表4.2。
表 4.2 常用的三种类别 IP 地址的使用范围①
| 网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
| --- | --- | --- | --- | --- |
| A | 27-2 | 1 | 126 | 234-2 |
| B | 214 | 128.0 | 191.255 | 216-2 |
| C | 221 | 192.0.0 | 223.255.255 | 28-2 |
在表4.2中,A类地址可用的网络数为 $2^{7}-2$ ,减2的原因如下:①网络号为0($0.\times.\times.\times$),保留用于特殊用途;②网络号为127($127.\times.\times.\times$),保留作为环回测试地址。每个网络中的最大主机数减2的原因是:①主机号全为0的地址用作网络地址(标识本网络);②主机号全为1的地址用作直接广播地址(向本网络所有主机广播),这两个地址不能分配给主机使用。
IP地址具有以下重要特点:
1)IP地址由网络号和主机号两部分组成,是一种分等级的地址结构。这种设计带来了两大优势:①IP地址管理机构只分配网络号,主机号由获得该网络的单位自行分配,便于地址管理;②路由器转发分组时仅依据目的地址的网络号,从而显著减小路由表规模。
2)IP地址标识的是网络接口,而非主机本身。当一台主机同时连接到多个网络时,必须为每个接口配置一个IP地址,且各地址的网络号必须不同。因此,路由器至少拥有两个或更多的IP地址,每个接口对应一个不同网络号的IP地址。
3)通过集线器或交换机连接的多个网段在逻辑上仍然属于同一个网络(同一个广播域),因此,其中所有主机的IP地址必须具有相同的网络号,但主机号必须唯一。
4)IP地址是逻辑地址,与底层物理硬件(如MAC地址)无关。这使得网络层能够屏蔽链
① B类网络号128.0和C类网络号192.0.0早期标准规定不能指派,但现在都能指派[RFC6890]。
<!-- page: 153 -->
第4章 网络层
141
路层的异构性,支持跨不同物理网络的统一通信。
近年来,随着无分类编址的广泛应用,这种传统分类的 IP 地址已逐渐退出历史舞台。
## 3. 划分子网
### (1)划分子网
传统的两级 IP 地址结构(仅含网络号和主机号)存在以下主要缺点。
- 地址空间利用率低:为每个物理网络分配一个完整网络号,导致大量主机号未被使用。
- 路由表规模过大:网络数量增长使路由表膨胀,从而影响转发性能。
- 地址分配缺乏灵活性:无法根据实际需求,对网络进行更细粒度的划分。
为克服上述问题,从 1985 年起,在 IP 地址中增加“子网号”字段,形成三级结构:
IP 地址:: = {<网络号>, <子网号>, <主机号>}
这一机制称为划分子网,现已成为互联网的正式标准。
划分子网的基本思想如下。
1)对外透明:单位对外仍表现为单一网络,外部路由器无须感知其内部子网结构。
2)内部灵活划分:从原主机号中借用若干位作为子网号,主机号位数相应减少。
3)分层转发:外部路由器根据网络号转发数据报至该单位边界路由器;边界路由器再结合子网号,将数据报交付至具体子网,最终送到目的主机。
例如,将一个 C 类网络 208.115.21.0 划分为 4 个子网,需借用 2 位作为子网号(因为 $2^{2} = 4$),主机号剩余 6 位,每个子网中的最大主机数为 $2^{6} - 2 = 62$(扣除网络地址和广播地址),各子网的网络地址为:208.115.21.0、208.115.21.64、208.115.21.128、208.115.21.192。
### 注意
① 划分子网仅对 IP 地址的主机号部分再划分,不改变原网络号,因此无法从 IP 地址本身判断是否划分子网。
② 划分子网提升了地址分配的灵活性,但也使特定网络的可分配主机总数略有减少。
### (2)子网掩码
**特别提示** 网络地址的确定方法(2022)
子网掩码是一个与 IP 地址对应的 32 位二进制串,由一串 1 后跟一串 0 组成。其中,1 对应 IP 地址中的网络号和子网号,而 0 对应主机号。主机或路由器通过将 IP 地址与其子网掩码进行逐位“与”(AND)运算,即可得出该地址所在子网的子网地址。
现在的互联网标准规定:每个网络都需配置子网掩码。对于未划分子网的传统分类网络,应使用其默认子网掩码。A、B、C 类地址的默认子网掩码分别为 255.0.0.0、255.255.0.0、255.255.255.0。例如,某主机的 IP 地址为 192.168.5.56,子网掩码为 255.255.255.0,通过逐位“与”运算,可得出其所在子网的子网地址为 192.168.5.0。
子网掩码是网络的关键属性。路由器交换路由信息时,必须同时通告目的网络地址和子网掩码。转发分组时,路由器将分组的目的 IP 地址与某条路由的子网掩码进行逐位“与”运算,若结果等于该路由的目的网络地址,则匹配成功,并将分组转发至对应的下一跳。
在使用子网掩码时,需遵循以下原则:
1)主机在配置 IP 地址时,必须同时设置子网掩码。
2)同一子网内的所有主机及路由器接口,必须配置相同的子网掩码。
3)路由器的路由表中通常包含三项核心信息:目的网络地址、子网掩码、下一跳地址。
<!-- page: 154 -->
2027年计算机网络考研复习指导
## (3)默认网关
**考点击左** 默认网关与子网掩码的配置(2015、2016、2019、2022)
默认网关是指本子网所连路由器接口的 IP 地址,用于将数据转发至外部网络。主机发送数据时,会将目的 IP 地址与自身 IP 地址及子网掩码比较,以判断目的主机是否在同一子网。
- 若在同一子网内,则执行直接交付:通过 ARP(见 4.2.5 节)获取目的主机的 MAC 地址,并将数据报封装成数据链路层帧(如以太网帧),直接发送至该 MAC 地址。
- 若不在同一子网内,则执行间接交付:将数据报发往默认网关,并通过 ARP 获取其 MAC 地址,再将数据报封装成帧并发送至该 MAC 地址,由路由器在网络层进行转发。
## 4. 无分类编址 CIDR
无分类域间路由选择(Classless Inter-Domain Routing,CIDR)是一种基于可变长子网掩码的地址分配与路由聚合机制,旨在消除传统 A、B、C 类地址的限制,并提升 IP 地址空间的利用效率。其核心思想是:不再区分网络类别,而使用“网络前缀”来标识网络部分。网络前缀的长度(掩码中连续 1 的数量)可根据实际需求灵活指定,不再局限于 8 位、16 位或 24 位。
例如,若某单位需要约 2000 个 IP 地址,则为其分配一个包含 2048 个地址的连续块(如 /21),而非浪费一个完整的 B 类网络(65534 个地址),进而大幅提高地址分配的灵活性和利用率。
CIDR 采用如下结构表示 IP 地址:
$$
\mathrm{IP} \text{地址} = \{\text{<网络前缀>,<主机号>\} }
$$
**考点击左** CIDR 地址块的分析(2011、2015、2016、2019、2023)
CIDR 还使用斜线记法(也称 CIDR 表示法),格式为“IP 地址/前缀长度”,其中前缀长度表示网络前缀所占的位数,它等效于子网掩码中连续 1 的数量。例如,128.14.32.5/20 表示其子网掩码由 20 个连续的 1 和 12 个连续的 0 组成(255.255.240.0)。将该 IP 地址与掩码进行逐位“与”运算,即可得到其网络前缀(子网地址),它等价于直接截取 IP 地址的前 20 位。
$$
\begin{array}{l}
\text{逐位“与”} \left\{
\begin{array}{l}
\mathrm{IP} \text{地址} = \underline{10000000.00001110.00100000.00000101} \\
\text{掩码} = 11111111.11111111.11110000.00000000
\end{array}
\right. \\
\end{array}
$$
$$
\text{网络前缀} = \underline{10000000.00001110.00100000.00000000} \quad (128.14.32.0)
$$
斜线记法不仅标识了具体的 IP 地址,还明确了其所属地址块的网络前缀长度。在 CIDR 环境下,“/前缀长度”不可省略——若仅给出 IP 地址(如 128.14.32.5),则无法确定其网络地址。
**考点击左** 地址块的范围分析(2023)
CIDR 将网络前缀相同的连续 IP 地址组成一个 CIDR 地址块。只要知道该地址块中的任意一个地址及其前缀长度,即可确定其最小地址、最大地址和地址总数。
以地址 128.14.32.5/20 为例,其所在地址块的地址范围为
最小地址:10000000.00001110.00100000.00000000(128.14.32.0)
最大地址:10000000.00001110.00101111.11111111(128.14.47.255)
主机号全 0 或全 1 的地址一般不分配给主机使用,实际可用地址为两者之间的地址。
需要强调的是,“CIDR 不使用子网”是指其不在全局地址结构中预设固定的子网字段。但这并不妨碍获得 CIDR 地址块的单位在其内部继续划分子网。例如,某单位获得一个 /20 的地址块后,可从主机号部分借用 3 位划分为 8 个子网,此时每个子网的网络前缀长度变为 /23。
**考点击左** 子网地址与子网广播地址的分析(2011、2012、2018、2019)
CIDR 地址块的地址总数一定是 2 的整数次幂。若主机号部分占 $N$ 位,则该地址块包含 $2^{N}$ 个地址,实际可分配给主机的地址数通常为 $2^{N} - 2$(扣除网络地址和广播地址)。网络前缀越短,
<!-- page: 155 -->
第4章 网络层
143
主机号位数越大,地址块包含的总地址就越多;反之,前缀越长,地址块越小。
## 5. 路由聚合
一个大的 CIDR 地址块中包含多个较小的地址块,因此在路由表中可以用这个较大的 CIDR 地址块来代替多个较小的地址块。这种方法称为路由聚合,它使得路由表中的一个项目能够代表原来基于传统分类地址的多条路由,从而压缩路由表规模,提升网络性能。
**考虑图1** 路由聚合的原理(2009、2011、2013、2014、2018)
例如,在如图 4.8 所示的网络中,若不使用路由聚合,则 R1 的路由表中需要分别为网络 1 和网络 2 配置两条独立的路由项。观察可知,这两个网络的地址前缀在二进制表示下的前 16 位完全相同,第 17 位分别为 0 和 1,且 R1 到这两个网络的下一跳均为 R2。在此情况下,R1 可将这两个网络聚合成一个更大的地址块 206.1.0.0/16,从而用一条聚合路由替代原有的两条路由。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图 4.8 路由聚合的例子
**考虑图2** 最长前缀匹配机制(2013、2015)
最长前缀匹配(也称最佳匹配):使用 CIDR 时,路由表项由“网络前缀”和“下一跳地址”组成。当查找路由表时,目的地址可能匹配多个路由项。此时,应选择网络前缀最长(前缀位数最多)的那条路由,因为前缀越长,对应的地址块越小,路由信息就越具体、越精确。
CIDR 查找路由表的方法:为高效实现最长前缀匹配,路由器通常将 CIDR 路由表组织成层次式数据结构(如 Trie 树),通过自上而下的方式快速定位最优匹配项。
CIDR 的主要优势在于网络前缀长度的灵活性:在网络外部,可通过较短前缀进行路由聚合,显著减少全局路由表项;在网络内部,可延长前缀以灵活划分子网,满足不同规模的需求。这种“外部聚合、内部细分”的机制,兼顾了路由可扩展性与地址分配的精细化控制。
## 6. 子网划分的应用举例
通常有两类划分子网的方法:采用定长子网掩码和变长子网掩码。
### (1)采用定长子网掩码划分子网
当采用定长子网掩码时,所划分的每个子网使用相同的子网掩码,并且每个子网所分配的 IP 地址数量也相同,因此容易造成地址资源的浪费。
**考虑图3** 定长掩码子网划分的应用(2009、2010、2017、2018)
假设某单位拥有一个 CIDR 地址块 208.115.21.0/24,该单位有三个部门,各部门的主机数量分别为 50、20、5 台,采用定长子网掩码给各部门分配 IP 地址。
各部门(含一个路由器接口)实际所需 IP 地址数分别为 51 个、21 个、6 个。接下来,从 /24 地址块的主机号部分借用 2 位作为子网号,可划分为 $2^{2} = 4$ 个子网,每个子网可用地址数为 $2^{8-2} - 2 = 62$,满足各部门需求。各子网划分如下(为书写方便,仅将 IP 地址的后 8 位用二进制展开):
208.115.21.00000000~208.115.21.001111111,地址块 208.115.21.0/26,分配给部门 1。
208.115.21.01000000~208.115.21.01111111,地址块 208.115.21.64/26,分配给部门 2。
208.115.21.10000000~208.115.21.10111111,地址块 208.115.21.128/26,分配给部门 3。
208.115.21.11000000~208.115.21.11111111,地址块 208.115.21.192/26,留作备用。
<!-- page: 156 -->
2027年计算机网络考研复习指导
子网掩码:255.255.255.11000000,即255.255.255.192。
## (2) 采用变长子网掩码划分子网
**考虑变长** 变长掩码子网划分的应用(2019、2021、2025)
采用变长子网掩码时,所划分的每个子网可使用不同的子网掩码,并且每个子网所分配的IP地址数量也可不同,从而更高效地利用地址资源,减少浪费。
假设条件与上一节相同,下面采用变长子网掩码给各部门分配IP地址。
部门1的主机号需6位,剩余26位( $32 - 6 = 26$ )作为网络前缀;部门2的主机号需5位,剩余27位( $32 - 5 = 27$ )作为网络前缀;部门3的主机号需3位,剩余29位( $32 - 3 = 29$ )作为网络前缀。接下来,从地址块208.115.21.0/24中按需划分出3个子网(1个“/26”,1个“/27”,1个“/29”),分配给三个部门。每个子网的网络地址(最小地址)为主机号全0的地址。划分方案不唯一,建议从最大的子网开始划分(以避免地址碎片),例如:
| 208.115.21.00000000 | 地址块 208.115.21.0/26,子网掩码 255.255.255.192 |
| --- | --- |
| 208.115.21.00111111 | 可分配地址 62 个,分配给部门 1。 |
| 208.115.21.01000000 | 地址块 208.115.21.64/27,子网掩码 255.255.255.224 |
| 208.115.21.01011111 | 可分配地址 30 个,分配给部门 2。 |
| 208.115.21.01100000 | 地址块 208.115.21.96/29,子网掩码 255.255.255.248 |
| 208.115.21.01100111 | 可分配地址 6 个,分配给部门 3。 |
| 208.115.21.01101000 | 剩余 256-64-32-8=152 个地址,留作备用。 |
| 208.115.21.11111111 | |
划分方案不唯一,还可借助二叉树模型(参考本节习题2021年统考真题解析图)辅助分配,但要确保各子网地址范围互不重叠,且起始地址对齐到其网络前缀对应的地址边界。
对于连接两个路由器接口的点对点链路,传统做法是分配一个“/30”地址块:主机号部分占2位,包含4个地址,可分配地址有2个,恰好可分配给链路两端的接口。
## 注意
根据最新标准®,为节省IP地址资源,这类链路的两端接口可不分配IP地址。若需分配,则该链路被视为仅含两个节点的特殊“网络”,此时应使用“/31”地址块:主机号部分仅1位,包含2个地址,无须保留网络地址和广播地址,2个地址均可直接分配给链路两端接口,实现IP地址的零浪费。
## 4.2.3 网络地址转换NAT
网络地址转换(Network Address Translation,NAT)是指将专用网络中的私有IP地址转换为公网IP地址,从而实现与互联网的通信,并对外隐藏内部网络的结构。它使得整个专用网通常只需一个全球IP地址即可与互联网连通;由于私有IP地址可在不同专用网络中重复使用,NAT有效地缓解了IP地址短缺的问题。此外,NAT还在一定程度上降低了内部网络受攻击的风险。
① 参考谢希仁老师的《计算机网络(第8版)》教材,但近年的统考真题仍采用旧标准,请读者注意。
<!-- page: 157 -->
第4章 网络层
145
## 赛术追踪
### 私有IP地址连网处理机制(2011)
IANA保留了三个私有IP地址块。这些地址仅用于LAN内部,不得直接用于WAN,若需访问互联网,则必须通过网关采用NAT技术,将私有地址映射为合法的公网IP地址。
这三个私有IP地址块如下:
1)10.0.0/8,即 $10.0.0.0\sim 10.255.255.255$ ,相当于1个A类网络。
2)172.16.0.0/12,即 $172.16.0.0 \sim 172.31.255.255$ ,相当于16个连续的B类网络。
3)192.168.0.0/16,即 $192.168.0.0 \sim 192.168.255.255$ ,相当于256个连续的C类网络。
互联网中的所有路由器对目的地址为私有地址的数据报一律不予转发。采用私有 IP 地址组建的网络称为专用网络(或私有网络)。私有 IP 地址也称可重用地址。
使用NAT时,需在专用网连接到互联网的路由器上安装NAT软件,该NAT路由器至少应拥有一个有效的全球IP地址。当使用私有IP地址的主机与外部通信时,NAT路由器通过NAT转换来实现私有IP地址与全球IP地址之间的映射。该表中保存{私有IP地址:端口}到{全球IP地址:端口}的对应关系。借助该映射机制,多个私有IP地址可共享同一个全球IP地址访问互联网。
## 赛术追踪
### NAT的工作原理(2016、2019、2020、2023)
如图4.9所示,假设某家庭办理了一条 $10\mathrm{Mb / s}$ 的电信宽带,则会获得一个全球IP地址(如138.76.29.7)。家庭内部的3台主机使用私有地址(如10.0.0.0网段),此时家庭网关路由器需启用NAT功能。下面以主机访问外部Web服务器为例,介绍NAT路由器的工作原理。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图4.9 NAT路由器的工作原理
1)假设主机10.0.0.1(源端口3345)向Web服务器128.119.40.186(端口80)发送请求。
2)NAT路由器收到IP分组后,将分组的源地址替换为自身的全球IP地址138.76.29.7,将源端口替换为新分配的端口5001,同时在NAT转换表中新增一条映射记录。
3)Web服务器并不知晓该分组的源地址已被路由器转换,也无法获知用户的私有地址,因此其响应分组的目的地址是路由器的全球IP地址138.76.29.7,目的端口是5001。
4)响应分组到达路由器后,路由器根据NAT转换表,将目的地址还原为10.0.0.1,目的端口还原为3345,再将分组转发给对应主机。
上述过程属于动态NAT,路由器在内网主机发起连接时自动创建映射关系,并在一段时间后自动清除。然而,在某些场景中,内网中的服务器需要向公网用户提供服务,例如部署在内网内的Web服务器、FTP服务器等。此时,可由管理员在NAT转换表中手工配置{公网IP地址 + 端口}到{内网IP地址 + 端口}的静态映射,使公网用户能够通过该映射访问内网服务器。
<!-- page: 158 -->
2027年计算机网络考研复习指导