3、网络层核心:IP协议头部结构,IPv4地址分类与子网划分,CIDR与VLSM,路由基础
网络层是整个协议栈的「交通枢纽」。TCP 负责把数据可靠地送到,但真正决定「往哪送」的,是 IP 协议。
我刚开始学网络时,总觉得 IP 地址就是「一串数字」。后来在项目里排查一个跨网段不通的问题,才发现 IP 头部里每个 bit 都可能要命。今天咱们就把 IP 协议的核心拆开看看。
3.1 IP 协议头部结构
IP 头部固定 20 字节,后面可以跟选项。我习惯把它分成四行来看:
| 偏移 | 字段 | 长度 | 说明 |
|---|---|---|---|
| 0-3 | 版本 | 4 bit | IPv4 值为 4 |
| 4-7 | 首部长度 | 4 bit | 单位 4 字节,最小 5 |
| 8-15 | 服务类型 | 8 bit | 现在常用 DSCP |
| 16-31 | 总长度 | 16 bit | 头部+数据,最大 65535 |
| 32-63 | 标识、标志、片偏移 | 32 bit | 分片相关 |
| 64-71 | 生存时间 | 8 bit | 每跳减 1,防环路 |
| 72-79 | 协议 | 8 bit | 6=TCP, 17=UDP |
| 80-95 | 首部校验和 | 16 bit | 只校验头部 |
| 96-127 | 源 IP 地址 | 32 bit | 发送方 |
| 128-159 | 目的 IP 地址 | 32 bit | 接收方 |
TTL 字段很有意思。每经过一个路由器就减 1,减到 0 就丢弃。我见过有人把 TTL 设成 255,结果环路里包跑了 255 跳才被扔掉——网络直接瘫痪了。
3.2 IPv4 地址分类
IPv4 地址 32 位,早期按前几位分成 A、B、C、D、E 五类。说白了就是「看开头就知道是给谁用的」。
| 类别 | 开头 | 范围 | 默认掩码 | 用途 |
|---|---|---|---|---|
| A | 0 | 1.0.0.0 - 126.255.255.255 | 255.0.0.0 | 大型网络 |
| B | 10 | 128.0.0.0 - 191.255.255.255 | 255.255.0.0 | 中型网络 |
| C | 110 | 192.0.0.0 - 223.255.255.255 | 255.255.255.0 | 小型网络 |
| D | 1110 | 224.0.0.0 - 239.255.255.255 | — | 组播 |
| E | 1111 | 240.0.0.0 - 255.255.255.255 | — | 保留 |
分类地址有个大问题:浪费。一个 C 类只有 254 个主机,一个 B 类却有 65534 个。你想想看,一个中型公司用 B 类,大部分地址都空着。我早年给客户做规划时,就遇到过这种尴尬——B 类太大,C 类不够,最后只能拆成多个 C 类,路由表膨胀得厉害。
3.3 子网划分
子网划分就是「从主机位借几位给网络位」。比如 192.168.1.0/24,借 2 位给子网,就变成 /26。
公式很简单:
- 子网数 = 2借位数
- 每个子网主机数 = 2(32-掩码长度) - 2
减 2 是因为网络地址和广播地址不能用。我见过新手把 192.168.1.0/26 的广播地址算成 192.168.1.64,其实应该是 192.168.1.63。嗯,这里容易错。
借 2 位 → /26 → 每个子网 62 个主机。
子网 1: 192.168.1.0/26,范围 1-62
子网 2: 192.168.1.64/26,范围 65-126
子网 3: 192.168.1.128/26,范围 129-190
子网 4: 192.168.1.192/26,范围 193-254
3.4 CIDR 与 VLSM
CIDR(无类域间路由)彻底抛弃了 A/B/C 类的死板分类。说白了就是「掩码随便写,只要连续就行」。比如 10.0.0.0/8 到 10.0.0.0/16 之间,你可以用任何掩码。
VLSM(可变长子网掩码)更灵活——同一个网络里,不同子网可以用不同掩码。我当年给一个连锁店做网络规划,总部需要 200 个地址,每个分店只需要 10 个。用 VLSM:
- 总部:10.0.0.0/24(254 个主机)
- 分店 1:10.0.1.0/28(14 个主机)
- 分店 2:10.0.1.16/28
- 分店 3:10.0.1.32/28
你看,地址一点都没浪费。如果按分类地址,每个分店至少得给一个 C 类,那 200 多个分店就得 200 多个 C 类,路由表直接爆炸。
3.5 路由基础
路由就是「告诉数据包怎么走」。每个路由器维护一张路由表,里面写着:去哪个网络,从哪个接口出去,下一跳是谁。
路由表的核心条目:
- 目的网络:目标网段
- 掩码:网络位长度
- 下一跳:下一个路由器的 IP
- 出接口:从哪个口发出去
- 度量值:路径的「代价」
路由分三种:
- 直连路由:路由器自己接口上的网段,自动生成
- 静态路由:管理员手动配的,适合小网络
- 动态路由:通过 OSPF、BGP 等协议自动学习
我个人的经验是:少于 10 条路由,静态路由最稳。超过 50 条,必须上动态路由协议。有一次我给一个园区配了 30 多条静态路由,后来拓扑一改,改得我怀疑人生。
比如去 192.168.1.5,路由表里有 192.168.1.0/24 和 192.168.1.0/28,那肯定走 /28 那条。
你想想看,如果没有最长前缀匹配,那 192.168.1.5 可能被送到 192.168.1.0/24 的网关,但实际它应该在 192.168.1.0/28 的子网里。数据包就迷路了。
好了,IP 协议的核心就这些。头部结构、地址分类、子网划分、CIDR/VLSM、路由基础——这五个点串起来,就是网络层的全部骨架。下一层咱们要聊 TCP 了,那才是真正的「可靠传输」大戏。