一个http请求的前世今生

一个HTTP请求的“前世今生”可以被形象地描述为从发起请求到接收响应的整个生命周期。以下是这个过程的详细步骤:

用户输入URL:
用户在浏览器地址栏输入一个网址(URL),这通常是一个网站的域名。

DNS解析:
浏览器首先需要将域名解析为IP地址。这通过DNS(域名系统)查询完成。如果本地缓存中已有这个IP地址,则直接使用,否则会发起一个DNS查询请求。

建立TCP连接(如果是HTTP/1.1或更低版本):
浏览器通过TCP(传输控制协议)与服务器建立一个连接。这涉及到一个称为“三次握手”的过程,确保连接的可靠性。

发送HTTP请求:
一旦TCP连接建立,浏览器构建一个HTTP请求消息,并将其发送到服务器。这个请求包括请求行(如GET /index.html HTTP/1.1),请求头(包含额外信息,如用户代理、接受语言等),以及可选的请求体(如POST请求中的数据)。

服务器处理请求:
服务器接收到HTTP请求后,会根据请求的类型(如GET、POST、PUT等)和资源路径来处理请求。服务器可能需要查询数据库、执行应用程序逻辑或调用外部服务。

服务器响应:
服务器处理完请求后,会构建一个HTTP响应消息,包括状态行(如HTTP/1.1 200 OK),响应头(如内容类型、内容长度等),以及响应体(请求的资源内容,如HTML页面)。TCP连接关闭(如果是HTTP/1.1且Connection头为close): HTTP/1.1默认支持持久连接,但如果没有设置或设置为close,则在发送完响应后,TCP连接会被关闭。如果是持久连接,则可以复用此连接发送后续请求。

浏览器渲染页面:
浏览器接收到响应后,会根据响应的内容类型来渲染页面。如果是HTML,则浏览器会解析HTML并构建DOM树,然后进行CSS样式的应用和JavaScript的执行。

资源加载:
如果页面中包含其他资源(如图片、CSS文件、JavaScript文件等),浏览器会发起额外的HTTP请求来获取这些资源。

页面交互:
用户与页面进行交互,可能会触发新的HTTP请求,如表单提交、AJAX调用等。

连接释放:
当页面加载完成,所有资源加载完毕,浏览器可能会关闭与服务器的TCP连接,释放资源。

用户离开页面:
用户关闭浏览器标签或导航到其他页面,这标志着一个HTTP请求生命周期的结束。

整个HTTP请求的生命周期是网络通信和Web技术的基础,涉及到网络协议、服务器处理逻辑、浏览器渲染等多个环节。

微观上是浏览器一个请求的全链路,宏观上是网络七层模型。了解宏观,深入微观#猿脑2.0

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值