📄 一句话概括
IP 头写源/目的 IP、协议号、TTL——目的 IP 全程不变(NAT 除外),协议号告诉收方载荷归 TCP 还是 UDP。
📝 本节和前面几节的关系
工单第③步展开——填 IP 信封。
一、四个关键字段
源 IP(回信地址)、目的 IP(终点)、协议号(6=TCP/17=UDP)、 TTL(每过一跳减 1,防死循环)。
二、终点与下一跳
目的 IP 是终点主机;MAC 头才是下一跳—— 沿途路由器每跳换写 MAC,IP 不动(NAT 例外)。
三、动手 Demo:IP 头部长什么样
关键字段速览:
for f, e, u in [('源 IP','192.168.0.5','回信寄给谁'),
('目的 IP','172.20.1.1','终点在哪'),
('协议号','6(TCP)','载荷给上层谁'),
('TTL','64','防环:过一跳减一')]:
print('%-8s %-14s %s' % (f, e, u))
实跑输出:
--------------------------------------------------------------------
IP 头部长什么样
--------------------------------------------------------------------
IP 头的关键字段:
字段 例子 用途
---------------------------------------------
源 IP 192.168.0.5 回信寄给谁
目的 IP 172.20.1.1 终点在哪
协议号 6(TCP) 载荷给上层谁
TTL 64 防环:过一跳减一
---------------------------------------------
注意:目的 IP 全程不变(NAT 除外),
变的是每跳换写的 MAC 头。
TTL 典型初值 64/128——tracert 就是靠 TTL 逐跳加一 逼出沿途路由器的应答。
30 秒实验
- tracert 一个外网地址,看 TTL 的游戏。
- Wireshark 找一个包的协议号字段值。
- 想想 NAT 改写 IP 后,回包怎么找到回来的路。
常见误区
- 以为沿途每跳都改目的 IP——NAT 场景才改。
- 以为 TTL 是秒数——是跳数。
自测三问(点开对答案)
1. 协议号 6 和 17 各代表什么? —— TCP 和 UDP。 2. TTL 防什么? —— 包在网络里死循环。 3. 全程不变的字段是什么? —— 源/目的 IP(NAT 除外)。- ☐ 下一节(2.5.4 生成以太网用的MAC头部)
相关笔记
- IP地址的结构(单播IP地址) — 地址本体
- 生成以太网用的MAC头部 — 外层信封
- 🔌 网络是怎样连接的 · 索引