浏览器/地址栏:修订间差异
来自运维百科
无编辑摘要 |
无编辑摘要 |
||
第6行: | 第6行: | ||
* 浏览器解析你输入的地址,提取协议(如 https)、域名(如 www.example.com)和路径(如 /index.html)。 | * 浏览器解析你输入的地址,提取协议(如 https)、域名(如 www.example.com)和路径(如 /index.html)。 | ||
* 如果输入不完整(如 example),浏览器可能尝试补全协议(https://)或添加后缀(.com)。 | * 如果输入不完整(如 example),浏览器可能尝试补全协议(https://)或添加后缀(.com)。 | ||
[[URL|URL请参考]] | |||
== 2.DNS 查询(域名 → IP 地址) == | == 2.DNS 查询(域名 → IP 地址) == | ||
* 检查缓存:浏览器先检查本地缓存(如之前访问过该域名),若无则查询操作系统缓存 → 路由器缓存 → ISP 的 DNS 缓存。 | * 检查缓存:浏览器先检查本地缓存(如之前访问过该域名),若无则查询操作系统缓存 → 路由器缓存 → ISP 的 DNS 缓存。 |
2025年6月21日 (六) 10:19的最新版本
浏览器地址栏(也称为URL 栏或搜索栏)是浏览器顶部用于输入和显示网页地址(URL)的输入框。它不仅是访问网站的入口,还集成了搜索、历史记录、自动补全等功能。 当我们在浏览器的地址栏,输入内容回车后,浏览器会判断内容格式。 若输入的不是有效的URL,则浏览器会自动搜索功能,打开搜索引擎展示搜索结果。 否则,浏览器将做以下工作:
1.URL解析
- 浏览器解析你输入的地址,提取协议(如 https)、域名(如 www.example.com)和路径(如 /index.html)。
- 如果输入不完整(如 example),浏览器可能尝试补全协议(https://)或添加后缀(.com)。
2.DNS 查询(域名 → IP 地址)
- 检查缓存:浏览器先检查本地缓存(如之前访问过该域名),若无则查询操作系统缓存 → 路由器缓存 → ISP 的 DNS 缓存。
- 递归查询:若缓存未命中,浏览器通过 DNS 服务器(如 8.8.8.8)递归查询域名对应的 IP 地址(如 93.184.216.34)。
- DNS 层级查询:若本地 DNS 服务器无记录,它会从根域名服务器(.)开始,依次查询顶级域(.com)、权威域名服务器(example.com),最终获取 IP。
3.建立 TCP 连接(三次握手)
- 浏览器通过 IP 地址和端口(默认 443 用于 HTTPS)向服务器发起 TCP 连接。
- 三次握手:
客户端发送 SYN 包(同步序列号)。 服务器回复 SYN-ACK(确认 + 同步)。 客户端回复 ACK(确认),连接建立。
4.TLS 握手(HTTPS 加密)
- 若使用 HTTPS,客户端和服务器通过 TLS 握手 协商加密参数:
客户端发送支持的加密算法列表和随机数。 服务器选择算法并返回证书(含公钥)和随机数。 客户端验证证书(是否过期、是否受信任等)。 双方生成会话密钥,后续通信加密。
5. 发送HTTP GET请求
- 浏览器发送 HTTP 请求报文。
注:浏览器地址栏触发的是GET请求,我们常见的还有POST请求,但POST请求通过网页表单、ajax等方式发起。
6.服务器接受请求,返回数据
- Web 服务器(如 Nginx/Apache)接收请求,可能转发给后端应用(如 PHP、Node.js)。
- 应用服务器 执行逻辑(如查询数据库),生成动态内容。
- 服务器返回 HTTP 响应,包含状态码(如 200 OK)、响应头(如 Content-Type: text/html)和响应体(HTML 内容)。
7.浏览器渲染页面
- 解析 HTML:构建 DOM 树(文档对象模型)。
- 解析 CSS:构建 CSSOM 树(CSS 对象模型)。
- 执行 JavaScript:可能阻塞渲染,或修改 DOM/CSSOM。
- 合并渲染树:结合 DOM 和 CSSOM,计算布局(Layout)和绘制(Paint)。
- 加载资源:如图片、字体等,可能触发重新渲染。