【网络面试篇】从输⼊ URL 到⻚⾯展示到底发⽣了什么?

目录

一、大致流程

[1. 流程概述](#1. 流程概述)

[2. 全流程描述](#2. 全流程描述)

二、流程解析

[1. URL 解析](#1. URL 解析)

[2. DNS 查询](#2. DNS 查询)

[3. TCP 连接](#3. TCP 连接)

[4. 渲染页面](#4. 渲染页面)


一、大致流程

1. 流程概述

(1)URL 解析

(2)DNS 查询

(3)TCP 连接

(4)处理请求

(5)接受响应

(6)渲染页面

2. 全流程描述

1. 浏览器接收到用户请求,先检查浏览器缓存里是否有缓存该资源,如果有直接返回;如果没有进入下一步网络请求。

2. 网络请求前,进行 DNS 解析,以获取 请求域名的 IP 地址。如果 请求协议是 HTTPS,那么还需要建立 TLS 连接。DNS 解析时 会按 本地浏览器缓存 -> 本地 Host 文件-> 路由器缓存 -> DNS 服务器 -> 根 DNS 服务器 的顺序 查询域名 对应 IP,直到 找到为止。

3. 浏览器 与 服务器 IP 建立 TCP 连接。连接建立后,浏览器端会 构建 请求行、请求头 等信息,并把 和 该域名相关的 Cookie 等数据 附加到 请求头中,向服务器 构建请求信息。

4. 服务器 接收到 请求信息,根据 请求生成 响应数据。

5. 浏览器 解析响应头。若响应头状态码为 301、302,会重定向到 新地址;若 响应数据类型是 字节流类型,一般会将请求提交给 下载管理器;若是 HTML 类型,会进入 下一部 渲染流程。

6. 浏览器解析 HTML 文件,创建 DOM 树,解析 CSS 进行样式计算,然后将 CSS 和 DOM 合并,构建渲染树;最后布局和绘制渲染树,完成 页面展示。

二、流程解析

1. URL 解析

URI 格式由 URI 协议名(例如 http、ftp、maito、file),一个冒号,和 协议对应的 内容所构成。特定的协议 定义了 协议内容的 语法和语义。

URL 的格式由下列三部分组成:

  • 第一部分是 协议(或称为服务方式)。
  • 第二部分是 存有该资源的 主机 IP 地址(有时也 包括 端口号)。
  • 第三部分是 主机资源的 具体地址。

具体 URI 的格式如下:

复制代码
[协议名]://[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]

例如:scheme://host.domain:port/path/filename
① scheme - 定义因特网服务的类型。常见的协议有 http、https、ftp、file。
② host - 定义域主机(http 的默认主机是 www)
③ domain - 定义因特网域名,比如 http://baidu.com
④ port - 定义主机上的端口号(http 的默认端口号是 80)
⑤ path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。
⑥ filename - 定义文档/资源的名称

2. DNS 查询

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

3. TCP 连接

4. 渲染页面

相关推荐
Trouvaille ~12 分钟前
【Linux】网络层与IP协议详解:从地址到路由的完整指南
linux·运维·服务器·网络·tcp/ip·路由器·网络层
xian_wwq30 分钟前
【学习笔记】OAuth 2.0 安全攻防:从 Portswigger 六大实验看认证漏洞挖掘
笔记·学习·安全
山野万里_35 分钟前
B站DR_CAN【Advanced控制理论】课程笔记
笔记
希赛网37 分钟前
26年通信工程师中级备考:互联网技术测试题库
网络·互联网技术·通信工程师·通信工程师题库·通信工程师中级·通信工程师考试内容·通信工程师中级考试大纲
2501_9011478339 分钟前
粉刷房子问题:从DP基础到空间极致优化学习笔记
笔记·学习·动态规划
时代的凡人40 分钟前
0215晨间笔记
笔记·晨间日记
筵陌1 小时前
Linux网络传输层协议UDP
linux·网络
yukai080081 小时前
【203篇系列】041 Websocket Server
网络·websocket·网络协议
AC赳赳老秦1 小时前
轻量化模型浪潮下的关键技术突破:DeepSeek INT4量化优化引领2026端侧算力新纪元
网络·安全·mongodb·web安全·flink·prometheus·deepseek
御坂10101号2 小时前
JIT 上的 JIT:Elysia JS 的优化实践与争议
开发语言·javascript·网络·性能优化·node.js·express