大家好,这里是 前端航海日志。今天想跟大家聊聊在我们日常开发中,常常与之打交道但又经常忘记的东西——浏览器与服务器通信。
作为前端开发者,HTTP 请求几乎是我们每天都要面对的“老朋友”,但是它具体是怎么发起通信的,你真的了解吗?
今天,我就想带大家深入聊聊这个话题,看看浏览器是如何发起请求,到服务器如何回应,再到连接的断开与持久连接等内容,都会带大家过一遍。
希望通过这篇文章,能帮大家把这些常见的概念弄得更清楚,能让你更熟悉整个流程。让我们一起探讨这个看似简单,实则有很多“玄机”的过程吧!
HTTP协议与TCP连接
HTTP是应用层协议,以来TCP/IP协议实现数据传输。TCP提供可靠的连接的数据传输,而HTTP负责定义如何通过该连接请求和传输资源。HTTP本身是无状态的,通过TCP建立连接进行数据交换。
HTTP请求流程
HTTP请求包括两个主要阶段:浏览器向服务器发起请求 和 服务器返回相应。
浏览器发起请求
1.构建请求
浏览器构建HTTP请求,其中包括:
- 请求行:如
GET /index.html HTTP/1.1 - 请求头:包含浏览器信息,Cookie等
- 请求体:实际传输的信息(通常在GET请求中为空)
2.缓存检查
浏览器会首先查看是否已缓存请求的资源。如果缓存中存在,直接使用缓存数据,减少对服务器的请求。
3.DNS查询与端口准备
若缓存中没有资源,浏览器通过DNS查询获取目标服务器的IP地址。若未指定端口,HTTP默认使用80端口。
4.TCP连接限制
浏览器对每个域名最多建立6个TCP连接。若超出限制,后续请求排队等待。
5.建立TCP连接
获取IP地址后,浏览器通过TCP建立连接。
6.发送HTTP请求
连接建立后,浏览器发送请求信息(请求行,请求头,请求体)到服务器。
服务器处理请求
1.生成并返回相应
服务器根据请求生成相应,通常包括:
- 响应体:如HTTP/1.1 200 OK
- 响应头:包括缓存控制,Set-Cookie等
- 响应体:实际的数据内容,如HTML,CSS,JSON
2.常见的状态码
- 200 OK:请求成功,返回资源
- 404 NOT Found:未找到资源
- 500 Internal Server Error:服务器错误
3.断开连接与持久连接
通常,服务器在响应后会关闭 TCP 连接,但如果响应头中包含 Connection: Keep-Alive,连接会保持开放,允许后续请求复用相同连接,从而提升性能。
感谢大家的支持!如果这篇文章帮到你,别忘了点赞 ❤、收藏⭐,让我们在前端的航海路上继续扬帆起航!