IPv4 地址与 NAT
IP 地址是给连接到互联网上的每台主机(或路由器)的每个接口分配的一个在全球范围内唯一的 32 位标识符,由互联网名字和数字分配机构 ICANN 进行分配。为方便书写和记忆,常把 32 位 IP 地址分成 4 段,每段 8 位,用等效的十进制数表示,并在每段数字之间加一个小数点,称为点分十进制记法。
本页讲地址本身:分类、特殊地址、私有地址和 NAT。把地址再切小(子网)和合并(CIDR)在 4.2.3 两页。本节的判断题几乎都在问同一件事:一个地址能不能分配给主机、能不能作源地址或目的地址、路由器转不转发它。 答这类题要先看类别,再看主机号是全 0、全 1 还是普通值。
机制
分类的 IP 地址
互联网早期采用的是分类的 IP 地址。无论哪类 IP 地址,都由网络号和主机号两部分组成,即 IP 地址 ::= {<网络号>, <主机号>}。网络号标志主机(或路由器)所连接到的网络,一个网络号在整个互联网范围内必须是唯一的;主机号标志该主机(或路由器),一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此,一个 IP 地址在整个互联网范围内是唯一的。
| 类别 | 前缀位 | 第一段范围 | 网络号 / 主机号 | 用途 |
|---|---|---|---|---|
| A | 0 | 1~126 | 8 / 24 | 单播 |
| B | 10 | 128~191 | 16 / 16 | 单播 |
| C | 110 | 192~223 | 24 / 8 | 单播 |
| D | 1110 | 224~239 | —— | 多播地址(4.5) |
| E | 1111 | 240~255 | —— | 保留为今后使用 |
常用的三种类别 IP 地址的使用范围:
| 网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
|---|---|---|---|---|
| A | 1 | 126 | ||
| B | 128.0 | 191.255 | ||
| C | 192.0.0 | 223.255.255 |
A 类可用的网络数减 2,原因是:网络号字段全为 0 的 IP 地址是保留地址,意思是”本网络”;网络号为 127 的 IP 地址是环回自检地址。每个网络中的最大主机数减 2,原因是:主机号全 0 和全 1 一般不指派。B 类网络号 128.0 和 C 类网络号 192.0.0 早期标准规定不能指派,现在都能指派(RFC 6890),所以表中 B、C 两类的网络数不减 2。
特殊用途的 IP 地址
在各类 IP 地址中,有些 IP 地址具有特殊用途,不用作主机的 IP 地址(特殊地址 0.0.0.0 的用途 2017 年考过):
- 主机号全为 0 表示本网络本身,如 202.98.174.0。
- 主机号全为 1 表示本网络的广播地址,也称直接广播地址,如 202.98.174.255。
- 127.×.×.× 保留作为本地软件环回测试(Loopback Test)本主机的进程之间的通信用,本主机不会将目的地址为环回地址的 IP 数据报发送到任何网络。
- 32 位全为 0,即 0.0.0.0,表示本网络上的本主机(见 DHCP,4.2.6)。
- 32 位全为 1,即 255.255.255.255,表示受限广播地址,只在本网络上进行广播。
IP 地址的重要特点
- 每个 IP 地址都由网络号和主机号两部分组成,因此 IP 地址是一种分等级的地址结构。分等级的好处是:IP 地址管理机构在分配 IP 地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便了 IP 地址的管理;路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
- IP 地址标志的是一台主机(或路由器)和一条链路的接口。 当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。因此路由器至少应具有两个或两个以上的 IP 地址,每个端口都有一个不同网络号的 IP 地址。
- 用转发器或桥接器(网桥等)连接的若干 LAN 仍然是同一个网络(同一个广播域),因此该 LAN 中所有主机的 IP 地址的网络号必须相同,但主机号必须不同。
- 在 IP 地址中,所有分配到网络号的网络(无论是 LAN 还是 WAN)都是平等的。
- 在同一个局域网上的主机或路由器接口的 IP 地址中的网络号必须是相同的。
近年来,因为广泛使用无分类 IP 地址进行路由选择,这种传统分类的 IP 地址已成为历史。但分类地址仍是判断”默认子网掩码”和特殊地址的依据,题目中”采用默认子网掩码”指的就是按类别确定网络号。
私有 IP 地址
为了网络安全,划出了三个私有 IP 地址块。私有 IP 地址只用于 LAN,不用于 WAN 连接,因此私有 IP 地址不能直接用于互联网,必须通过网关利用 NAT 将私有 IP 地址转换为互联网中合法的全球 IP 地址后,才能出现在互联网上;私有 IP 地址允许被不同的 LAN 重复使用,这有效地解决了 IP 地址不足的问题(私有地址访问互联网的处理 2011 年考过)。
| 地址块 | 范围 | 相当于 |
|---|---|---|
| 10.0.0.0/8 | 10.0.0.0~10.255.255.255 | 1 个 A 类网络 |
| 172.16.0.0/12 | 172.16.0.0~172.31.255.255 | 16 个连续的 B 类网络 |
| 192.168.0.0/16 | 192.168.0.0~192.168.255.255 | 256 个连续的 C 类网络 |
在互联网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有 IP 地址的互联网络称为专用互联网或本地互联网,私有 IP 地址也称可重用地址。
网络地址转换(NAT)
网络地址转换(Network Address Translation,NAT)是指通过将专用网络地址(如 Intranet)转换为公用地址(如 Internet),从而对外隐藏内部管理的 IP 地址。它使得整个专用网只需要一个全球 IP 地址就可与互联网连通,因为专用网本地 IP 地址是可重用的,所以 NAT 大大节省了 IP 地址的消耗;同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
使用 NAT 时需要在专用网连接到互联网的路由器上安装 NAT 软件,NAT 路由器至少有一个有效的外部全球 IP 地址。当使用本地地址的主机和外界通信时,NAT 路由器使用 NAT 转换表进行本地 IP 地址和全球 IP 地址的转换。NAT 转换表中存放着 {本地 IP 地址:端口} 到 {全球 IP 地址:端口} 的映射,通过这种映射方式,可让多个私有 IP 地址映射到一个全球 IP 地址(NAT 的原理和应用 2016、2019、2020、2023 年考过)。
王道的例子:某家庭办理了 10Mb/s 的电信宽带,获得一个全球 IP 地址 138.76.29.7,家庭网络内 3 台主机使用私有地址(10.0.0.0 网段),家庭网关路由器开启 NAT 功能。
sequenceDiagram participant H as 主机 10.0.0.1 participant N as NAT 路由器(WAN 口 138.76.29.7) participant W as Web 服务器 128.119.40.186 H->>N: ① S=10.0.0.1:3345 D=128.119.40.186:80 Note over N: 生成新端口 5001,转换表增加一项<br/>138.76.29.7:5001 ↔ 10.0.0.1:3345 N->>W: ② S=138.76.29.7:5001 D=128.119.40.186:80 W-->>N: ③ S=128.119.40.186:80 D=138.76.29.7:5001 Note over N: 查转换表 N-->>H: ④ S=128.119.40.186:80 D=10.0.0.1:3345
Web 服务器并不知道刚抵达的 IP 分组已被 NAT 路由器改装,更不知道用户的专用地址,它响应的 IP 分组的目的地址是 NAT 路由器的全球 IP 地址 138.76.29.7,目的端口号是 5001。这样,只需要一个全球 IP 地址,就可让多台主机同时访问互联网。
普通路由器在转发 IP 分组时,其源 IP 地址和目的 IP 地址都不会改变;而 NAT 路由器在转发 IP 分组时,一定要更换其 IP 地址(转换源 IP 地址或目的 IP 地址)。普通路由器仅工作在网络层,而 NAT 路由器转发数据报时需要查看和转换传输层的端口号。
在某些场合,内网中的一些服务器需要向公网用户提供服务,比如私网中部署的 Web 服务器、FTP 服务器等。此时,可在 NAT 表中配置”公网 IP 地址 + 端口号”与”私网 IP 地址 + 端口号”的映射关系,实现公网用户通过该映射关系访问私网服务器的功能。
边界
特殊地址能否作源地址、目的地址,路由器转不转发,是本节判断题的主要考法:
| 地址 | 含义 | 作源地址 | 作目的地址 | 路由器 |
|---|---|---|---|---|
| 主机号全 0 | 本网络本身 | 否 | 否 | 只出现在路由表中表示网络 |
| 主机号全 1 | 直接广播 | 否 | 是 | 可转发到该网络,对其所有主机广播 |
| 0.0.0.0 | 本网络上的本主机 | 是(如 DHCP 客户) | 否 | —— |
| 255.255.255.255 | 受限广播 | 否 | 是 | 任何情况下都不转发 |
| 127.×.×.× | 环回测试 | 是 | 是 | 不会发送到任何网络 |
错题复盘:没有斜线就按类别取默认掩码:110.47.10.0 是 A 类地址,主机号不是全 0
王道 4.2.8 第 17 题:访问互联网的每台主机都需要分配 IP 地址(假定采用默认子网掩码),下列可以分配给主机的 IP 地址是(A. 192.46.10.0 B. 110.47.10.0 C. 127.10.10.17 D. 211.60.256.21)。答案 B。
- A:192 开头是 C 类,默认掩码 255.255.255.0,主机号是最后一个字节,为全 0,表示网络本身,不能分配。
- B:110 在 1~126 之间,是 A 类,网络号为 110,主机号为 47.10.0,不是全 0,可以分配。
- C:127 开头的是环回测试地址。
- D:256 超出了一个字节的范围,是语法错误的地址。
最后一个字节为 0 不代表主机号全 0——主机号有多长由类别(或斜线后的前缀长度)决定。
错题复盘:127.0.0.1 既可以作源地址,也可以作目的地址
王道 4.2.8 第 18 题:IP 规定一些特殊的 IP 地址一般是不会被指派的,下列说法错误的是(A. 0.0.0.0 可以作为 DHCP 客户的源 IP 地址 B. 路由器不会转发目的 IP 地址是 255.255.255.255 的 IP 数据报 C. 127.0.0.1 可以作为目的 IP 地址,但不能作为源 IP 地址 D. 路由器可以转发目的 IP 地址的主机号为全 1 的 IP 数据报)。答案 C。
127.x.x.x 用于本地软件的环回测试,既可作为源 IP 地址,又可作为目的 IP 地址:本机上的客户进程访问 127.0.0.1 时,服务进程收到的数据报的源地址也是 127.0.0.1。其余三项都对:0.0.0.0 表示本网络上的本主机,通常作为 DHCP 客户的源地址;255.255.255.255 表示在本网络上广播,各路由器均不转发;网络号为特定网络、主机号为全 1 的目的地址是直接广播地址,可对特定网络上的所有主机进行广播。
D 是针对”受限广播不转发”的过度推广设的:受限广播不转发,直接广播可以转发。
错题复盘:目的地址为 255.255.255.255 的分组,路由器一律不转发
王道 4.2.8 第 42 题:路由器收到目的 IP 地址为 255.255.255.255 的分组,则路由器的操作是(A. 丢弃该 IP 分组 B. 从所有其他接口转发该 IP 分组 C. 通过路由表中的默认路由转发该 IP 分组 D. 通过路由表中的特定主机路由转发该 IP 分组)。答案 A。
255.255.255.255 是受限广播地址,仅用于主机配置过程中 IP 分组的目的地址(如 DHCP 发现报文)。在任何情况下,路由器都不转发目的地址为受限广播地址的 IP 分组,这种分组仅出现在本地网络中。
错题复盘:一台主机的两个 IP 地址必须属于两个不同的网络
王道 4.2.8 第 23 题:一台主机有两个 IP 地址,一个地址是 192.168.11.25,另一个地址可能是(A. 192.168.11.0 B. 192.168.11.26 C. 192.168.13.25 D. 192.168.11.24)。答案 C。
IP 地址标志的是主机的接口。一台主机有两个或两个以上的 IP 地址,说明这台主机属于两个或两个以上的网络,各地址的网络号必须不同。192.168.11.25 是 C 类地址,网络号为 192.168.11;A、B、D 与它属于同一个网络(A 还是网络地址本身),只有 C 的网络号不同。
路由器每个接口的 IP 地址网络号各不相同,是同一个道理(特点 2)。
私有地址”不转发”指的是互联网中的路由器。 在单位内部的专用互联网里,路由器照常转发目的地址为私有地址的数据报;私有地址出不了的是专用网到互联网的那道边界。
NAT 转换表的方向。 内网发往外网时改的是源地址和源端口;外网回到内网时改的是目的地址和目的端口。
错题复盘:划分子网、CIDR、NAT 都只能缓解地址耗尽,治本的是 IPv6
王道 4.2.8 第 30 题:为了解决 IP 地址耗尽的问题,可以采用以下一些措施,其中治本的是(A. 划分子网 B. 采用无类比编址 CIDR C. 采用网络地址转换 NAT D. 采用 IPv6)。答案 D。
划分子网把较大的网络细分,提高了 IP 地址的利用率;CIDR 消除了分类,按需分配合适大小的地址块;NAT 让一个机构只需一个全球地址,内部使用可重用的专用地址。三种方法都在 32 位的地址空间里想办法,只能在一定阶段内有效缓解 IP 地址耗尽的危机。治本的方法是使用 128 位编址的 IPv6(4.3.3)。
口径差异:教材的 NAT 实际上是 NAPT
教材口径:NAT 转换表存放 {本地 IP 地址:端口} ↔ {全球 IP 地址:端口} 的映射,多个私有地址映射到一个全球地址。
工程口径:带端口转换的这种做法严格说叫 NAPT(网络地址与端口转换),家用路由器的”NAT”都是它。只转换地址、不转换端口的基本 NAT 需要准备与同时上网的内网主机一样多的全球地址。NAT 改写了端口号,破坏了”网络层只看 IP 首部”的分层原则,也使外网主机无法主动连入内网——所以才需要上面那种手工配置的端口映射。
对照速查
| 说法 | 对错 |
|---|---|
| IP 地址标识的是一台主机 | ❌(标识主机的一个接口) |
| 一台主机连接到两个网络时,两个 IP 地址的网络号必须不同 | ✅ |
| 用网桥连接的两个 LAN,主机的网络号可以不同 | ❌(仍是同一个网络) |
| 主机号全 0 表示本网络,全 1 表示直接广播 | ✅ |
| 255.255.255.255 只在本网络上广播 | ✅ |
| D 类地址用于多播 | ✅ |
| 172.32.0.1 是私有地址 | ❌(私有范围到 172.31.255.255 为止) |
| 互联网中的路由器转发目的地址为私有地址的数据报 | ❌ |
| NAT 路由器转发时要查看和转换传输层端口号 | ✅ |
| 普通路由器转发时会修改源 IP 地址 | ❌ |
考点
- 分类:A 1~126、B 128~191、C 192~223、D 224~239 多播、E 保留
- 网络数与主机数的”减 2”;B、C 类网络数不减 2
- 特殊地址:主机号全 0 / 全 1、127.x.x.x、0.0.0.0(2017)、255.255.255.255
- 三个私有地址块(2011)
- NAT 转换表 {私有 IP:端口} ↔ {全球 IP:端口}(2016、2019、2020、2023)
链接
- 🏠 返回总览:计算机网络第 4 章:网络层总览
- ⬅️ 上一节:4.2.1 IPv4 分组与分片
- ➡️ 下一节:4.2.3 划分子网与子网掩码
- 🔗 4.2.3 CIDR 与路由聚合
- 🔗 4.3.3 IPv6 地址(地址耗尽的根本出路)
- 🔗 5.1.2 传输层的寻址与端口:端口号
- 📖 名词库:第 4 章名词库