从URL输入到页面展现发生了什么?

1. 域名解析(DNS):将域名解析成 IP 地址
  • DNS 是一个网络服务器,我们的域名解析简单来说就是在 DNS 上记录一条信息记录
  • DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务
2. TCP 连接:TCP 三次握手
  • 在客户端发送数据之前会发起 TCP 三次握手用以同步客户端和服务端的序列号和确认号,并交换 TCP 窗口大小信息
  • TCP 三次握手的过程如下:
    • 浏览器告诉服务器,我要发送请求了
    • 服务器告诉浏览器,我准备接受了,你赶紧发送吧
    • 浏览器告诉服务器,我马上就发了,准备接受吧
  • 为啥需要三次握手?
    • 为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误


3. 发送 HTTP 请求

请求报文由请求行(request line)、请求头(header)、请求体组成

  • 请求行:请求方法、请求地址、http状态码
  • 请求头:Referer、User-Agent
  • 请求体:请求数据 name=tom&password=1234&realName=tomson
4. 服务器处理请求并返回 HTTP 报文
  • 响应报文由响应行(request line)、响应头部(header)、响应主体三个部分组成
5. 浏览器解析渲染页面
  • 根据 HTML 解析出 DOM 树
  • 根据 CSS 解析生成 CSS 规则树
  • 结合 DOM 树和 CSS 规则树,生成渲染树
  • 根据渲染树计算每一个节点的信息
  • 根据计算好的信息绘制页面
6. 断开连接:TCP 四次挥手
  • 浏览器告诉服务器,我请求报文发送完了,你准备关闭吧
  • 服务器告诉浏览器,我请求报文接受完了,我准备关闭了,你也准备吧
  • 服务器告诉浏览器,我响应报文发送完了,你准备关闭吧
  • 浏览器告诉服务器,我响应报文接受完了,我准备关闭了,你也准备吧

你可能感兴趣的:(从URL输入到页面展现发生了什么?)