🔌 第二章 用电信号传输TCP/IP数据
📄 一句话概括

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 秒实验

  1. 用 route print(Windows)看本机路由表第一行。
  2. 说出默认路由的网关地址怎么查。
  3. 想想第②步如果查不到会怎样(丢包回 ICMP)。

常见误区

  1. 以为 IP 头写的是最终 MAC——MAC 头才是下一跳。
  2. 以为 IP 保证送达——它尽力而为。
自测三问(点开对答案) 1. 发包五步是什么? —— 接数据、查路由、加 IP 头、ARP 加 MAC 头、交网卡。 2. 下一跳的信息从哪来? —— 路由表。 3. IP 层管不管重发? —— 不管,可靠性在 TCP。

相关笔记