SIMETRIUM .COM
从机架里的 10 µs 到去月球的 2.5 s
36 种语言
Symbol plate ECHO
RTT 来回一趟 · 单程却无从下手
三个大写字母,不加点不要与分组间隔混为一谈
单位页 下层 · 时间以 SI 秒计 第 1/1 页 · 修订 2026-09

往返时延与分组间隔

制外的量 · 以 SI 秒表示 · RTT 与分组之间的 Δt

一九八三年,迈克·缪斯在查一处网络故障时,用一个晚上写了个小程序:给某台机器发一条短短的请求,把等到回话所耗的时间打出来。名字取自声呐的人:潜艇放出一声轻响,听那回声,距离便从一个时间差里算出来。这个测量的习惯里生出了这个单位——记下的既不是去路,也不是回路,而是整整一圈。

其中的妙处在于,往返是用一只钟量的:请求从哪台机器出去,回话就到哪台机器,因此读数之差并不取决于对面那头的钟对不对得上。单程的时延就没这么容易得手——它要求两头的钟对得比时延本身还细,也就是要么另有一套传递时刻的规程,要么两端各装一台收卫星时刻的机子。

符号 RTT · Δt · SRTT
干活的单位 毫秒
由什么凑成 路程 + 串行化 + 排队
光在纤芯里的速度 ≈ 200 000 km/s
通话的界限 按 ITU-T G.114 为 400 ms
已完成译本 / 36
前往换算 一个晚上写成的 ping
01 · 定义

往返时延,是一个分组发出与它的回话到达之间的一段时间,由同一只钟量出。分组间隔,是同一道流里相邻两个分组放出来的时间之差;它不由网络定,而由往网络上压担子的人定。

往返由三项性质不同的东西凑成,把它们分清是要紧的,因为每一项的治法都不一样。头一项是传播的时间,由通路的长度和光在纤芯里的速度定下,除了更短的缆子,它对什么都不让步。第二项是串行化,把分组推进线路所用的时间,线路越快它越小。第三项是中间节点缓冲里的排队,也只有它,取决于网络此刻究竟有多忙。

由此引出一件不甚显眼的事:线路可以拓宽十倍,而往返却分毫不动,因为拓宽只去掉串行化,队列和通路的长度仍旧留在原处。更要命的是,那些「以防万一」留足余地做出来的缓冲里,分组并不丢,只是候着,负载之下往返便涨到以秒计——这便是后来被叫作 bufferbloat 的那桩祸事。

分组间隔并非偶然摆在旁边:一道流上发生的事,几乎全由间隔与往返之比来决定。只要分组出去的次数多过确认回来的次数,发送方就是在摸黑干活,必须在通路里存下它实际装得下的那么多数据——而这个量,恰恰就是速率与往返的乘积。

形式上 L——通路的长度,v——光在纤芯里的速度,C——线路的速率,S——分组的大小,N——节点的个数
往返由什么构成
RTT = 2L / v + N · S / C + t(排队)
通路的容量
BDP = C · RTT
重传的期限
RTO = SRTT + 4 · RTTVAR
分组间隔
Δt = S(净荷) / B
T
量纲:两个量量的都是时间
200
每毫秒 km——纤芯定下的界限
20
毫秒——电话里的分组间隔
交互 · 一个分组来回一趟

选一条通路,把滑块在分组大小上来回推。蓝色的分组从左边机架去右边,橙色地回来;通路下方那条带子把往返拆成三项,好看清它究竟耗在哪里。把线路拓宽,只缩短中间那一段——而在长通路上,这一段本就最小。

分组的大小
整个往返
分组的串行化
在途的数据(BDP)

留足余地做出来的缓冲

内存降价,比算法改变来得早;厂家便往设备里塞下几百个分组的队列,以为缓冲多些总不至于坏事。结果恰恰相反:满了的队列并不丢分组,只是把它们扣住,发送方收不到任何拥塞的信号,于是接着往里压。一条家用线路上,负载之下往返涨到一秒半,而速率还是原来那个数。

02 · 换算

往返、管道与分组流

往返用什么单位填都行,卡片会把它折算成别的,随后算出与它相关的那些:不同速率下通路里能装多少数据,窗口定下什么样的上限,各种编码器又挑什么样的分组间隔。

算容量用的速率,取自交互部分里选定的那条通路;在细项设置中可固定为一吉比特。

ping 量的并不完全是应用程序所需要的那件事。远端节点对回显请求的处理走的是另一条道,常常绕过主计算部分,因此它的时延与真实连接的时延对不上;另一些设备则把这类请求排在最后才答,或者干脆不答。所以大的 ping 未必意味着慢的连接,小的也担保不了快。

换算表
数值说明
重传的期限
通路的容量
数量级

03 · 数量级
对数标度:从微秒到秒

往返时延,以秒计
浅色那条带子,是往返决定人之所感的那一段:从十毫秒起——低于它便觉不出差别——直到四百,越过之后通话就成了不可能。它左边住着交易所和机器内部的时延,右边是卫星与行星际的链路,那里干脆放弃了等回话。
04 · 测量仪器

往返时延用什么来捉

回显请求 · 分析仪 · 硬件测试仪 · 带钟的探针
回显请求

程序发出一个带时间戳的分组,等它回来,读数之差就是往返。它的长处在于一只钟足矣,对面除了肯答之外别无所求;它的短处在于,对面是从另一条不一定快的道上答的。

分组分析仪

把整场来往都录下来,往返便可从流本身取得:从一个段出去到它的确认回来的那段时间。这样量到的,正是应用程序所见的时延,而且离散也一并现了形——在通话里,它比均匀的时延更碍事。

硬件测试仪

那些直接在网卡芯片里盖时间戳的设备,去掉了操作系统带进来的不确定,把分辨率压到几十纳秒。它们按另一套约定交换,两端各盖两个戳——正是这一点,才使往返能拆成不相等的两半。

带同步钟的探针

单程的时延,只有在两端的钟被对到比时延本身还细的共同时刻上,才量得出来——为此要用一套专门的同步规程把线路标定,或者装上收卫星时刻的机子。没有这些,往返便是唯一老实的数。

05 · 书写规则

往返带单位,抖动另记

记号用三个大写拉丁字母写,不加点;数值带上单位,并注明究竟量的是什么:单次取样、一列的平均,还是它的中位数。离散另作一个数写在旁边,因为单凭平均,说不出分组走得匀不匀。

正确
RTT = 128 ms(100 次取样的中位数)
RTT 12.4 ms,离散 0.8 ms
Δt = 20 ms, 50 pps
单程时延 63 ms(PTP 时钟)
错误
ping 130
单程时延 = RTT / 2
通道越宽,往返越短
R.T.T.

头一种写法连单位都省了,连同意思一起省掉:一百三十个什么——毫秒还是微秒?第二种把假定当成测量,可去路与回路常走不同的道,两半并不相等。第三种重复着最常见的错处,把往返当成线路的性质,而不是整条通路的。第四种把两个量混作一谈:分组之间的间隔并不是往返。

06 · 相邻单位

往返从时间这一面描述通路,速率从数量那一面,两者相乘得出第三个量——通路的容量;没有它,远距离的快连接一条也调不起来。与它并排的是时延的离散,在通话和游戏里,它比均匀的落后更碍事。

bit/s
信道速度
一秒里装得下多少
BDP
通路的容量
速率 × 往返
J
时延的离散
按 RFC 3550 的抖动
平滑后的往返
SRTT ← 7/8 · SRTT + 1/8 · R
时延的离散
J ← J + (|D| − J) / 16
窗口定下的速率上限
B(max) = W / RTT

Simetrium 的档案中 与之相邻的是 比特字节,通路的容量正是用它们来算的, ,两个量最终都归结到它, 分贝 出自链路预算的,以及 时钟周期,它定下硬件时间戳的分辨极限。

07 · 历史部分

一声轻响与回声

档案 · 1969 → 今天
1969 · 洛杉矶
头两个字母,随后中断

当加州大学与门洛帕克的研究所之间传第一个词时,操作员在电话里一个字母一个字母地念,一个字母一个字母地等确认。连接在第三个字母上断了,可这套做法本身——发出去、等回话、看钟——恰恰就是沿用至今的那一套。

560 km,50 kbit/s 的线路
1983 · 写程序的一个晚上
ping 取名自声呐的回声

迈克·缪斯查故障时用一个晚上写成了他的程序,名字取自回声测深仪的声响:短短一击,随后等那一返。这名字取得如此贴切,以致「ping 一下」这个说法远远越出了网络这一行,如今指的是任何一条短消息,发出去只为看看那头有没有人。

约一千行 C 语言
1988 · 网络的堵塞
往返成了感觉器官

一九八六年秋,一条大学线路的吞吐跌了一千倍:发送方收不到确认,便一遍遍地发新的副本,把通路彻底压垮。范·雅各布森提出的救法沿用至今:盯住往返和它的离散,把两者的增长当作拥塞的信号,也就是在丢失开始之前就先把发送勒住。

32 kbit/s 跌到 40 bit/s
今天
同臃肿缓冲的较量

当今的流控算法不再盯着丢失,而是直接盯着往返怎样往上涨,赶在队列填满之前就把发送勒住。家用路由器也有了刻意把缓冲留短的调度——同一条线路上,负载之下的往返便从一秒半跌到几十毫秒。

同一条线路上 1500 ms → 30 ms
回声测深仪:往下一击,往上一返,深度出自一个时间差
计量学札记

往返的一半是假定,不是测量

往返方便就方便在不要求两只钟对得上:发出与收到都由同一台设备盖戳,两套刻度的偏差压根进不到差值里去。正因如此,ping 到处都能用,也不必调;而单程的时延则是个脾气大得多的量,它要求的同步比所量的东西还细。

把往返一劈两半的习惯所以能立住,虽说没多少道理:去对面的流与回来的流,常走不同的路由,长短不同,负载也不同,真正的两半可以差上一倍。整个网络这一行里最容易量的那个量,同时也是最常被读错的那个。

两只钟走不到一处——所以往返的一边分不出来
目录 · 计量单位

每个量都有一份档案

七个 SI 基本单位,二十二个有专名的导出单位,以及若干制外量 — 少了它们,工程与历法都转不动。

7
基本
22
导出
36
种语言

下层:时间、数量、速率

已打开的数据页被标出

SI 基本单位

标出了秒——两个量都落在它上头

分组间隔在实际中的样子

从十六毫秒到半分钟
08 · 你的语言
每个链接都指向真实的语言页面

用你的语言阅读

已翻译并校对 初稿翻译 待译