Packet Delay, Forwarding, and Routing(分组时延、转发与路由)思考记录

背景

学习《Computer Networking: A Top-Down Approach》1.3 分组交换时,围绕以下问题反复确认:

  • 单条链路上有 N 个 packet 时,为什么总发送时延是 N(L/R)
  • 1 个 packet 经过 N 条链路时,为什么也是 N(L/R)
  • 传播时延、排队时延分别发生在哪里
  • 书上为什么只提发送时延、排队时延、传播时延
  • forwardingrouting 到底分别在做什么
  • packet loss 是丢一个 packet,还是把相关 packet 一起丢掉

Q1:单条链路上有 N 个 packet,为什么总时间是 N(L/R)?

初始疑问

直觉里容易把“链路上传输一个 packet”理解成一次性完成。

但如果有 N 个 packet 连续通过同一条链路,最后一个 packet 什么时候完成发送?

思考过程

每个 packet 的长度是 L,链路速率是 R

把一个 packet 的所有比特完整推出发送端口,需要:

L / R

如果是 N 个 packet 连续发送,那么每个 packet 都要占用一次发送过程。

因此最后一个 packet 完成发送时,总发送时延是:

N(L / R)

这里先只看发送时延,不把传播时延混进去。

结论

N 个 packet 经过同一条链路时,总发送时延 = N(L / R)

Q2:1 个 packet 经过 N 条链路,为什么也是 N(L/R)?

初始疑问

我一开始以为 1 个 packet 走多跳时,可能只算成 2L/R 之类的形式。

思考过程

这里的关键是:一个 packet 经过多少条链路,就要被完整发送多少次

如果路径上有:

N 条链路
N - 1 台路由器

那么 packet 会被存储转发:

  1. 在第 1 条链路上完整发送一次
  2. 到达路由器后,再在第 2 条链路上完整发送一次
  3. 依次类推

所以发送时延累加后得到:

N(L / R)

如果只有 2 条链路,那才会是 2(L/R)

结论

1 个 packet 经过 N 条链路时,总发送时延 = N(L / R)

Q3:书上这部分里的三种时延分别发生在哪里?

初始疑问

这一节看到的是:

  • 发送时延
  • 排队时延
  • 传播时延

那它们分别对应网络里的什么位置?

思考过程

按这一节的简化视角,可以先这样理解:

  • 排队时延:packet 在输出缓存里等
  • 发送时延:packet 被完整推出端口
  • 传播时延:信号在链路上传过去

也就是:

flowchart LR
    A[输出缓存] -->|排队时延| B[发送端口]
    B -->|发送时延 L/R| C[物理链路]
    C -->|传播时延 d/s| D[下一跳]

这一节先不单列处理时延,所以学习时可以先把它放在后面,不和当前模型混在一起。

结论

这一节的主线是:

排队时延 + 发送时延 + 传播时延

Q4:处理时延为什么没有在这一节单独提?

初始疑问

完整的节点时延常常会提到处理时延,但 1.3 里没有展开。

思考过程

这一节的重点是先让读者抓住分组交换里最核心、最直观的三件事:

  1. packet 在节点里等多久
  2. packet 被推出去要多久
  3. 信号在链路上跑多久

所以处理时延在这一节里被省略了。

这不表示它不存在,只是当前章节先不把它作为主线。

结论

1.3 关注三种时延;处理时延是更完整模型里再补充的内容。

Q5:forwarding 和 routing 分别是什么?

初始疑问

书上提到转发表和路由选择协议:

  • 转发表把目的 IP 映射为输出链路
  • 路由选择协议用于自动设置转发表

思考过程

可以先把它们理解为两层不同的事情:

  • forwarding:router 收到 packet 后,立刻查表,决定从哪个输出口发出去
  • routing:网络里通过路由选择协议,自动算出这些表项,并维护它们

简单说就是:

  • forwarding 负责“走哪条口”
  • routing 负责“表怎么来”

结论

forwarding = 依据转发表转发 packet
routing = 自动生成 / 维护转发表

Q6:packet loss 是丢一个 packet,还是把相关 packet 一起丢掉?

初始疑问

输出缓存满了时,丢的是哪个范围?

思考过程

在当前学习阶段里,可以先把它理解为:

  • 丢的是进不去的那个 packet
  • 其他已经在队列里的 packet 继续保留和转发

也就是说,packet loss 一般是“按 packet 发生”的,不会把无关的其他 packet 一起带走。

结论

packet loss 通常表示某一个 packet 被丢弃,不是把一批 packet 全丢掉。

最终理解

在 1.3 的简化模型里,分组交换的核心是三种时延:排队、发送、传播。packet 经过多少条链路,就要被完整发送多少次;forwarding 是查转发表做转发,routing 是自动维护这些表;packet loss 通常只影响那个进不去队列或被丢弃的 packet。


总结模型

flowchart TD
    A[packet 到达节点] --> B[输出缓存排队]
    B --> C[发送端口推出 packet]
    C --> D[链路上传播]
    D --> E[下一跳节点接收]
    E --> F[查转发表转发]

    B -->|排队时延| B1[queuing delay]
    C -->|发送时延| C1[transmission delay]
    D -->|传播时延| D1[propagation delay]
    F -->|forwarding| F1[依据转发表决定输出链路]

关联概念