游览器输入URL并Enter时都发生了什么 面试完美回答

news2024/11/27 9:36:05

文章目录

      • 前言
      • URL解析
      • DNS解析
        • **浏览器缓存**
        • **操作系统缓存**:
        • **路由器缓存**:
        • ISP(Internet service provider)缓存
        • DNS递归解析
        • IP地址的获取
        • 缓存结果
      • 建立TCP连接
      • 发送HTTP请求
      • 服务器响应
      • TCP链接断开
      • 渲染页面
        • 解析一 HTML解析过程
        • 解析二 生成CSS
        • 解析三 构建Render Tree
        • 解析四 布局(Layout)与绘制(Print)

前言

浏览器会经历多个步骤才能找到并加载该网站。以下是这个过程的简要说明: 面试会考

URL解析

根据URL解析出请求的协议以及请求的资源地址,如果协议或者主机名不合法,浏览器将会将输入的内容传递给搜索引擎检索;如果协议及主机名合法,浏览器会将URL中存在的非法字符进行转义

DNS解析

DNS浏览器首先需要将域名,转换为对应的IP地址。这个过程称为DNS(域名系统)解析。如果有缓存则查找缓存

浏览器缓存

浏览器首先检查其内部缓存。如果之前访问过该资源且缓存尚未过期,浏览器将直接使用缓存中的数据来快速显示页面。

操作系统缓存

如果浏览器缓存中没有找到相关记录,它会询问操作系统的DNS缓存。操作系统通常也会缓存最近查询的域名及其对应的IP地址。

路由器缓存

如果操作系统中也没有找到,DNS请求将发送到本地网络的路由器。许多路由器都具备DNS缓存功能,可以存储最近的DNS查询结果,以加速当地网络中的访问。

ISP(Internet service provider)缓存

如果以上都没有缓存记录,请求最终会发送到你的互联网服务提供商(ISP),它们通常会有更大范围的DNS缓存

DNS递归解析

如果所有本地缓存查找都失败,DNS查询就变成了一个递归查询过程,涉及到多个DNS服务器

  1. 根域名服务器 首先, 尔的DNS查询会被发送到根域名服务器 服务器是最高级别的DNS服务 负责重定向到负责管理顶级域(.com .net) 顶级域名服务器
  2. 顶级域名(TLD服务器) 服务器会告诉你的ISP的DNS服务器去查询哪个顶级域名服务器来找到.com域的信息 这个服务器掌握.com域名及其相应服务器的信息
  3. 权威域名服务器 一旦你的DNS查询到达了正确的顶级域名服务 会进一步定向到负example.com 权威务器 权威服务器有该域对应的具体IP地址
IP地址的获取

最终,权威域名服务器会提供wwwxample.com域名对应的IP地址(如图中的93.184.216.34),这个信息会被发送回用户的电脑存结果

缓存结果

IP地址被找到,它通常会被存储在浏览器、操作系统、路由器或ISP的DNS缓存中,以便未来的查询可以更快得到解析。

建立TCP连接

具体在这篇文章https://blog.csdn.net/weixin_63625059/article/details/142683822?spm=1001.2014.3001.5501

发送HTTP请求

HTTP(Hypertext Transfer Protocol,超文本传输协议)
它是建立在TCP连接之上的应用层协议。
一旦TCP连接建立,客户端(通常是Web浏览器)就可以通过这个连接发送一个HTTP请求到服务器

这个请求包含了方法(GET、POST等)、URL(统一资源标识符)和协议版本,以及可能包含的请求头和请求体

服务器响应

服务器接收到HTTP请求后,会处理这个请求并返回一个HTTP响应

响应通常包括一个状态码(如200表示成功,404表示未找到),响应头,以及任何响应内容(如请求的HTML文件)

TCP为HTTP提供了一个可靠的通道,确保数据正确 完整地从服务器传输到客户

TCP链接断开

https://blog.csdn.net/weixin_63625059/article/details/142683822?spm=1001.2014.3001.5501

渲染页面

请添加图片描述

解析一 HTML解析过程

因为默认情况下服务器会给浏览器返回index.html文件

所以解析HTML是所有步骤的开始解析HTML,会构建DOMTree

解析二 生成CSS

在解析的过程中,如果遇到CSS的link元素,那么会由浏览器负责下载对应的CSS文件

注意:下载CSS文件是不会影响DOM的解析的

浏览器下载完CSS文件后,就会对CSS文件进行解析,解析出对应的规则树
我们可以称之为CSSOM(CSS Obiect Model,CSS对象模型)

解析三 构建Render Tree

当有了DOMTree和CSSOMTree后,就可以两个结合来构建Render Tree

注意一:link元素不会堵塞DOM Tree的构造过程,但是会堵塞Render Tree的构造过程,这是因为Render Tree在构建时,需要对应的CSSOM Tree

解析四 布局(Layout)与绘制(Print)

第四步是在渲染树(RenderTree)上运行布局(Layout)以计算每个节点的几何体
染树会表示显示哪些节点以及其他样式,但是不表示每个节点的尺寸、位置等信息;口布局是确定呈现树中所有节点的宽度、高度和位置信息

第五步是将每个节点绘制(Paint)到屏幕上
在绘制阶段,浏览器将布局阶段计算的每个frame 转为屏幕

包括将元素的可见部分进行绘制,比如文本、颜色、边框、阴影、替换元素(比如img)
请添加图片描述

Match selectors:浏览器遍历CSSOM 选择器 DOM树中的元素匹面 这个过程决定了那些CSS规则应用于哪些DOM元素

Compute style:在选择器匹配后 浏览器计算每个元素的最终样式!这包括计算具体的样式值,处理继承的样式以及解析因层叠产生的任何冲突

Construct frames:这通常是指生成布局树,它是染树的一部分,仅包含要布局和绘制的元素。这一步骤涉及确定文档的结构层次和包含块

布局树和渲染树是有微小的差异,布局树是渲染树的子集,不包含染树中元素的颜色、 背景、 阴影等信息

文章到这里就结束了 如果对你有所帮助的话 就点个关注吧 会持续更新技术文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

带你快速了解后端API服务的搭建

前言:写这篇文章的初衷是想分享一下我学习搭建后端API的过程,希望能帮助到和我一样想快速写API接口并部署到服务器上的同学😜 第一步:创建阿里云服务器 1、首先注册一个阿里云账号🤗 2、出于学习成本考虑&#xff0…

Linux系统,docker容器内查看pikachu源代码

在Linux系统中,要查看Docker容器内的Pikachu的源代码,需要先确保Pikachu的Docker镜像已经运行在系统上。以下是步骤和示例代码: 1、查找Pikachu容器的ID或名称: docker ps -a 2、使用docker exec命令进入运行中的Pikachu容器&am…

Spring MVC的运行流程详解

Spring MVC作为一个广泛使用的框架,提供了灵活且强大的MVC架构支持。尤其在业务系统中,Spring MVC能够有效地处理大量并发请求,提供良好的用户体验。本文将详细讲解Spring MVC的运行流程,以电商交易系统为案例,帮助读者…

不再烦恼!四款AI工具助你轻松打造完美PPT

嘿,各位办公室的小伙伴们,今儿咱们来聊聊那些让咱们工作生活大变样的“智能小伙伴”。作为每天跟PPT打交道的办公室文员,我敢说,自从有了这些神器,我的工作效率简直坐上了火箭,嗖嗖地往上涨! 1…

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”,是因为它允许开发者根据项目的需求逐步引入和使用其功能,而不需要一次性使用整个框架。简单来说,Vue 提供了从简单到复杂的功能层次,可以灵活选择使用。 按需使用:Vue 的核心功能…

CSP-J Day 3 模拟赛补题报告

姓名:王胤皓,校区:和谐校区,考试时间: 2024 2024 2024 年 10 10 10 月 3 3 3 日 9 : 00 : 00 9:00:00 9:00:00~ 12 : 30 : 00 12:30:00 12:30:00,学号: S 07738 S07738 S07738 请关注作者的…

docker运行arm64架构的镜像、不同平台镜像构建

背景 Docker 允许开发者将应用及其依赖打包成一个轻量级、可移植的容器,实现“一次构建,到处运行”的目标。然而,不同的操作系统和硬件架构对容器镜像有不同的要求。例如,Linux 和 Windows 系统有不同的文件系统和系统调用&#…

银河麒麟桌面操作系统修改默认Shell为Bash

银河麒麟桌面操作系统修改默认Shell为Bash 💐The Begin💐点点关注,收藏不迷路💐 在银河麒麟桌面操作系统(ARM版)中,若要将默认Shell从Dash改为Bash,可执行以下步骤: 打开…

谈及医疗和教育真实需求是什么

医疗就是健康,物质基础身体棒; 教育就是心智,心理稳定智慧高。 提示:能让人内心充盈并不断提升自我能力的教育才是高品质的。 全文终结 需求量萎缩对品质端的改变-CSDN博客 与参考资料中的内容以及“贪嗔痴”的关联性进行详细扩…

【C++】vector类的模拟实现

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 🔥 所属专栏:C深入学习笔记 💫 欢迎来到我的学习笔记! 本篇文章参考博客:【C】…

HTML5+CSS+JavaScript剪子石头布游戏

HTML5CSSJavaScript剪子石头布游戏 用HTML5CSSJavaScript剪子石头布游戏实现剪子石头布游戏,游戏有成绩计数,人、机输赢情况,及平局情况。 ✂代表剪刀,▉代表石头,▓ 代表布,给出人机双方的出拳情况 游戏…

对于无人机行业技术、人才、实验环境共享,这事你怎么看?

对于无人机行业技术、人才、实验环境共享这一话题,我认为这是一个具有前瞻性和积极意义的趋势,对于推动无人机行业的健康发展具有重要意义。以下是我对此事的详细看法: 一、技术共享促进创新与发展 1. 加快技术创新:技术共享能够…

web前端面试中拍摄的真实js面试题(真图)

web前端面试中拍摄的真实js面试题(真图) WechatIMG258.jpeg WechatIMG406.jpeg WechatIMG407.jpeg WechatIMG922.jpeg WechatIMG1063.jpeg © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦!!…

散度旋度拉普拉斯算子速记

哈密顿运算符号想象成一个矢量(对x偏导,对y偏导,对z偏导) 1、旋度就是这个矢量做点乘 2、散度就是矢量做叉乘 3、拉普拉斯算子就是哈密顿算符点乘哈密顿算符

【自然语言处理】(1) --语言转换方法

文章目录 语言转换方法一、统计语言模型1. 词向量转换2. 统计模型问题 二、神经语言模型1. 词向量化2. 维度灾难3. 解决维度灾难4. embedding词嵌入5. Word2Vec技术5.1 连续词袋模型(CBOW)5.2 跳字模型(Skip-gram) 总结 语言转换方…

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

引言 解码器Transformer的规模不断壮大,轻松达到千亿级参数。同时由于该规模,基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。 为了简单,下文中以翻译的口吻记录,比…

平台数据分类与聚类实验报告

参考书籍:《数据流挖掘与在线学习算法》 李志杰 1.6.1 实验目的 本书内容以及课程实验主要涉及Java程序设计语言、数据挖掘工具Weka和数据流机器学习平台MOA,因此,需要安装、配置并熟悉实验环境。Java、Weka和MOA都是开源小软件&#xff0…

2024年10月2日历史上的今天大事件早读

1683年10月2日 清朝康熙帝统一台湾 1869年10月2日 印度民族解放运动领袖甘地诞辰 1890年10月2日 中共创始人之一李达诞生 1895年10月2日 天津中西学堂(天津大学前身)开学 1901年10月2日 郑士良等发起惠州起义 1909年10月2日 京张铁路正式通车 1920…

国外电商系统开发-运维系统功能清单开发

一、最终效果图 二、功能清单 功能 描述 自定义日志绘图 根据Nginx、Apache登录日志文件绘图,绘图数据包括:访问量走势,500错误,200正确百分比等 创建服务器 加入服务器 主机状态自动检查 加入主机到系统后,系统…

【STM32】TCP/IP通信协议(2)--LwIP内存管理

五、LWIP内存管理 1.什么是内存管理? (1)内存管理,是指软件运行时对计算机内存资源的分配的使用的技术,其主要目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源(就比如C语言当…