浏览器输入 URL 到显示页面都发生了什么

DNS 域名解析

你输入的网址并不是百度真实的地址,互联网中每一台机器都有唯一标识的 ip 地址。网址和 ip 地址的转换,就是 DNS 解析

  • DNS 服务器:
    • 根 DNS 服务器:返回顶级 DNS 服务器 ip 地址,比如(.com、.cn、.net....)
    • 顶级 DNS 服务器:返回权威 DNS 服务器 ip 地址
    • 权威 DNS 服务器:返回相应主机 ip 地址
  • DNS 服务器查找过程:客户端->浏览器缓存->本地 hosts 文件->本地 DNS 解析器缓存->本地 DNS 服务器->客户端->.....
    • 本地 DNS 服务器找到:在客户端浏览器输入 url 网址后,在递归查找找到 ip 地址,任何一个步骤找到都会结束查找过程
    • 本地 DNS 服务器找不到:根据本地 DNS 服务器设置的转发器进行查询,迭代查找。

建立 TCP 连接

  • 首先判断是否是 https,若协议是 https 则作加密处理:HTTPS=HTTP+SSL/TLS 加密+认证+完整性保护
  • 三次握手建立 TCP 连接:ACK(此标志表示应答域有效)、SYN(在连接建立时用来同步序号)、FIN(用来释放一个连接)

    • 第一次握手:就相当于客户端拿着 SYN=1,seq=x 去找服务端;
    • 第二次握手:服务器收到后,就会拿着 SYN=1,ACK=1,seq=y,ack=x+1
    • 第三次握手:客户端收到服务器传过来的暗号后,就会拿着 ACK=1,seq=x+1,ack=y+1

发送 HTTP 请求

  • 请求的方式:get 或者 post
    • get 和 post 区别:
      • 语义:get 获取,post 传输。
      • 安全:get 不安全,post 安全。
      • 长度:get 限制长度(4k),post 理论上不限制的(2M)。
      • 传输数据:get 通过地址栏,post 通过 send 和设置请求头。
      • 缓存:get 有缓存,post 没有缓存
  • 请求头:报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息
  • 请求体:传递的请求参数

服务器处理并返回 HTTP 报文

  • HTTP 状态码
    • 1xx:指示信息–表示请求已接收,继续处理。
    • 2xx:成功–表示请求已被成功接收、理解、接受。
      • 200:成功
    • 3xx:重定向–要完成请求必须进行更进一步的操作。
      • 301 被请求的资源已永久移动到新位置
      • 304:没有修改,缓冲中取
    • 4xx:客户端错误–请求有语法错误或请求无法实现。
      • 403 服务器已经理解请求,但是拒绝执行它。
      • 404 没有找到
    • 5xx:服务器端错误–服务器未能实现合法的请求
  • 响应头:多个属性组成
  • 响应体:这个请求服务器返回回来的数据

浏览器解析渲染页面

  • 浏览器解析 HTML,构建 DOM 树
  • 浏览器解析 css,构建 CSS Rule Tree 规则树
  • 解析完成后,浏览器引擎根据 DOM 树和 CSS 规则构造 Render Tree(不包括 Header、display:none)
  • 根据 Render Tree 布局 layout:计算每个节点在屏幕上的位置
  • 绘制页面

关闭 TCP 连接

  • 四次挥手的整个过程

    • 第一次挥手:客户端携带 FIN=1,seq=u 来找服务器;
    • 第二次挥手:服务器带着 ACK=1,seq=v,ack=u+1 返回给客户端,
    • 第三次挥手:服务器带着 FIN=1,seq=w,ack=u+1 返回给客户端,
    • 第四次挥手:客户端携带 ACK=1,seq=u+1,ack=w+1 给服务器;
  • TCP 连接和 TCP 断开次数不同的原因是:ACK、FIN 不会同时发送
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浏览器输入URL显示页面的过程大致可以分为以下几个步骤: 1. DNS解析:浏览器首先会解析URL中的域名部分,将其转换为对应的IP地址。它会先检查浏览器缓存中是否存在该域名的解析结果,如果没有,就会向本地操作系统或者网络中的DNS服务器发送查询请求,获取对应的IP地址。 2. 建立TCP连接:一旦获取到目标服务器的IP地址,浏览器会通过TCP/IP协议与服务器建立连接。这个过程中,浏览器会与服务器进行三次握手,确保双方能够正常通信。 3. 发送HTTP请求:建立TCP连接后,浏览器会发送HTTP请求给服务器。请求中包含了请求行(包括请求方法、URL路径和HTTP协议版本)、请求头(包含一些附加信息,如User-Agent、Cookie等)以及请求体(一般用于POST请求,传递数据)。 4. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理。处理过程可能包括查询数据库、读取文件等一系列操作,最终生成需要返回给浏览器的数据。 5. 接收响应并渲染页面服务器处理完请求后,会将生成的响应数据封装成HTTP响应,并发送给浏览器浏览器接收到响应后,会根据响应头中的信息判断响应的内容类型,然后对内容进行解析和渲染。对于HTML页面浏览器会解析HTML结构、加载CSS和JavaScript文件,并根据这些文件渲染出最终的页面。 6. 关闭TCP连接:页面渲染完毕后,浏览器会关闭与服务器的TCP连接。如果页面中存在其他资源(如图片、样式表、脚本等),浏览器会继续发送相应的HTTP请求获取这些资源,并进行相应的渲染。 这就是浏览器输入URL显示页面的基本过程。其中涉及到的具体细节和技术可以更加深入和复杂,但以上步骤概括了整个过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值