当用户在浏览器中输入URL地址后,会发生一下几个步骤:
- 本地缓存查询:当浏览器收到传过来的 URL 后,会在本地缓存中进行查询,如果本地中有缓存资源,就直接使用本地缓存中的资源,如果没有就发起网络请求去服务器获取资源;
- DNS解析:浏览器首先会通过域名解析系统(DNS)将用户输入的域名转换成对应的IP 地址,因为浏览器只能通过IP 地址跟服务器进行通信,不能直接通过域名进行通信。
- 建立TCP连接:浏览器解析出IP地址后,它会跟目标服务器建立TCP 连接,通常使用三次握手来确保连接的可靠性;
- 发送HTTP请求:连接建立后,浏览器会向服务器发送HTTP请求,请求网页资源,请求报文分为请求行,请求头和请求体;
- 服务器处理请求:服务器接收到请求后,会处理并生成HTTP响应,把服务端数据响应给浏览器,响应内容包括状态码,响应头和响应体;
- 浏览器渲染页面:浏览器接收到响应数据后,会解析HTML,CSS 和 JS 代码,构建DOM树,CSS 规则树,并最终渲染出用户可以看到的网页;
- 关闭连接:在数据传输完成后,浏览器和服务器会经历四次挥手,确保双方都已完成数据的发送和接收,然后关闭 TCP 连接;