网络层
网络层负责跨网络的端到端寻址与选路,核心是 IP 协议。这篇讲 IP 报文头部、IP 地址与子网掩码、地址分类、子网划分的计算方法,以及 ICMP 和 ARP 两个重要的辅助协议。
IP 报文头部
IP 报文头部主要字段:
| 字段 | 含义 |
|---|---|
| Version | 版本(IPv4 / IPv6) |
| Header Length | 头部长度 |
| DS Field | 服务类型及优先级 |
| Total Length | 总长度,最大 65535 |
| Identification | 标识 |
| Flags | 标记 |
| Fragment Offset | 分片偏移 |
| Time to Live | 生存周期(TTL) |
| Protocol | 上层协议字段 |
| Header Checksum | 头部校验 |
| Source IP Address | 源 IP |
| Destination IP Address | 目的 IP |
| IP Options | 可选项 |
其中 Protocol 字段标识上层协议,常见协议编号:
| 协议 | 编号 |
|---|---|
| ICMP | 1 |
| TCP | 6 |
| UDP | 17 |
| EIGRP | 88 |
| OSPF | 89 |
TTL 为每个 IP 报文设定生存时间,每经过一个三层设备减 1,减到 0 则丢弃,默认值常见为 255。
IP 地址与子网掩码
通信依靠 IP 地址进行。
- IP 地址:32 个二进制位,由网络部分和主机部分组成,使用子网掩码区分。通常以十进制表示,用点号隔开分为 4 段,每段 8 位。
- 子网掩码:32 个二进制位,必须由连续的 1 和连续的 0 组成。掩码中 1 的个数越多,0 越少,主机位越少,可用主机数也越少。
区分网络位和主机位的方法:子网掩码中 1 对应 IP 的网络部分,0 对应 IP 的主机部分。
在一个地址块中,地址分为三部分:
- 网络地址:主机位全为 0,代表本网络本身。
- 广播地址:主机位全为 1,代表本网络中的所有主机。
- 可用主机地址:排除首尾两个地址之后的其余地址。
IP 地址分类
| 类别 | 地址范围 | 二进制标识 | 用途 | 私有地址 | 默认掩码 | CIDR |
|---|---|---|---|---|---|---|
| A | 1.0.0.0 ~ 126.255.255.255 | 0xxxxxxx | 大型网络 | 10.0.0.0/8 | 255.0.0.0 | /8 |
| B | 128.0.0.0 ~ 191.255.255.255 | 10xxxxxx | 中型网络 | 172.16.0.0 ~ 172.31.255.255 | 255.255.0.0 | /16 |
| C | 192.0.0.0 ~ 223.255.255.255 | 110xxxxx | 小型网络 | 192.168.0.0/16 | 255.255.255.0 | /24 |
| D | 224.0.0.0 ~ 239.255.255.255 | 1110xxxx | 组播 | — | — | — |
| E | 240.0.0.0 ~ 255.255.255.254 | 1111xxxx | 实验室保留 | — | — | — |
各类的网络数与主机数(H 表示主机位):
- A 类:网络数 \(2^7-2\),主机数 \(2^{24}-2\)。
- B 类:网络数 \(2^{14}\),主机数 \(2^{16}-2\)。
- C 类:网络数 \(2^{21}\),主机数 \(2^8-2\)。
特殊地址
| 地址 | 含义 |
|---|---|
| 0.0.0.0 | 代表任意地址 |
| 127.0.0.0 ~ 127.255.255.255 | 本地回环地址(测试 TCP/IP 协议栈自身) |
| 169.254.0.0 ~ 169.254.255.255 | DHCP 保留(自动私有地址 APIPA) |
| 255.255.255.255 | 有限广播地址,代表本地所有主机 |
广播地址分两种:有限广播(255.255.255.255)和直接广播(目标网段主机位全 1)。路由器一般会隔离有限广播。
有类与无类地址
- 有类地址:把 IP 严格归到 A/B/C 类,使用各类的默认掩码。
- 无类地址:相对于有类地址,掩码是变长的,更灵活。
CIDR 与 VLSM 的区别
CIDR(无类别域间路由,Classless Inter-Domain Routing) 取消 IP 地址的分类结构,将多个地址块聚合成一个更大的网络,通过路由聚合使路由表表项变少,减轻 Internet 路由器负担。方向是"合"。
VLSM(可变长子网掩码) 用来划分子网,把单一网络划分成几个网段,用主机地址做子网掩码,以便最有效地利用现有地址空间。方向是"分"。如果没有 VLSM,一个子网掩码只能供给一个网络。
子网划分
划分子网的核心思想:从主机位"借"若干位作为子网位。
- 一个网络能划分出的子网数 = \(2^{\text{子网位}}\),其中子网位 = 新网络位 − 原网络位。
- 子网位从全 0 变到全 1,有多少种变化就有多少个子网。
划分子网的步骤:
- 确定需要的主机数。
- 确定网络地址。
- 确定子网掩码。
关键公式:
- 可用主机数需满足 \(2^n - 2 \ge \text{所需主机数}\)(n 为主机位数),减 2 是因为主机位全 0 是网络地址、全 1 是广播地址,不能分配给主机。
- 网络位数(即子网掩码长度)= \(32 - n\)。
- 第一个可用主机地址 = 网络地址 + 1;最后一个可用主机地址 = 广播地址 − 1。
子网划分实例
需求:给公司分配的地址是 200.0.0.0/24,财务部 7 台、销售部 60 台、市场部 120 台、网络部 20 台电脑。各部门各自一个子网,如何规划?
采用 VLSM,从主机数最多的部门开始依次划分。
第一步:市场部(120 台)
- 网络号照写:
200.0.0.0。 - 求主机位 n:\(2^n - 2 \ge 120 \Rightarrow n = 7\)。
- 掩码长度 = \(32 - 7 = 25\)。
- 市场部地址:
200.0.0.0/25,地址范围200.0.0.0 ~ 200.0.0.127(网络地址.0,广播地址.127)。
第二步:销售部(60 台)
- 网络地址从市场部之后开始:市场部广播地址 + 1 =
200.0.0.128(也可用200.0.0.0 + 2^7 = 200.0.0.128)。 - 求主机位:\(2^n - 2 \ge 60 \Rightarrow n = 6\),掩码长度 = \(32 - 6 = 26\)。
- 销售部地址:
200.0.0.128/26。
第三步:网络部、财务部
依此类推,继续从上一个子网之后分配地址,分别按 \(2^n-2 \ge 20\)、\(2^n-2 \ge 7\) 求主机位即可。
ICMP
**ICMP(Internet Control Message Protocol)**用来传递差错、控制、查询等信息,与 IP 位于同一层,用来传送 IP 的控制信息。
主要功能:
- ICMP 重定向:通知主机一条通向目的地的更优路径。
- ICMP 差错检测 / 错误报告:如
Unreachable(不可达)信息指出路径有问题;当路径不可用时,ICMP 可以使 TCP 连接"体面地"终止。
最常用的基于 ICMP 的服务是 PING。
ARP
**ARP(Address Resolution Protocol,地址解析协议)**用于把 IP 地址解析为 MAC 地址。
要点:
- ARP 报文不能穿越路由器,不会被转发到其他网段。
- IP 地址分为网络部分和主机部分:网络地址的主机位全 0,广播地址的主机位全 1。
- 区分网络位/主机位的方法仍是子网掩码:1 对应网络部分,0 对应主机部分。