【面试那些事儿】浏览器键入网址到网页显示,期间发生了什么

news2024/10/11 2:22:59

当用户在浏览器中键入网址并按下回车键后,直到最终显示出完整的网页内容,这一过程中经历了哪些步骤呢?

这是一道经典的面试题,我们来看看具体有哪些阶段。

1. 解析URL

  • 浏览器首先解析用户输入的URL,判断它的语法和协议类型(通常是HTTP或HTTPS)。
  • 如果URL无效或不符合规范,浏览器可能尝试将其作为搜索查询提交给默认的搜索引擎。

标准的URL组成: 

image.png

[图片来源网络]

2. DNS域名解析

  • 浏览器需要将URL中的域名(如www.server.com)转化为IP地址。
  • 首先检查本地DNS缓存,如果有缓存记录,则直接使用IP地址。
  • 若缓存中没有记录,则浏览器发起DNS查询,依次通过本地DNS服务器、根域名服务器、顶级域名服务器和权威域名服务器来解析域名,最终获取到目标服务器的IP地址
2.1 什么是DNS

比如我们打电话的时候,必须要知道对方的电话号码,但由于电话号码难以记忆,所以通常我们会将对方电话号 + 姓名保存在通讯录里。

所以,有一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器。

DNS中的域名是有层级关系的,如wwww.server.com, 实际上域名后面还有一个点,如www.server.com., 最后一个点代表根域名,域名的层级关系类似一个树状结构:

  • 根DNS服务器(.)
  • 定级域DNS服务器(.com)
  • 权威DNS服务器(server.com)

image.png

[图片来源网络]

2.2 DNS解析域名过程示例

image.png

[图片来源网络]

3. 建立TCP连接

  • 在获取到IP地址后,浏览器利用TCP协议与服务器建立连接,通常涉及到TCP的“三次握手”过程,以确保连接的可靠性。
  • 对于HTTPS(安全超文本传输协议),此阶段还包括TLS/SSL握手过程以加密通信通道。

4. 发送HTTP请求

  • 成功建立连接后,浏览器构造一个HTTP请求报文(如GET或POST请求),包含请求方法、URL、协议版本、头部字段(如User-Agent、Accept-Language等)以及可能有的请求体数据。
  • 浏览器将构建好的HTTP请求发送给服务器指定的端口(通常是80端口对于HTTP,或者443端口对于HTTPS)。

5. 服务器处理请求

  • 服务器接收到请求后,由Web服务器软件(如Apache、Nginx等)解析请求并交由后台的应用程序(如PHP、Java、Node.js等)处理。
  • 应用程序根据请求内容从数据库或文件系统中检索所需资源,并生成响应内容。

6. 服务器返回HTTP响应

  • Web服务器将生成的HTML文档、CSS样式表、JavaScript脚本、图片和其他资源封装成HTTP响应报文,其中包括状态码(如200 OK)、响应头部和响应正文。

7. 浏览器接收响应,并渲染页面

  • 浏览器接收HTTP响应,并开始解析响应正文(即HTML文档)。
  • 根据HTML文档结构创建DOM树,同时解析CSS样式信息生成CSSOM树,随后将两者合并形成渲染树(Render Tree)。
  • 渲染树构建完成后,浏览器进行布局(Layout)计算各个元素的位置,并绘制(Painting)页面内容。
  • 同时,浏览器还会执行JavaScript脚本,脚本可能会影响DOM结构、CSSOM树及页面渲染。

8. 异步资源加载

  • 页面渲染的同时,浏览器继续加载页面中引用的其他资源,如图片、字体、外部脚本和样式表等。
  • 当这些资源加载完毕后,浏览器更新页面以反映新资源的影响。

9. 交互与时间处理

  • 用户可以与页面进行交互,浏览器监听并处理用户的点击、滚动等事件,触发相应的JavaScript代码执行。

完成以上所有步骤后,网页内容才会完整地呈现在用户面前。这个过程涉及到了网络通信、操作系统、浏览器引擎等多个层面的技术协同工作。

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

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

相关文章

这本JCR一区期刊被On Hold,投稿需谨慎!

ENVIRONMENTAL SCIENCE AND POLLUTION RESEARCH 《环境科学与污染研究》 期刊官网:https://link.springer.com/journal/11356 【基础信息】 ISSN:0944-1344 eISSN:1614-7499 Index:SCIE IF(2022):5.8 出版社&am…

Codigger用户篇:安全、稳定、高效的运行环境(二)

在当今数字化时代,随着云计算和大数据技术的飞速发展,分布式操作系统已成为支撑各类应用高效运行的关键基础设施。我们推出的Codigger分布式操作系统,正是为了满足用户对安全、稳定、高效私人应用运行环境的需求而精心设计的。上一次&#xf…

警惕.360勒索病毒:如何预防.360勒索病毒攻击

导言: 在网络安全领域,勒索病毒是一种非常危险的恶意软件,它以其独特的加密方式和高昂的赎金要求,给个人和企业带来了严重的损失。.360勒索病毒便是其中之一,它属于BeijingCrypt勒索病毒家族,具有高度的隐…

下水游泳耳机怎么选?六招教你避开陷阱,选对不选贵!

游泳耳机是许多水上爱好者的首选,它不仅为我们在水中的锻炼提供了音乐的陪伴,还帮助我们隔绝外界的嘈杂,让我们更加专注于自己的水上世界。然而,面对市场上众多的游泳耳机产品,如何选择一款既适合自己又性价比高的产品…

PyCharm代码一键格式化

前言 每次写完代码,就看见很多警告,乍一看还以为我又写了什么bug,原来是提示,啊放心了。可是我可见不得这些东西,因为代码里都是红红的下划线,好像在圈圈点点。。。 代码格式化 于是利用PyCharm里的快捷…

分布式图床项目

一、图床架构分析 二、后台数据处理框架 秒传: 如果上传的文件已经在服务器中存在了,就不需要二次上传了,但是服务器会对这个文件的引用计数加一,这样服务器就知道这个文件是多个人持有的。先对上传的文件进行 md5 校验来判断服务器中已经存在相同的文件了(同样的文件拿到…

【动手学深度学习】9.6 编码器和解码器

正如我们在 9.5节中所讨论的, 机器翻译是序列转换模型的一个核心问题, 其输入和输出都是长度可变的序列。 为了处理这种类型的输入和输出, 我们可以设计一个包含两个主要组件的架构: 第一个组件是一个编码器(encoder&a…

AI 文字转语音工具以及它们的官网收集(值得收藏)

目前比较成熟的 AI 文字转语音工具以及它们的官网: 百度语音合成 (https://ai.baidu.com/tech/speech/tts): 百度语音合成是百度 AI 推出的语音合成服务,支持多种语言和音色,可以用于语音播报、智能客服、有声阅读等场景。 阿里云…

基于单片机的便携式瓦斯检测仪系统设计

**单片机设计介绍,基于单片机的便携式瓦斯检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的便携式瓦斯检测仪系统设计是一个针对煤矿等工业环境中瓦斯气体浓度检测的重要项目。以下是该设计…

GESP Python编程三级认证真题 2024年3月

Python 三级 2024 年 03 月 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( ) A. 小程序 B. 计时器 C. 操作系统…

Photoshop 2024 中文---专业图像处理软件的又一次飞跃

Photoshop 2024是一款功能强大的图像处理软件,广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具,包括画笔、铅笔、颜色替换、混合器画笔等,使用户能够轻松进行图片编辑、合成、校色、抠图等操作,实现各种视觉效果…

Spring后置处理器(PostProcessor)

文章目录 引言BeanFactoryPostProcessor常见用法创建自定义后置处理器注册后置处理器执行后置处理器 BeanPostProcessor常见用法创建自定义后置处理器注册后置处理器执行后置处理器 实际需求验证配置文件的正确性检验逻辑 引言 在Spring框架中,后置处理器为我们提供…

主流公链 - Monero

Monero: 加密货币的隐私标杆 1. 简介 Monero(XMR),世界语中货币的意思,是一种去中心化的加密货币,旨在提供隐私和匿名性。与比特币等公开区块链不同,Monero专注于隐私保护,使用户的交易记录和余…

24/03/28总结

抽象类: 将共性的方法抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。 而为什么不直接在子类中定义方法:项目的完成不是一个人,如果有时忘记写方…

JavaEE 初阶篇-深入了解多线程等待与多线程状态

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 线程等待 1.1 线程等待 - join() 方法 1.1.1 main 线程中等待多个线程 1.1.2 main 线程等待 t2 线程且t2 线程等待 t1 线程 1.1.3 其他线程阻塞等待 main 线程 1.…

解决 linux 服务器 java 命令不生效问题

在Linux系统中,当你安装Java并设置了JAVA_HOME环境变量后,你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件,它包含了系统的全局环境变量设置。 但是需要注意的是,source /e…

防水游泳耳机有哪些?四款口碑销量双丰收的尖货揭晓

游泳时享受音乐的快乐已成为许多人的追求。防水游泳耳机,作为这一追求的重要工具,不仅让我们在水中畅游时能够感受到音乐的魅力,同时也提升了游泳的乐趣。然而,面对市场上琳琅满目的产品,如何选择一款既防水又音质出色…

Java基础-子类与继承

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、继承的概念 二、Java 方法重写 三、Object类 方法 四、final关键字 final 变量 五、Java 多态 …

Oracle 19C RAC集群补丁升级

文章目录 一、补丁包概述二、OPatch检查和更新Grid用户更新OPatchOracle用户更新OPatch 三、验证Oracle Inventory的有效性四、运行 OPatch 冲突检查五、运行opatch命令检查GI HOME下是否有足够的空间六、补丁冲突检测与解决(修补程序)七、使用root用户应…

scGRN:人与鼠的GRN平台

基因调控网络GRN是包含转录因子TFs与其下游靶基因之间的调控相互作用的可解释图模型。了解GRN的拓扑结构和动力学是解释疾病病因机制和将相应发现转化为新疗法的基础。单细胞多组学技术的最新进展促使从单细胞转录组学和表观基因组学数据中以前所未有的分辨率推断GRN。在这里&a…