CN——HTTP 工作流程

前提:HTTP 是应用层协议,下层依靠 TCP 传输层,IP 网络层。

  • HTTP/1.0:非持续连接,每个对象新建一次 TCP 连接

  • HTTP/1.1:持续连接(默认开启) ,分两种:非流水线、流水线

  • TCP 本身:三次握手建立,慢开始、拥塞避免、快重传、快恢复拥塞控制。

完整步骤

  1. 用户操作:浏览器点击 www.baidu.com 但浏览器只知道域名,并不知道服务器 IP,第一步做DNS 域名解析。

(1)DNS 域名解析(应用层,UDP)

浏览器缓存 → 操作系统 hosts 文件 → 本地 DNS 服务器(递归查询)→ 根 DNS → 顶级域 DNS (.com) → 权威 DNS 服务器,最终拿到百度服务器 IP 地址,例如:180.101.49.11。(以迭代查询为例)

DNS 默认 UDP,超过 512 字节改用 TCP。解析完成,得到目标 IP。

(2)建立 TCP 连接(传输层,三次握手)

浏览器客户端(随机端口,比如 5200) ↔ 服务器 80 端口

TCP 连接建立阶段就已经启动拥塞控制:初始拥塞窗口 cwnd=1 MSS,慢开始开始。

(3)http协议

|------------------|--------------|-----------------------|
| 版本 | 连接类型 | 特点 |
| HTTP/1.0 | 非持续连接 | 每对象新建 TCP,传完就断 |
| HTTP/1.1 持续‑非流水线 | 持久 TCP,请求排队 | 收到完整响应才发下一个请求 |
| HTTP/1.1 持续‑流水线 | 持久 TCP,连续发请求 | 不用等响应,批量发请求;HTTP 队头阻塞 |

HTTP/1.0 【非持续连接】

特点:每获取一个网页对象,就要新建一套 TCP 连接,传输完立刻断开 TCP 网页举例:网页包含 1 个 HTML 主页 + 2 张图片(一共 3 个对象)

流程:

  1. TCP 三次握手建立连接

  2. 客户端发送 HTTP 请求报文 GET /index.html HTTP/1.0

  3. 服务器返回 HTTP 响应,把 HTML 页面传回

  4. TCP 四次挥手断开本次连接

现在要拿第一张图片:重新再来一遍三次握手 → 请求图片 → 响应 → 断开 第二张图片:再次三次握手 → 请求图片 → 响应 → 断开

缺点:每个对象都要付出三次握手 RTT 开销;大量对象时延爆炸。

HTTP/1.1 【持续连接,默认开启 Connection: keep‑alive】

同一个 TCP 连接,传输多个对象,传输完一段时间空闲才断开,不用传一个断一个。 持续连接分两种模式:非流水线、流水线

模式 A:持续连接 ------ 非流水线(HTTP/1.1 默认早期模式)

规则:客户端必须收到上一个对象完整响应之后,才发送下一个请求 同一个 TCP 连接,HTML + 两张图片:

  1. TCP 三次握手建立连接

  2. 客户端:GET html → 等待完整 html 响应回来

  3. 收到 html 全部数据后,才发 GET pic1 → 等待 pic1 完整响应

  4. 收到 pic1 全部数据后,才发 GET pic2 → 等待 pic2 完整响应

  5. 全部对象传输完毕,空闲超时后 TCP 断开。

请求必须排队,不能并发发请求。

模式 B:持续连接 ------ 流水线(pipelining)HTTP/1.1

规则:客户端可以连续发送多个请求,不用等前一个确认响应回来,请求一股脑丢出去;服务器按请求顺序依次返回响应。

  1. TCP 三次握手建立连接

  2. 客户端连续发送:GET html;GET pic1;GET pic2 (连续发出去,不等回复)

  3. 服务器按顺序返回 html → pic1 → pic2

  4. 全部接收完毕,空闲超时断开 TCP。

(4)HTTP 事务结束后断开 TCP 连接

HTTP/1.1 持续连接不会传输完立刻断开;一段时间没有新请求,服务器主动关闭 TCP(四次挥手)。 如果报文头部写 Connection: close,则传输完立刻断开,退化成类似 1.0 行为。

相关推荐
略懂而已16 小时前
安装SSL后网站速度变慢?
网络·网络协议·ssl
云上工程笔记17 小时前
RDMA / IB 高速互联 GPU 云对比:多机训练网络性能与价格
网络·gpu算力·gpu
codigger20 小时前
负载均衡到底在干嘛?7 个场景给你说明白
网络·架构·负载均衡
Thanks_ks21 小时前
HTTPS:浏览器地址栏那把锁的工作原理
http·网络安全·https·tls·加密算法·数字证书·中间人攻击
杨凯凡1 天前
Spring Boot 大文件下载如何实现断点续传?HTTP Range、206 与 416 实战
spring boot·后端·http
吴建旭 智宅焕1 天前
智能家居全国交付中执行端能力跃迁的架构设计:从标准装调到交付专家的系统化路径
网络·网络协议·智能家居
Eyfcom1 天前
〖全球化架构 05〗跨国网络专线优化:QUIC 协议与 SD-WAN 在跨境传输中的实战
网络·架构·跨境物流快递系统·全球化架构
Dream Cosmos1 天前
传输层协议之UDP
网络·网络协议·udp
梦到啥说啥2 天前
Linux网络编程:UDP网络协议
linux·网络协议·udp
鸿蒙开发爱好者2 天前
下班后做的小工具和小游戏,我把它们整理成了 WyanHub
网络·人工智能·职场和发展·个人开发