26考研 | 王道 | HTTP和TCP的数据传输过程(易错点)
HTTP和TCP的数据传输过程(易错点)

| 特性 | HTTP/1.0 | HTTP/1.1 (默认) |
|---|---|---|
| 连接模式 | 默认非持久连接。每个请求/响应对都需要建立和关闭一个独立的 TCP 连接。 | 默认持久连接。一个 TCP 连接可以处理多个请求。 |
| 性能影响 | 连接建立和关闭的“三次握手、四次挥手”开销大,严重影响性能,尤其是加载包含多个资源的网页时。 | 大幅减少延迟和开销。复用连接避免了反复建立连接的成本,是性能优化的基础。 |
| 明确关闭 | 如果需要保持连接,必须使用 Connection: keep-alive 头部。 |
如果需要关闭连接,必须使用 Connection: close 头部。 |
| 特性 | HTTP/1.0 | HTTP/1.1 |
|---|---|---|
| 默认连接方式 | 非持久连接。每个请求后连接关闭。 | 持久连接。连接默认保持打开以供重用。 |
| 流水线支持 | 不支持。必须收到上一个响应,才能发下一个请求。 | 在协议标准中支持流水线(RFC 2616定义)。允许在未收到响应时发送后续请求。 |
| 现实应用情况 | 无流水线。要模拟持久连接需用非标准头 Connection: keep-alive。 |
持久连接被广泛应用,但流水线基本被所有现代浏览器和服务器禁用。 |


疑惑点:1.1的流水线基本被禁用为啥可以一次性可以发送两个MSL?
关键在于:应用层协议(HTTP)的“请求/响应”模型 与 传输层协议(TCP)的“数据传输”机制是独立的两个层面。
- HTTP/1.1 持久连接(我们实际在用的模式):
- 模型:“请求-响应-再请求-再响应”的串行模式。客户端必须为每个资源(HTML、图片、CSS等)单独发送一个HTTP请求报文。只有收到当前资源的响应后,浏览器解析发现还需要新资源,才会发送下一个请求。
- 单位:以 “HTTP 消息” (一个完整的请求或响应报文)为单位进行交换。
- TCP 数据传输与拥塞控制:
- 模型:面向字节流的、分段的数据管道。一旦连接建立,发送方(如Web服务器)可以将需要发送的字节流切割成多个TCP报文段(如MSS大小),并(在拥塞窗口允许的情况下)连续发送出去。
- 单位:以 “TCP 报文段” 为单位进行传输。
- 关键机制:慢启动与拥塞窗口。拥塞窗口限制了发送方在收到一个确认之前可以发送的最大数据量(单位是字节或报文段)。这个窗口大小会动态变化。
奥这下看懂了,因为这个图片是3个MSL,我一次HTTP请求,就可以请求这个图片,算是一次HTTP请求和响应,但是数据有3个MSL,这就看TCP咋传了
就比如说我这个图片有100MSL,那2个MSL发完就是一次性发4个,8个,16个…..
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
评论











