输入URL页面上会发生什么?

1,040 阅读4分钟

步骤

  • DNS 解析: 将域名解析成 IP 地址
  • TCP 连接:TCP 三次握手
  • 发送 HTTP 请求
  • 浏览器向服务器发送HTTP请求
  • 浏览器解析渲染页面
  • 断开连接: TCP 四次挥手

URL是什么?

  • scheme 表示协议名,比如http, https, file等等。后面必须和://连在一起。
  • user:passwd@ 表示登录主机时的用户信息,不过很不安全,不推荐使用,也不常用。
  • host:port表示主机名和端口。
  • path表示请求路径,标记资源所在位置。
  • query表示查询参数,为key=val这种形式,多个键值对之间用&隔开。
  • fragment表示 URI 所定位的资源内的一个锚点,浏览器可以根据这个锚点跳转到对应的位置。

域名解析(DNS)

IP地址

  • IP 地址是指互联网协议地址,是 IP Address 的缩写。
  • IP 地址是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
  • IP 地址是一个 32 位的二进制数,比如 127.0.0.1 为本机 IP。
  • 用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP 地址访问。

域名解析 会依次通过该顺序进行

  • 浏览器缓存: 检查浏览器自身DNS缓存,如果之前登陆过这个网站,那么DNS缓存中就会存有该链接对应的IP地址
  • 操作系统缓存 : 如果果浏览器缓存中没有命中,浏览器会检查操作系统缓存中有没有对应的已解析的结果
  • 路由器缓存 : 路由器也有 DNS 缓存
  • ISP 的 DNS 服务器 :ISP 是互联网服务提供商(Internet Service Provider)的简称,ISP 有专门的 DNS 服务器应对 DNS 查询请求。
  • 根服务器 : ISP 的 DNS 服务器还找不到的话,它就会向根服务器发出请求,全球只有13台根域服务器,都在海外(美国)等地 , 进行递归查询(DNS 服务器先问根域名服务器.com 域名服务器的 IP 地址,然后再问.baidu 域名服务器,依次类推)

TCP三次握手

确认双方发送和接收的能力以及是否符合建立连接的标准,进行可靠的传输

  • 第一次握手:客户端发送网络包(SYN握手信号),请求服务端建立数据连接。
  • 第二次握手:服务端发包 , 客户端接收带标记的包(SYN-ACK),进行响应答复,我这边没问题 可以建立连接(ACK+SYN)
  • 第三次握手:客户端再次发包(ACK),服务端收到了,确认双方发送接收能力正常,建立连接

发送HTTP请求

请求成功后, 服务端处理请求,返回相应的资源

  • 请求方法包含 8 种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。
  • URL 即请求地址,由 <协议>://<主机>:<端口>/<路径>?<参数> 组成
  • 协议版本即 http 版本号

解析资源,渲染页面

  • 解析HTML生成DOM树
  • 解析CSS生成规则树
  • DOM树+CSS规则树生成渲染树(Render Tree)
  • 布局render树(Layout/reflow),负责各元素尺寸、位置的计算
  • 绘制render树(paint),绘制页面像素信息
  • 浏览器会将各层的信息发送给GPU,GPU会将各层合成(composite),显示在屏幕上

TCP四次挥手

  • 第一次挥手:客户端向服务端发FIN包请求断开连接 , 并停止发送数据
  • 第二次挥手:服务端收(断开连接请求,发出确认报文(ACK),但TCP是双向连接的,所以服务端仍然可以给客户端发数据
  • 第三次挥手:服务器将最后的数据发送完毕后,就向客户端发送连接释放(关闭连接FIN+ACK)报文
  • 第四次挥手:客户端收到服务器的连接释放(关闭连接)报文后发出确认报文(ACK)
  • 等待2MSL(最大报文生存时间 常用的有3种,30s,1分,2分(规范))无回复 关闭连接
    • 等待2MSL的意义: (MSL是报文最大生存时间)
    • 保证TCP协议的全双工连接能够可靠关闭
    • 保证关闭前的最后一个ACK报文能够到达
    • 保证这次连接的重复数据段从网络中消失

over 个人笔记收录 >v<