
后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载在浏览器地址栏输入google.com并按下回车到页面完整呈现在屏幕上这短短数百毫秒内发生了一连串精密的网络与渲染动作。本指南以 System Design 101 仓库中的 《What Happens When You Type google.com Into a Browser?》 为核心脉络结合仓库内 DNS、TCP、HTTP、浏览器渲染等专题文档逐层拆解这条完整链路。读完本文你将能用自己的语言讲清楚 DNS 查询、TCP 三次握手、HTTP 请求与浏览器渲染管线这四大环节并掌握其中每个环节的关键概念与排查思路——这正是技术面试中高频考察的基础题。全链路总览输入地址后的 8 个关键动作当你在浏览器地址栏输入google.com并回车浏览器会依次执行以下 8 个步骤在地址栏输入网站地址浏览器先检查自身缓存若缓存未命中cache miss则必须找到该域名对应的 IP 地址开始 DNS 查找可以理解为查电话号码请求依次经过根root、顶级域TLD和权威authoritativeDNS 服务器最终拿到 IP 地址浏览器发起 TCP 连接类似握手以 HTTP 1.1 为例客户端与服务端通过 SYN、SYN-ACK、ACK 三个报文完成 TCP 三次握手握手成功后浏览器向服务器发送 HTTP 请求服务器返回 HTML、CSS 与 JS 文件浏览器开始处理一切解析 HTML 文档构建 DOM 树与 CSSOM 树浏览器执行 JavaScript并通过 tokenizer、parser、render tree、layout、painting 等多个步骤渲染页面网页最终呈现在屏幕上。下面我们沿着这条链路逐步深入每个环节的原理。第一步URL 输入与浏览器对请求的预处理用户在地址栏输入google.com并回车浏览器首先需要理解这个输入。更完整的 URL 通常由四部分构成参考仓库中 《What Happens When You Type a URL Into Your Browser?》 的讲解组成部分示例作用scheme协议http:///https://告诉浏览器使用什么协议与服务器通信domain域名google.com网站的域名名称人类可读path路径product/electric服务器上请求资源的路径resource资源phone用户想要访问的具体资源名第二步浏览器缓存检查——为什么本地缓存是第一步在发起任何网络请求之前浏览器会先在本地缓存中查找目标资源。这一步的目的非常明确DNS 查找与网络请求都是昂贵的操作能命中缓存就绝不走网络。缓存失败cache miss后浏览器才需要进入下一步——寻找域名对应的 IP 地址。值得一提的是为了加速查找DNS 数据本身也会在多个层次被缓存浏览器缓存、操作系统OS缓存、本地网络缓存、ISP 缓存。如果这些缓存层都无法命中浏览器才会发起真正的递归 DNS 查询详见 《What Happens When You Type a URL Into Your Browser?》。第三步DNS 查找——互联网的电话簿如何工作DNSDomain Name System就像一本地址簿它把人类可读的域名如google.com翻译成机器可读的 IP 地址如142.251.46.238。这一过程在 《How Does the Domain Name System (DNS) Lookup Work?》 中有详细讲解。DNS 服务器的层级结构为了支撑海量查询DNS 服务器采用层级树状结构组织共有三层基础服务器根名称服务器Root Name Server.存储所有顶级域TLD名称服务器的 IP 地址。全球逻辑上共有 13 个根名称服务器。顶级域名称服务器TLD Name Server存储权威名称服务器的 IP 地址。TLD 有多种类型例如通用顶级域.com、.org、国家代码顶级域.us、测试顶级域.test。权威名称服务器Authoritative Name Server为 DNS 查询提供最终的实际答案。你可以通过 GoDaddy、Namecheap 等域名注册商注册自己的权威名称服务器。一次完整的 DNS 查询流程以google.com为例一次完整的递归 DNS 查询共 8 步浏览器将google.com发送给 DNS 解析器DNS resolver解析器向 DNS 根名称服务器发起查询根服务器向解析器返回顶级域 DNS 服务器的地址本例中为.com解析器向.com顶级域服务器发起请求TLD 服务器返回google.com的权威名称服务器 IP 地址DNS 解析器向该域名的名称服务器发起查询权威名称服务器向解析器返回google.com的 IP 地址DNS 解析器将 IP 地址如142.251.46.238返回给最初发起请求的浏览器。按照 YSlow 的统计一次 DNS 查询平均耗时约20–120 毫秒——这正是为什么缓存如此重要一次未命中的 DNS 查询就可能消耗掉上百毫秒。常见的 DNS 记录类型了解 DNS 解析后有必要认识其中涉及的记录类型。仓库中的 《DNS Record Types You Should Know》 总结了 8 种最常用的 DNS 记录记录类型全称作用AAddress将域名映射到 IPv4 地址是最基础的记录AAAAAddress (IPv6)类似 A 记录但映射到 IPv6 地址CNAMECanonical Name将一个域名别名指向另一个域名常用于子域名指向主域名PTRPointer提供反向 DNS 查询将 IP 地址映射回域名常用于验证服务器真实性MXMail Exchange将邮件流量导向正确的邮件服务器NSName Server指定该域名的权威 DNS 服务器SRVService为特定服务如 VoIP指定主机和端口TXTText允许管理员添加可读文本常用于 SPF 等邮件安全验证记录第四步TCP 三次握手——建立可靠连接的基石拿到 IP 地址后浏览器需要与服务器建立 TCP 连接。TCP 提供可靠的、面向连接的通信其建立过程被称为三次握手three-way handshake。以 HTTP 1.1 为例客户端发送SYN报文请求建立连接服务器回应SYN-ACK报文确认并同步客户端发送ACK报文确认收到。至此连接建立双方可以开始可靠地传输数据。TCP 是 HTTP 1.1 与 HTTP 2 的底层传输协议它保证了报文不丢失、不乱序但也带来了握手开销——这是后续 HTTP 3 迁移到基于 UDP 的 QUIC 协议的重要原因之一详见 《HTTP/1 → HTTP/2 → HTTP/3》。补充HTTPS 场景下的握手延伸如果你访问的是https://google.com在 TCP 握手之后还会叠加一层TLS 握手详见 《How does HTTPS work?》客户端发送client hello携带它支持的加密算法cipher suites与最新的 TLS 版本服务器回应server hello确认算法与版本并下发包含公钥、主机名、有效期等信息的 SSL 证书客户端校验证书客户端生成会话密钥session key用服务器的公钥加密后发送服务器用私钥解密得到同一把会话密钥此后双方用这把会话密钥对称加密建立安全的双向加密通道。HTTPS 之所以在数据传输阶段改用对称加密原因有二安全性——非对称加密是单向的若服务器用公钥加密数据返回给客户端任何人都能用公开的公钥解密服务器资源——非对称加密的数学开销很大不适合长时间会话中的大量数据传输。第五步HTTP 请求与响应——浏览器与服务器的对话TCP以及必要的 TLS连接建立后浏览器向服务器发送 HTTP 请求。以example.com/phone为例请求报文形如GET /phone HTTP/1.1 Host: example.com服务器处理请求后返回响应。成功响应状态码 200的报文可能如下HTTP/1.1 200 OK Date: Sun, 30 Jan 2022 00:01:01 GMT Server: Apache Content-Type: text/html; charsetutf-8 !DOCTYPE html html langen Hello world /html响应体中包含 HTML、CSS 和 JS 文件——浏览器后续的全部渲染工作都基于这批文件展开。第六步解析 HTML 与 CSS——构建 DOM 树和 CSSOM 树浏览器收到 HTML 数据后立即开始解析这一渲染流程在 《How Browsers Render Web Pages》 中有系统讲解解析 HTML生成 DOMDocument Object Model树浏览器将收到的 HTML 逐字节解析转换为内存中的 DOM 树结构解析 CSS生成 CSSOMCSS Object Model树CSS 文件被加载并解析为 CSSOM合并 DOM 树与 CSSOM 树构建渲染树Render Tree渲染树映射了所有可见的 DOM 结构会排除不可见元素如head或display:none;的元素。换言之渲染树是 DOM 的视觉化表示。第七步JavaScript 执行与渲染管线JavaScript 的执行浏览器解析到script标签时会交由 JavaScript 引擎执行。仓库中的 《How does JavaScript Work?》 总结了 JavaScript 的核心特性解释型语言JS 由浏览器或 JS 引擎直接执行而非预先编译为机器语言现代引擎如 V8采用JIT即时编译技术将代码编译为可直接执行的机器码函数是一等公民函数可存入变量、作为参数传递、作为返回值返回动态类型无需预先声明变量类型类型可在运行时改变客户端异步执行支持异步编程文件读取、HTTP 请求、数据库查询等操作可在后台运行完成后触发回调或 Promise这对改善 Web 性能和用户体验至关重要基于原型Prototype的 OOP对象可以从其他对象继承属性和方法自动垃圾回收自动回收程序中不再使用的对象所占内存防止内存泄漏、优化应用性能。渲染管线的后续步骤JavaScript 执行完毕后浏览器继续渲染流程Layout布局计算渲染树中每个元素的几何信息位置、大小这一步骤称为布局Painting绘制布局完成后渲染树被转换为屏幕上的实际内容浏览器获取内容的绝对像素Display显示浏览器将绝对像素交给 GPU最终显示在页面上。第八步页面呈现——一条链路的终点也是性能优化的起点网页最终呈现在屏幕上一次完整的输入 → 呈现旅程就此完成。整条链路中任何一环都可能成为性能瓶颈DNS 环节平均 20–120 毫秒的查询耗时依赖多层缓存加速TCP/TLS 环节三次握手与 TLS 握手叠加带来明显的往返延迟HTTP 环节协议版本HTTP/1.1 → HTTP/2 → HTTP/3直接影响传输效率渲染环节DOM/CSSOM 构建、布局与绘制全部阻塞在浏览器主线程上。理解这条链路不仅是为了面试更是 Web 性能优化、网络问题排查DNS 解析失败、连接超时、渲染卡顿的必备知识框架。在仓库中继续深入本文所依赖的原始文档 《What Happens When You Type google.com Into a Browser?》 位于仓库的data/guides/目录属于technical-interviews分类。该仓库通过 README.md 中的 TOC 组织全部指南相关主题文档还包括What Happens When You Type a URL Into Your Browser?——URL 组成部分与缓存层级How Does the Domain Name System (DNS) Lookup Work?——DNS 层级结构与递归查询全流程DNS Record Types You Should Know——8 种常用 DNS 记录类型How Browsers Render Web Pages——DOM/CSSOM/渲染树/布局/绘制完整管线How does HTTPS work?——TLS 握手与加密原理HTTP/1 → HTTP/2 → HTTP/3——HTTP 协议演进与底层传输变化。仓库的data/categories/目录还按主题对全部指南做了分类归档technical-interviews分类technical-interviews.md下的其他文章可作为你准备技术面试的延伸阅读。赞分享后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载相关推荐请求旅程全景从浏览器输入 URL 到页面渲染的完整链路解析请求旅程全景从浏览器输入 URL 到页面渲染的完整链路解析 导读 当你在浏览器里输入一个网址按下回车到页面显示出来中间到底发生了什么这个问题是面试经典题教程文档Umi-OCR 免费离线OCR实测从截图到500页扫描版PDF5分钟跑通Umi OCR 免费离线OCR实测从截图到500页扫描版PDF5分钟跑通 Umi OCR 是一款免费离线OCR工具最反直觉的是全程不联网、不登录、不上传OCR桌面应用Easy-Vibe 中的请求旅程全景从浏览器输入 URL 到页面渲染的完整 HTTP 链路解析Easy Vibe 中的请求旅程全景从浏览器输入 URL 到页面渲染的完整 HTTP 链路解析 当一个 HTTP 请求从浏览器发出、穿过网络、抵达服务器、查询教程文档上一篇如何为老旧Mac安装最新macOS系统OpenCore Legacy Patcher完全指南下一篇3分钟学会在Android手机运行Windows应用Mobox终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考