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发送轮次
相关推荐
Discipline~Hai1 小时前
Linux网络编程03-HTTP协议
linux·运维·服务器·网络·网络协议·http·linux网络编程
Shadow(⊙o⊙)1 小时前
数据链路层ARP协议、NAT路由技术、代理服务器、内网穿透、内网打洞、交换机+集线器
网络·网络协议·tcp/ip
青瓦梦滋2 小时前
Linux高级IO
linux·运维·服务器·网络·网络协议·tcp/ip
啊阿狸不会拉杆3 小时前
《计算机网络-自顶向下方法》5.2 路由选择算法 读书笔记
计算机网络·算法·路由
xieliyu.3 小时前
HTTPS 加密流程深度解析|从 HTTP 痛点到 TLS 握手全过程
网络·笔记·网络协议·计算机网络·http·https
我爱cope3 小时前
【计算机网络 | 传输层5:TCP 如何实现可靠传输?滑动窗口、累计确认与重传机制】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
啊阿狸不会拉杆3 小时前
《计算机网络-自顶向下方法》5.5 SDN控制平面 读书笔记
计算机网络·平面
测试猿实操笔记11 小时前
DNS 通俗讲解:域名 ↔ IP 翻译
网络·网络协议·tcp/ip
liyuanchao_blog12 小时前
OVN/OVS场景下虚拟机新网卡通过 DHCP 获取 IP 地址的完整过程
网络·网络协议·tcp/ip·云计算