我们每天要在浏览器里敲无数次回车,页面几乎瞬间就出来了。但这短短一秒左右的“秒开”,背后其实跑完了一整套极其精密的流程。就好比你跟朋友说:“帮我去书城借本《三体》回来。”朋友出门、导航、找书、核验、带回来,每一步都不能错。

接下来,咱们就用大白话把“输入网址到看见页面”这趟旅程完整走一遍,保证你听完豁然开朗。

一、先“问路”:把网址翻译成门牌号

你在地址栏敲下“www.xxx.com”,浏览器根本不认识这串文字。它得先找到对应的服务器IP地址,也就是现实世界里的门牌号。

这个过程叫DNS解析,优先级从近到远:浏览器自己先翻小本本(缓存),没找到就问操作系统,操作系统再问路由器,路由器不行就直奔运营商的大DNS服务器。一层层往上问,直到有人回:“喏,IP是1.2.3.4。”

二、再“握手”:跟服务器建立联系

知道门牌号了,浏览器就顺着网线去敲门。这时候要执行著名的“TCP三次握手”,简单理解就是:

  • 浏览器:“在吗?我想连你。”

  • 服务器:“在,你连吧。”

  • 浏览器:“好,那我开始传数据了。”

三遍确认无误后,一条可靠的虚拟通道就算建好了。如果网址是https开头的,中间还会加一层SSL/TLS加密握手,互相验一下身份证,商量好用什么暗号来加密数据,防止传的时候被人偷看。

三、然后“下订单”:发请求等上菜

通道有了,浏览器把请求打包成标准的HTTP报文,里面写着:我要访问哪个页面、我是Chrome浏览器、我能接受什么格式的内容、要不要带Cookie表明身份,等等。报文送出去之后,就等着服务器那边“接单备菜”。

四、服务器那边“备货”,再原路返回

请求到了服务器,先过一道“防火墙”看看有没有恶意,再分配给对应的后端程序去处理。处理完返回的就是大家常听到的HTML文档。但完整的页面还包括CSS样式表、JS脚本、图片视频这些静态资源。这些通常不会一次全塞回来,浏览器会边分析HTML边再发请求去要,一个个拼起来。

五、浏览器“组装成品”

这是最关键也最累的一步。浏览器收到HTML、CSS、JS后,先建两棵树:DOM树描述页面结构,CSSOM树描述长什么样。两棵树一合并,生成渲染树,知道每个元素在页面上占多大位置、什么颜色。然后调用GPU来“上色”,一层层画像素点,最终变成你眼睛看到的完整页面。

六、为什么有时候感觉慢?

现在你应该明白了,一个页面慢,可能是DNS那步查太久,可能是服务器处理太卡,也可能是图片太大导致浏览器组装那一步憋住了。这趟旅程虽然只有一两秒,里面能优化的点可太多了。

现在再回想一下,你每敲一次回车,其实都是调动了全球无数节点在为你加班加点。互联网的每一次“秒开”,都是无数工程师在这七个步骤上死磕出来的结果。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐