说说地址栏输入 URL 敲下回车后发生了什么?

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: 说说地址栏输入 URL 敲下回车后发生了什么?

🚀 作者简介:程序员小豪,全栈工程师,热爱编程,曾就职于蔚来,现就职于某互联网大厂,技术栈:Vue、React、Python、Java

🎈 本文收录于小豪的前端系列专栏,后续还会更新前端入门以及前端面试的一些相关文章,手把手带你从零学习前端到面试找工作,并如果有想进入前端领域工作的同学,这个前端专栏会对你有所帮助,欢迎关注起来呀

🌼 本人也会持续的去关注AIGC以及人工智能领域的一些动向并总结到博客中,大家感兴趣的可以关注一下我的人工智能专栏

🌊 云原生的入门学习系列,大家有兴趣的可以看一看

目录

一、简单分析


简单的分析,从输入 URL到回车后发生的行为如下:

  • URL解析
  • DNS 查询
  • TCP 连接
  • HTTP 请求
  • 响应请求
  • 页面渲染

二、详细分析


URL解析

首先判断你输入的是一个合法的URL 还是一个待搜索的关键词,并且根据你输入的内容进行对应操作

URL的解析第过程中的第一步,一个url的结构解析如下:

## DNS查询

基本步骤

整个查询过程如下图所示:

1. 浏览器缓存

浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。

2. 操作系统缓存

操作系统也有自己的 DNS缓存,但在这之前,会向检查域名是否存在本地的 Hosts 文 件里,没有则向 DNS 服务器发送查询请求。

3. 路由器缓存

路由器也有自己的缓存。

4. ISP DNS 缓存

ISP DNS 就是在客户端电脑上设置的首选 DNS 服务器,它们在大多数情况下都会有缓存。

5. 根域名服务器查询

在前面所有步骤没有缓存的情况下,本地 DNS 服务器会将请求转发到互联网上的根域,下面这个图很好的诠释了整个流程:

需要注意的点

  • 递归方式:一路查下去中间不返回,得到最终结果才返回信息(浏览器到本地DNS服务器的过程)
  • 迭代方式,就是本地DNS服务器到根域名服务器查询的方式。
  • 什么是 DNS 劫持
  • 前端 dns-prefetch 优化

TCP连接

在之前文章中,了解到tcp是一种面向有连接的传输层协议

在确定目标服务器服务器的IP地址后,则经历三次握手建立TCP连接,流程如下:

发送 http 请求

当建立tcp连接之后,就可以在这基础上进行通信,浏览器发送 http 请求到目标服务器

请求的内容包括:

  • 请求行
  • 请求头
  • 请求主体

响应请求

当服务器接收到浏览器的请求之后,就会进行逻辑操作,处理完成之后返回一个HTTP响应消息,包括:

  • 状态行
  • 响应头
  • 响应正文

在服务器响应之后,由于现在http默认开始长连接keep-alive,当页面关闭之后,tcp链接则会经过四次挥手完成断开

页面渲染

当浏览器接收到服务器响应的资源后,首先会对资源进行解析:

  • 查看响应头的信息,根据不同的指示做对应处理,比如重定向,存储cookie,解压gzip,缓存资源等等
  • 查看响应头的 Content-Type的值,根据不同的资源类型采用不同的解析方式

关于页面的渲染过程如下:

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

相关文章
|
2月前
|
缓存 负载均衡 网络协议
在浏览器地址栏中输入URL后发生了什么
这是一个关于网页加载过程的概述:首先,浏览器查询IP地址,通过DNS解析域名;接着,建立TCP连接,发起HTTP请求;服务器处理请求并返回HTTP响应;最后,浏览器解析和渲染网页内容。过程中涉及DNS缓存、TCP三次握手、HTTP请求与响应、HTML解析、CSS和JS加载,以及渲染树的构建。为了优化网站性能,可以减少DNS查询、合并文件、压缩资源、提前加载CSS和延迟加载JS。
|
11月前
|
域名解析 JavaScript 前端开发
从浏览器地址栏输入url到显示页面的步骤?
1.浏览器根据请求的 URL 交给 DNS 进行域名解析,找到真实 IP 地址,向服务器发起请求 2.服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、CSS、JS、images等); 3.浏览器对加载到的资源(HTML、CSS、JS、images等)进行语法解析,建立相应的内部数据结构(如HTML的DOM); 4.载入解析到的资源文件,渲染页面,完成。
165 0
|
域名解析 缓存 网络协议
计算机网络面试专题:URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程
计算机网络面试专题:URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程
101 1
|
11月前
|
缓存 JavaScript 前端开发
【从浏览器地址栏输入url到显示页面的步骤?】
【从浏览器地址栏输入url到显示页面的步骤?】
|
11月前
|
缓存 JavaScript 前端开发
从浏览器地址栏输入url到显示页面的过程
从浏览器地址栏输入url到显示页面的过程
233 0
|
11月前
|
域名解析 缓存 JavaScript
从浏览器地址栏输入url到显示页面的步骤?
从浏览器地址栏输入url到显示页面的步骤?
105 0
|
缓存 编解码 自然语言处理
简述从浏览器地址栏输入url到显示页面的步骤?
简述从浏览器地址栏输入url到显示页面的步骤?
|
消息中间件 缓存 负载均衡
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?键盘到操作系统、操作系统到浏览器、浏览器到服务器、服务器返回数据页面渲染……
157 0
当输入URL、敲下回车、最后浏览器页面显示,这里面有什么故事?
|
网络协议 测试技术
软件测试面试题:在地址栏输入一个URL地址,会经历哪些环节?
软件测试面试题:在地址栏输入一个URL地址,会经历哪些环节?
67 0
|
缓存 自然语言处理 JavaScript
面试详解:在浏览器输入URL回车之后发生了什么?(超详细版)
这篇文章专治面试中:"在浏览器输入URL回车之后发生了什么?"、"浏览器输入URL发送的一系列操作!"等面试问题。
276 0