IPv4 地址与 NAT

IP 地址是给连接到互联网上的每台主机(或路由器)的每个接口分配的一个在全球范围内唯一的 32 位标识符,由互联网名字和数字分配机构 ICANN 进行分配。为方便书写和记忆,常把 32 位 IP 地址分成 4 段,每段 8 位,用等效的十进制数表示,并在每段数字之间加一个小数点,称为点分十进制记法。

本页讲地址本身:分类、特殊地址、私有地址和 NAT。把地址再切小(子网)和合并(CIDR)在 4.2.3 两页。本节的判断题几乎都在问同一件事:一个地址能不能分配给主机、能不能作源地址或目的地址、路由器转不转发它。 答这类题要先看类别,再看主机号是全 0、全 1 还是普通值。

机制

分类的 IP 地址

互联网早期采用的是分类的 IP 地址。无论哪类 IP 地址,都由网络号和主机号两部分组成,即 IP 地址 ::= {<网络号>, <主机号>}。网络号标志主机(或路由器)所连接到的网络,一个网络号在整个互联网范围内必须是唯一的;主机号标志该主机(或路由器),一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此,一个 IP 地址在整个互联网范围内是唯一的。

类别前缀位第一段范围网络号 / 主机号用途
A01~1268 / 24单播
B10128~19116 / 16单播
C110192~22324 / 8单播
D1110224~239——多播地址(4.5)
E1111240~255——保留为今后使用

常用的三种类别 IP 地址的使用范围:

网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号每个网络中的最大主机数
A1126
B128.0191.255
C192.0.0223.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 地址的重要特点

  1. 每个 IP 地址都由网络号和主机号两部分组成,因此 IP 地址是一种分等级的地址结构。分等级的好处是:IP 地址管理机构在分配 IP 地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便了 IP 地址的管理;路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目标主机号),从而减小了路由表所占的存储空间。
  2. IP 地址标志的是一台主机(或路由器)和一条链路的接口。 当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。因此路由器至少应具有两个或两个以上的 IP 地址,每个端口都有一个不同网络号的 IP 地址。
  3. 用转发器或桥接器(网桥等)连接的若干 LAN 仍然是同一个网络(同一个广播域),因此该 LAN 中所有主机的 IP 地址的网络号必须相同,但主机号必须不同。
  4. 在 IP 地址中,所有分配到网络号的网络(无论是 LAN 还是 WAN)都是平等的。
  5. 在同一个局域网上的主机或路由器接口的 IP 地址中的网络号必须是相同的。

近年来,因为广泛使用无分类 IP 地址进行路由选择,这种传统分类的 IP 地址已成为历史。但分类地址仍是判断”默认子网掩码”和特殊地址的依据,题目中”采用默认子网掩码”指的就是按类别确定网络号。

私有 IP 地址

为了网络安全,划出了三个私有 IP 地址块。私有 IP 地址只用于 LAN,不用于 WAN 连接,因此私有 IP 地址不能直接用于互联网,必须通过网关利用 NAT 将私有 IP 地址转换为互联网中合法的全球 IP 地址后,才能出现在互联网上;私有 IP 地址允许被不同的 LAN 重复使用,这有效地解决了 IP 地址不足的问题(私有地址访问互联网的处理 2011 年考过)。

地址块范围相当于
10.0.0.0/810.0.0.0~10.255.255.2551 个 A 类网络
172.16.0.0/12172.16.0.0~172.31.255.25516 个连续的 B 类网络
192.168.0.0/16192.168.0.0~192.168.255.255256 个连续的 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 分组,这种分组仅出现在本地网络中。

B 是交换机处理广播帧的方式(3.8.2);路由器隔离广播域(4.7.1)。C、D 把它当成了普通的目的地址去查表。

错题复盘:一台主机的两个 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)

链接