--- title: "04-网络层:IP 与全球找路" aliases: - 网络层 created: 2026-08-29 tags: - 基础与理论 - 计算机网络 - "408" --- # 网络层:IP 与全球找路 > 链路层解决了"相邻两站",但一个包裹从你的电脑到对面机房要跨几十个网络。网络层是互联网的心脏,两件大事:**编址**(IP 地址给全世界每台设备编号)和**路由**(在几十个网络里找路)。传输单位是"**分组/数据报**"。 ## 一、网络层管什么 把分组从**源主机跨过若干网络**送到**目的主机**。两个核心问题: 1. **寻址**:目的地怎么唯一标识?——IP 地址 2. **路由**:路怎么找?——路由表 + 路由协议 > 💡 互联网在网络层选了**数据报**方式(每个分组自带完整地址、独立选路),放弃了电路交换式的"虚电路"——代价是分组可能乱序、丢包,好处是健壮灵活:一条路断了,后面的分组自动换路。这个"不可靠底层"的赌注,赢了整个互联网。 ## 二、IPv4 地址:给全世界设备编号 32 位,习惯写成**点分十进制**:`192.168.1.100`。 ### 分类地址(传统,考试要认) | 类 | 前缀 | 网络位 | 范围(首字节) | 用途 | | --- | --- | --- | --- | --- | | A | 0 | 8 位 | 1 ~ 126 | 超大网络 | | B | 10 | 16 位 | 128 ~ 191 | 中型网络 | | C | 110 | 24 位 | 192 ~ 223 | 小型网络 | | D | 1110 | — | 224 ~ 239 | 组播 | | E | 1111 | — | 240 ~ 255 | 保留实验 | 特殊地址:**127.0.0.1** 本机回环;**主机位全 0** 是网络本身;**主机位全 1** 是广播。 ### 私有地址(不出门的号段) ``` 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 ``` 私有地址**不能在公网路由**——你家家宽路由器 192.168.x.1、公司内网,全是这几段。全世界的内网都用 192.168 开头也不冲突,因为它们根本不上街。那内网怎么上网?——**NAT**(见第七节)。 ## 三、子网划分与 CIDR ### 子网掩码 分类地址太死板(B 类 6 万台主机谁用得完?)。**子网掩码**来了:1 对应网络位、0 对应主机位,**按位与**运算提取网络号。 ``` IP: 192.168.1.100 掩码: 255.255.255.0 按位与 → 192.168.1.0 ← 网络号(同一网络才能直接交付) ``` ### CIDR:无分类编址(现代标准) 掩码写成斜线记法 `/n`,n 是网络位长度,**彻底打破 ABC 分类**: ``` 192.168.1.0/24 ← 前 24 位是网络位,后 8 位是主机位(254 台可用主机) 10.0.0.0/8 ← 巨型网络 ``` **例题**:把 192.168.1.0/24 平均切成 4 个子网? ``` 切 4 份 = 借 2 位主机位当网络位(2² = 4) → /24 变 /26,每段主机位 6 位(62 台可用) 192.168.1.0/26 (.1 ~ .62) 192.168.1.64/26 (.65 ~ .126) 192.168.1.128/26 (.129 ~ .190) 192.168.1.192/26 (.193 ~ .254) ``` 反过来还有**路由聚合**(超网):把连续的小网络合并成一条路由公告——路由表因此瘦身。 ## 四、为什么"分层寻址"是妙笔 路由器不用记住全球几十亿台设备——它只记"**到哪个网络走哪条路**"。 > 🤔 和邮政系统同构:快递员不需要知道你家哪张床,只需要知道到"哪个城市哪个区"。IP 地址 = 网络(区)+ 主机(门牌),路由表按"区"聚合——几十亿设备的路由问题瞬间缩成十几万条网络路由。**分层 = 用前缀做索引**,和 [[00-信息的表示与处理|信息的表示]]里"前缀自解释"的编码思想一脉相承。 ## 五、IP 首部:几个关键字段 挑干活最多的字段讲(完整 20 字节首部背结构意义不大): | 字段 | 干什么 | | --- | --- | | TTL | 每过一个路由器减 1,减到 0 就丢弃——**防路由环路让分组永生不死** | | 协议 | 载荷是谁:6=TCP、17=UDP——给传输层的交接单 | | 源/目的 IP | 全程不变(NAT 除外) | | 标识/标志/片偏移 | **分片三件套**:包比链路 MTU(1500)大就切片,到目的地再重组 | 分片是 [[03-数据链路层|链路层 MTU]] 伏笔的回收:以太网一口气只能运 1500 字节,更大的 IP 包就地切片,各片独立传输、**只在最终目的地重组**(中间路由器不拼,只管切)。 ## 六、ARP:IP → MAC 的翻译官 [[03-数据链路层|链路层]]说过:实际交付靠 MAC,路由靠 IP。两套地址怎么对上? ``` 问:192.168.1.100 的 MAC 是多少? → 广播 ARP 请求(全网都收到) → 目标主机单播应答:"是我,MAC 是 a4:83:e7:xx:xx:xx" → 双方各自缓存(arp 表),下次免问 ``` - **同网段**:直接 ARP 问目标 - **跨网段**:问不出目标的 MAC——目标是"外区的",只能 ARP 问**网关**(默认路由器)的 MAC,把包裹交给它送出小区 > 💡 `arp -a`(链路层篇的动手玩)看到的缓存表就是它。ARP 欺骗(假应答毒化缓存)也是内网攻击的经典起手式——协议太信任"有问必答"了。 ## 七、ICMP:网络的体检报告 ICMP 挂在 IP 上,专门传"控制消息"(差错、探询)。你天天在用它: - **ping**:发 ICMP 回显请求,对方回显应答 → 通不通、延迟多少、丢不丢包 - **traceroute / tracert**:依次发 TTL=1,2,3…的分组。每个路由器把 TTL 减到 0 时回一条"超时"消息——**沿途每台路由器被迫自报家门**,整条路径就画出来了 ## 八、NAT:全世界的内网共用公网 IP 的魔法 IPv4 只有 2³² ≈ **43 亿**个地址,全球设备早就超了。救场的是 NAT(网络地址转换),通常长在路由器上: ``` 内网 192.168.1.100:51777 → 路由器改写成 公网IP:40001 → 互联网 回包到 公网IP:40001 → 路由器查转换表改写回 192.168.1.100:51777 ``` **NAPT(端口版 NAT)**连端口号一起改写,一个公网 IP 能伺候成百上千台内网设备——你家所有手机电脑共享一个运营商 IP,靠的就是它。 - 代价:外网**主动**找不进来(转换表里没这个映射)——所以家用 NAS 要"内网穿透",服务器要"端口映射" - IPv4 地址用尽的问题,正式解法是 IPv6 ## 九、IPv6:下一代的地址本 - **128 位**地址,地址数 = 2¹²⁸(说"给地球上每粒沙子都编上号"毫不夸张) - 写法:8 组冒号十六进制 `2001:0db8::8a2e:0370:7334`(连续全 0 可缩写成 `::`,只能缩一次) - 去掉了分片、首部校验和等负担——首部定长 40 字节,转发更快 - 过渡方案:双栈(设备同时跑 v4/v6)、隧道(v6 包裹在 v4 里穿过旧网络) > 🤔 运营商喊了二十年的"IPv6 部署",近几年在移动网络里其实已经悄悄普及了——你的手机流量很可能已经在用 v6。 ## 十、路由:路径怎么选 - **静态路由**:管理员手写,小网络够用,大网络维护不动 - **动态路由协议**:路由器之间互相"交换路况",自动算路 两大门派(都在**自治系统内部**): | | RIP | OSPF | | --- | --- | --- | | 思想 | **距离向量**:邻居之间互相抄"到各处的距离表" | **链路状态**:全网地图人手一份,各自算 | | 度量 | 跳数(≤15,16=不可达) | 带宽代价 | | 算法 | Bellman-Ford | **Dijkstra** | | 名场面 | "好消息传得快,坏消息传得慢"(计数到无穷问题) | 收敛快,现代主力 | **自治系统之间**靠 **BGP**:它不追求"最短",追求"可达 + 符合商业政策"(哪家运营商愿意中转谁的流量,是政治与生意)。互联网的骨架就是无数 AS 用 BGP 连起来的。 **路由器查表规则:最长前缀匹配**——多个路由都匹配时,选网络前缀最长的(最具体的)那条。 ``` 目的 192.168.1.100: 192.168.0.0/16 → 走接口A 192.168.1.0/24 → 走接口B ← 前缀更长,赢 ``` ## 十一、盲点自测 1. **子网掩码干嘛用的?** ——按位与运算拆分网络号/主机号;同网段直接交付,跨网段交给网关。 2. **/26 能接多少台主机?** ——主机位 32-26=6 位,2⁶-2 = 62 台(去掉网络地址和广播地址)。 3. **TTL 防什么?** ——路由环路:每过一跳减 1,减到 0 丢弃,防止分组绕圈永生。 4. **跨网段时 ARP 问的是谁?** ——网关的 MAC(目标在"外区",先交给出小区的路由器)。 5. **NAT 为什么能缓解地址枯竭?** ——私网地址 + 端口改写复用,一个公网 IP 顶成百上千台设备;代价是外网无法主动进入。 6. **RIP 和 OSPF 的门派区别?** ——距离向量(抄邻居的表)vs 链路状态(全网地图自己算 Dijkstra);OSPF 收敛快,是现代内网主力。 7. **最长前缀匹配什么意思?** ——多条路由都命中时选前缀最长(最具体)的,精确优先。 8. **traceroute 的原理?** ——TTL 从 1 递增,逼沿途每台路由器返回超时消息,逐跳自报家门。 ## 十二、动手玩一把 ```bash # 本机 IP / 掩码 / 网关 ifconfig | grep "inet " # macOS;Linux 用 ip addr netstat -rn | head # 路由表(macOS);Linux: ip route # 连通性与路径 ping example.com traceroute example.com # Windows 是 tracert # DNS 排查过渡(应用层伏笔) nslookup example.com ``` --- 包裹送到了正确的**机器**,但机器上同时跑着几十个程序——到底交给谁?→ 端口与 TCP 的故事 → [[05-传输层]] ⬅️ [[03-数据链路层|数据链路层]] 🏠 [[00-基础与理论|00-基础与理论]] ➡️ [[05-传输层|传输层]]