在浏览器中输入URL后发生的全部过程。(一次完整的http请求过程)

整体流程:

  1. DNS域名解析

  2. 建立TCP连接

  3. 发送HTTP请求

  4. 服务器处理请求

  5. 返回响应结果

  6. 关闭TCP连接

  7. 浏览器解析HTML

  8. 浏览器布局渲染

详细:

  1. DNS域名解析

    在浏览器输入网址,其实就是要向服务器请求我们想要的页面内容,所以浏览器首先要确认的是域名所对应的服务器在哪里。

    将域名解析成对应的服务器IP地址这项工作,是由DNS服务器来完成的。

    客户端收到域名地址后,首先去找本地的hosts文件,检查在该文件中是否有相应的域名、IP对应关系,如果有,则向其IP地址发送请求,如果没有,再去找DNS服务器。

  2. 建立TCP连接

    三次握手:请求连接(SYN数据包),确认信息(SYN/ACK数据包),握手结束(ACK数据包)

  3. 发起http请求

    与服务器建立了连接后,就可以向服务器发起请求了。

  4. 服务器处理请求

    服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求。

    web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端。

  5. 返回响应结果

    在http里,有请求就会有响应,哪怕是错误信息。

    在响应结果中都会有个一个http状态码,如200、301、404、500等。通过这个状态码可以知道服务器端的处理是否正常,并能了解具体的错误。

  6. 关闭TCP连接

    为了避免服务器与客户端双方的资源占用和损耗,当双方没有请求或响应传递时,任意一方都可以发起关闭请求。与创建TCP连接的3次握手类似,关闭TCP连接,需要4次握手。

  7. 浏览器解析HTML

    浏览器需要加载解析的不仅仅是HTML,还包括CSS、JS。以及还要加载图片、视频等其他媒体资源。

    浏览器通过解析HTML,生成DOM树,解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。

    渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

  8. 浏览器布局渲染

    根据渲染树布局,计算CSS样式,即每个节点在页面中的大小和位置等几何信息。

    HTML默认是流式布局的,CSS和js会打破这种布局,改变DOM的外观样式以及大小和位置。

参考:

  https://segmentfault.com/a/1190000012092552

  https://blog.csdn.net/qq_21993785/article/details/81188253

在浏览器中输入URL后发生的全部过程。(一次完整的http请求过程)

上一篇:HTTP协议


下一篇:PHP ssh链接sftp上传下载