📄 一句话概括
IP 层发包五步:接数据、查路由表定下一跳、加 IP 头、ARP 查 MAC 加 MAC 头、交网卡变信号;收包反序剥回。
📝 本节和前面几节的关系
2.5.1 立了世界观;本篇给出 IP 层的完整工单。
一、五步工单
① TCP 交下载荷;② 查路由表定下一跳网关; ③ 加 IP 头;④ ARP 查网关 MAC、加 MAC 头; ⑤ 交网卡出门。每步后文各有专节。
二、IP 层的尴尬
IP 只有【把包送到对端主机】的能力,丢与坏它不管—— 可靠性全在 TCP。这叫 IP 尽力而为。
三、动手 Demo:包收发概览
工单流程:
for s in ['1. TCP 交下 [数据+TCP头]',
'2. 查路由表 -> 下一跳网关',
'3. 加 IP 头',
'4. ARP 查网关 MAC -> 加 MAC 头',
'5. 交网卡 -> 出门']:
print(s)
实跑输出:
--------------------------------------------------------------------
包收发概览
--------------------------------------------------------------------
IP 层发一个包的完整工单:
1. TCP 交下 [数据+TCP头]
2. 查路由表 -> 下一跳网关是谁
3. 加 IP 头(源/目的 IP)
4. ARP 查网关 MAC -> 加 MAC 头
5. 交给网卡 -> 电信号出门
收包方反序剥信封,各层各取所需。
对照 2.2.2 三层信封——本工单正是【装信封】的流水线。
30 秒实验
- 用 route print(Windows)看本机路由表第一行。
- 说出默认路由的网关地址怎么查。
- 想想第②步如果查不到会怎样(丢包回 ICMP)。
常见误区
- 以为 IP 头写的是最终 MAC——MAC 头才是下一跳。
- 以为 IP 保证送达——它尽力而为。
自测三问(点开对答案)
1. 发包五步是什么? —— 接数据、查路由、加 IP 头、ARP 加 MAC 头、交网卡。 2. 下一跳的信息从哪来? —— 路由表。 3. IP 层管不管重发? —— 不管,可靠性在 TCP。- ☐ 下一节(2.5.3 生成包含接收方IP地址的IP头部)
相关笔记
- 将数据传输到远程网络(路由) — 路由表总览
- 生成包含接收方IP地址的IP头部 — 第③步展开
- 🔌 网络是怎样连接的 · 索引