C05 · 第 1 章 · 链路与时延
网络分层与时延
说明协议封装与网络分层,计算发送、传播、排队和多跳时延,并区分链路速率、有效吞吐量与往返时间。
本章目标
- 区分协议交换、模块接口与数据封装。
- 按包长、速率和距离计算发送及传播时延。
- 绘制多个数据包经过存储转发链路的时间顺序。
- 明确有效吞吐量、往返时间及带宽时延积的计数口径。
本页目录
协议、接口与封装
浏览器向服务器请求一个文件时,应用程序需要约定请求的含义,主机需要标识通信端点,沿途设备需要决定数据的出口,网卡还要把比特转换成链路上的信号。这些任务分别涉及应用层、传输层、网络层、链路层和物理层。分层描述帮助我们确定每种信息由谁产生、由谁读取,以及一个故障会影响哪些通信过程。同一台设备往往同时执行多层任务,层次名称描述的是职责。
协议规定通信双方交换什么信息,以及收到信息后如何改变状态。接口规定相邻模块之间提供什么操作,例如应用把一段数据交给传输模块,或者网络层要求链路层发送一个数据包。对等协议的报文可能经过多台设备,接口调用则通常发生在本机。分析程序时,把这两种关系分开有助于定位输入、输出和状态的存放位置。
封装把上层数据作为下层的载荷,并添加该层所需的控制字段。以一个简化的以太网、IPv4、UDP 通信为例,UDP 首部携带端口号,IPv4 首部携带源地址和目的地址,以太网首部携带当前链路使用的地址。路由器把收到的链路帧解封装,查询 IP 目的地址,再为下一条链路生成新的帧。沿途链路使用的首部会变化,应用仍按端到端的协议解释消息。
RFC 791: Internet Protocol
J. Postel · 1981 · RFC Editor
打开官方来源RFC 791 的功能说明和首部格式给出了 IPv4 数据报的处理范围;它明确采用逐个数据报的服务模型。阅读协议时,应分别寻找地址、长度、错误检测和转发规则,避免把上层协议提供的行为归入 IP 本身。
发送时延与传播时延
设一个已经包含当前层首部的数据单元长为 比特,链路发送速率为 比特每秒。发送端把全部比特放入链路所需的时间称为发送时延:
这个模型假设速率在发送期间保持不变,并且计算中没有遗漏必须串行发送的链路开销。若题目只给出文件字节数,我们先确定要计算文件的理想传输下界,还是包括首部和重传的实际传输时间,再选用对应长度。
设链路长度为 米,信号传播速度为 米每秒,则传播时延为
第一个比特离开发送端后就开始传播,无须等待整个包发送完毕。因此,接收端得到最后一个比特的时间为发送时延与传播时延之和。提高发送速率会缩短前一项;在线路长度和介质不变时,后一项保持不变。
网络速率通常使用十进制前缀:。文件大小中的 ,而 。字节与比特换算还需要乘以八,这两处换算应在代入前完成。
一个 数据包通过 链路发送,线路长 ,传播速度取 。忽略其他开销,求最后一个比特到达接收端的时间。
我们先把包长换为 ,线路长度换为 。发送时延为 ;传播时延为 。两项相加得到 。第一个比特在 时到达,后续比特再经过 全部到齐,符合发送与传播重叠进行的时间顺序。
多跳传输与排队
存储转发设备收到完整的数据包后才把它送入出口链路。若一个包经过 条链路,且不发生丢包或重传,则一次单向传输的时间写成
这里 允许不同链路的封装长度不同;处理时延包含设备解析首部和查找转发表的时间,排队时延取决于数据包到达时出口是否繁忙。若设备使用直通转发,首部到齐后就开始发送,存储转发公式需要调整。题目必须说明采用哪种设备模型。
队列的形成由同一出口的竞争决定。一个数据包即使进入了高速网卡,也可能等待较慢出口上正在发送的其他包。平均到达速率低于服务速率有利于长期稳定,但某个短时间窗口内的突发流量仍可能填满缓冲区。因此,单次空闲链路测量不足以描述高负载下的时延。
三个等长数据包依次经过两条速率均为 的链路。每包长 ,两条链路的传播时延各为 ;中间设备采用存储转发,忽略处理时间和其他流量。
每个包在一条链路上的发送时间是 。第一包在 时完全到达中间设备,在 时完全到达终点。第二包在中间设备等待第一包发送完成后立即开始发送,终点收到第二、第三包的时刻分别为 和 。
我们用流水传输公式核对结果:相同速率、相同包长且中间没有额外排队时, 个包通过 条链路的总时间为 。代入 得 ;若误把每个包的完整路径时间相加,就会忽略相邻链路同时工作的阶段。
吞吐量与往返时间
吞吐量描述单位时间内交付的数据量,报告时要说明计数位置。链路吞吐量可能包括首部、重复发送和控制报文;应用有效吞吐量只计算应用收到的有效内容。沿路径各条链路的速率不同,持续传输的理想上界受最慢链路限制,还会受到共享流量、端点处理能力以及协议窗口的影响。
往返时间记为 ,表示一个请求发出至相关响应返回的间隔。这个量包含两个方向的路径时间和响应端的处理时间,不能直接当作单向传播时延。只在路径近似对称且处理影响很小时,把往返时间除以二才是合理的估计。
对速率为 、往返时间为 的理想通道,带宽时延积 给出一个往返周期内能够发送的比特数。若发送者每次只能发送 比特,随后必须等到确认才能继续,则持续速率还受 限制。例如 与 对应 ,即 。这个计算描述通道与确认周期的匹配关系,实际协议还要处理拥塞、接收缓存和丢包。
时延计算练习
计算网络时间时,先画出每段发送与等待区间,再列出单位。多个包的发送可能重叠,而同一个出口上的串行发送必须按顺序安排;这两种约束共同决定结束时刻。以下各题都忽略题目未列出的开销,答案只适用于给定模型。
一个 文件通过 链路发送,理想发送时间是多少?写出字节到比特的换算。
查看解答
文件为 8388608 bit,除以 10000000 bit/s 得 0.8388608 s。这里 MiB 按二进制大小换算,链路速率按十进制前缀换算。
第一道例题中,将链路速率提高到 ,其他条件保持不变,求末比特到达时间,并说明哪一项改变。
查看解答
原发送时延为 0.12 ms,传播时延为 1 ms。速率变为 1 Gbit/s 后,发送时延为 0.012 ms,总时间为 1.012 ms;传播时延保持 1 ms。
一个数据包到达出口时,前面恰有三个尚未开始发送的 包,出口速率为 。假定没有正在发送的包,它的排队时延是多少?
查看解答
三个等待发送的包共占用 。若还存在一个已开始发送的包,必须另外计入其剩余发送时间。
路径速率为 ,往返时间为 ,发送者最多允许 数据尚未确认。忽略其他限制,求理想持续速率上界。
查看解答
窗口为 ,往返时间为 0.05 s,所以窗口限制给出的速率为 10.24 Mbit/s。与 100 Mbit/s 取较小值,理想持续速率上界为 10.24 Mbit/s。
CS 144: Introduction to Computer Networking
Keith Winstein · 2026 · Stanford University
打开官方来源斯坦福 CS 144 把网络接口、路由、字节流和传输协议安排为连续的课程实验。学习分层模型后,适合结合课程中的网络热身和字节流任务,观察应用读写的数据块与链路发送的数据包如何对应;完成实验时还应遵守课程公布的作业协作规则。