从输入 URL 到页面展示到底发生了什么

从输入 URL 到页面展示到底发生了什么呢?

1.在浏览器输入一个域名回车

2.首先会先检查浏览器缓存里是否有缓存资源,如果缓存中有,会直接在浏览器上显示页面内容,如果没有,在发送http请求之前,浏览器会向DNS服务器发送一个查询请求;

3.DNS服务器会将请求通过域名解析解析为IP,如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地Host文件->路由器缓存->DNS服务器->根DNS服务器的顺序查询域名对应IP,直到找到为止

4.为了保证服务的可靠性,浏览器与服务器建立TCP三次握手

5.握手成功之后,浏览器会构建请求行、请求头等信息,并把它和域名相关的cookie等数据附加到请求头中,向服务器构建请求信息;如果是HTTPS的话,还涉及到HTTPS的加解密流程。

6.服务器接收到请求信息后,根据请求生成响应数据。浏览器与服务器IP会四次挥手断开TCP连接

7.最后浏览器解析响应并渲染页面

  1. 浏览器解析响应头。若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一部渲染流程。
  2. 浏览器解析HTML文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。

相关推荐

  1. 输入URL页面发生什么

    2024-07-22 22:36:04       36 阅读
  2. 输入URL页面加载完中间发生什么

    2024-07-22 22:36:04       20 阅读
  3. 在浏览器中输入URL之后发生什么

    2024-07-22 22:36:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 22:36:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 22:36:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 22:36:04       45 阅读
  4. Python语言-面向对象

    2024-07-22 22:36:04       55 阅读

热门阅读

  1. c# 一个自定义日志类

    2024-07-22 22:36:04       11 阅读
  2. Android 11 Unable to start/bind service

    2024-07-22 22:36:04       15 阅读
  3. WEB开发-HTTP认证

    2024-07-22 22:36:04       13 阅读
  4. ubuntu PlayOnLinux

    2024-07-22 22:36:04       15 阅读
  5. 设计模式实战:库存管理系统的设计与实现

    2024-07-22 22:36:04       13 阅读
  6. 深入理解Python中的闭包和装饰器

    2024-07-22 22:36:04       15 阅读
  7. C++ STL nth_element 用法

    2024-07-22 22:36:04       13 阅读
  8. 低空经济“芯”挑战

    2024-07-22 22:36:04       16 阅读
  9. Python应用—给暑假熊孩子出算术题

    2024-07-22 22:36:04       17 阅读