408 计算机网络|HTTP 的 RTT 怎么数:用多道题讲清楚

对应章节:应用层 → HTTP;传输层 → TCP

核心:先画时间线,再数 RTT,别死背一个公式。


1. RTT 是什么

RTT:

复制代码
Round Trip Time
往返时间

大白话:

一个消息从客户端到服务器,再有响应回来,大约经历一个 RTT。

HTTP 题经常忽略:

复制代码
数据真正在线路上的发送时延

于是很多过程就可以按 RTT 来数。


二、最基本的两个 RTT

如果从"开始建立 TCP 连接"算起:

复制代码
第1个RTT:
TCP建立连接

第2个RTT:
发送HTTP请求
服务器返回对象

所以:

复制代码
建立一次TCP连接 + 获取一个小对象
≈ 2 RTT

注意:

如果题目说"从发出 HTTP 请求开始",通常就不再计算前面的 TCP 建连 RTT。

这是最容易漏的条件。


三、HTTP/1.0 非持久连接

非持久:

复制代码
一个TCP连接只传一个对象

例如主页面引用 3 张图片:

复制代码
HTML
图片1
图片2
图片3

如果不能并行建立 TCP:

每个对象:

复制代码
1 RTT 建TCP
+
1 RTT 请求/响应
=
2 RTT

一共 4 个对象:

复制代码
4 × 2 RTT
= 8 RTT

秒杀

复制代码
HTTP/1.0
非持久
不能并行
N个引用对象

总对象数 = N+1

RTT = 2(N+1)

前提:

复制代码
从TCP连接建立开始计时
且忽略对象传输时延

四、HTTP/1.1 持久非流水线

持久连接:

复制代码
只建立一次TCP
后续对象继续使用同一连接

非流水线:

复制代码
前一个请求响应完成
才能发下一个请求

例如:

复制代码
主页面 + 3张图片

若从建立 TCP 开始:

复制代码
1 RTT:建立TCP
1 RTT:拿HTML
1 RTT:拿图片1
1 RTT:拿图片2
1 RTT:拿图片3

总共:

复制代码
5 RTT

秒杀

若有 N 个引用对象:

复制代码
1 RTT 建连
+
1 RTT 主页面
+
N RTT 引用对象

= N+2 RTT

五、HTTP/1.1 持久流水线

流水线:

拿到主页面、知道所有引用对象后,可以连续发出多个请求,不必等前一个响应回来。

例如:

复制代码
HTML引用3张小图片

时间:

复制代码
1 RTT:建立TCP
1 RTT:获取HTML
1 RTT:连续请求3张图片并收到响应

总共:

复制代码
3 RTT

所以理想情况下:

复制代码
持久流水线
= 1 + 1 + 1
= 3 RTT

但是注意:

如果题目又给了 MSS、拥塞窗口、慢开始,就不能只套"3 RTT"。

还要看 TCP 一轮到底能发多少数据。


六、题型1:持久非流水线

题意:

复制代码
HTTP/1.1
持续非流水线
主页面引用5张图片
一次请求-响应 = 1 RTT
从发出主页面HTTP请求开始计时

因为已经从 HTTP 请求开始,不算 TCP 建连。

过程:

复制代码
1 RTT:主页面
5 RTT:5张图片依次请求

所以:

复制代码
6 RTT

核心:

复制代码
"从HTTP请求开始"
→ 不要额外加建连RTT

七、题型2:非持久连接

题意:

复制代码
HTTP/1.0
非持久
不能并行TCP
1个主页面
7张图片
从建立TCP连接开始计时
忽略发送时延

一共:

复制代码
8个对象

每个对象:

复制代码
2 RTT

所以:

复制代码
8 × 2 = 16 RTT

八、题型3:RTT + MSS + TCP慢开始

题意:

复制代码
HTTP/1.1
主页面大小 = 1 MSS
图片大小 = 3 MSS
RTT = 10ms
从请求建立TCP连接开始

按408常用慢开始模型:

复制代码
初始cwnd = 1 MSS

时间线:

复制代码
第1 RTT:
建立TCP

第2 RTT:
发送1 MSS的HTML
确认回来后 cwnd:1 → 2 MSS

第3 RTT:
图片先发2 MSS
确认回来后窗口继续增大

第4 RTT:
发送图片剩余1 MSS

总计:

复制代码
4 RTT

RTT = 10ms:

复制代码
4 × 10ms = 40ms

关键:

一旦题目出现 MSS、cwnd、慢开始,就要把"每轮能发多少 MSS"画出来。


九、题型4:自己练

条件:

复制代码
RTT = 5ms
HTTP/1.1
从建立TCP连接开始
HTML = 1 MSS
图片 = 7 MSS
初始cwnd = 1 MSS
忽略传输时延

过程:

复制代码
第1 RTT:建连

第2 RTT:
HTML 1 MSS
cwnd → 2

第3 RTT:
图片发2 MSS
剩5 MSS
cwnd → 4

第4 RTT:
图片发4 MSS
剩1 MSS
cwnd → 8

第5 RTT:
图片发剩余1 MSS

总计:

复制代码
5 RTT = 25ms

十、做 RTT 题的固定步骤

不要上来套公式,先写:

复制代码
1. 从什么时刻开始计时?
2. TCP连接是否已经建立?
3. HTTP是持久还是非持久?
4. 是否流水线?
5. 有几个对象?
6. 是否给了MSS/cwnd/慢开始?

然后画:

复制代码
RTT1:
RTT2:
RTT3:
...

基本不会错。


十一、秒杀口诀

复制代码
非持久:
每个对象一般要重新建TCP

持久:
TCP只建一次

非流水:
一个请求回来再发下一个

流水:
多个请求可以连续发

出现MSS/cwnd:
别只数HTTP
还要数TCP发送轮次
相关推荐
XUEYUAN52126 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK6 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
z落落6 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
花间相见6 天前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
云运维笔记6 天前
华为设备IP地址配置全攻略
运维·网络·计算机网络·华为
曼巴UE56 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
captain3766 天前
HTTP(2)
java·网络·http·java-ee
开开心心就好6 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
比兔代理6 天前
正向代理与反向代理技术辨析,为什么代理 IP 属于正向代理
服务器·网络·http·ip
鹿鸣天涯7 天前
护网专项工作 | 勒索病毒防护指南
网络·计算机网络·安全