文适用于编程初学者或者对网页打开的过程感兴趣的朋友来阅读,本文希望以大家都能读懂的方式去描述网页打开的过程,其中每一个环节展开来讲都能单独成一篇长文,希望以后有机会再与大家探讨。
现代人。
早上一睁眼,先看一眼手机……
上班路上看了一路手机……
吃饭依然在看手机……
上厕所坐马桶上依然在看手机,要是忘了带手机,提上裤子出去拿了手机回来继续……
晚上睡觉前还在看手机……
曾经衣食住行是我们生活的必须条件,当进社会,我们生活的必要条件变成衣食住行网,网络已经成为我们生活必不可少的一部分。
今天宅哥带大家看下一个网页打开的过程,看看这个新的生活必需品是怎么送到我们眼前的。
打开浏览器,在地址来输入一个网址,或者鼠标点击一个链接,这时候就是给浏览器给了一个命令,意思是我要看这个链接的页面。
浏览器接收我们的指令,它需要找到这个网址对应的页面地址然后显示出来给我们看。浏览器分析网址,获得网址中的域名,然后找到域名对应的ip地址,这个过程实际上就是将域名翻译成IP地址,我们称作DNS解析。DNS解析具体过程如下:
1) 浏览器首先搜索浏览器自身缓存的DNS记录。
2) 如果找到,则搜索hosts文件和操作系统缓存。
3) 如果还没找到,则向域名解析服务器发送解析请求。
只要是正常解析的域名,一般来说都能在域名服务器中获得其对应的IP地址。
当获得服务器ip,我们的客户端开始发送TCP求尝试与服务器监理连接,这个过程就像是我们要跟某人打电话,先拨通电话号码,等待对方接通电话,然后我们互相看到电话接通就可以说话了。
TCP是一种网络传输协议,其连接过程如下:
1)客户端向服务器端发送连接请求的报文(拨号);
2)服务器端收到请求后,同意建立连接,向客户端发送确认报文(对方点击接通电话按钮);
3)客户端收到服务器端的确认报文后,再次向服务器端发出报文,确认已收到确认报文(双方都看电话已接通)。
至此,浏览器与服务器已经建立了TCP连接,开始进行通信。
建立TCP连接后,就可以发送http请求了。http请求协议是构建在TCP/IP协议之上的一个应用。其中包含了要从服务器获得的资源的信息。
http协议是超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础HTTP协议是建立在tcp协议之上的一种应用,是tcp协议的一个子集。
类似于电话接通之后就可以跟朋友说话了,你可以在电话里中跟朋友说一件事,也可以说几件事。同理,tcp连接之后,在同一个tcp连接中,可以发送多个http请求。
服务器根据http请求中的请求网址,找到网址对应的内容,并将请求的资源发送给浏览器。
上面说到一次tcp链接可以发送多个http请求,服务器会按照每个请求依次找到对应的资源,返回给服务器。
1) 浏览器根据页面内容,生成DOM Tree。根据CSS内容,生成CSS Rule Tree(规则树)。调用JS执行引擎执行JS代码。
2) 根据DOM Tree和CSS Rule Tree生成Render Tree(呈现树)
3) 根据Render Tree渲染网页
最终浏览器渲获得服务器返回的资源生成呈现在我们面前的页面。
全文结束,欢迎大家参与留言讨论,在讨论中思考,在思考中将知识装进脑海。
留言与评论(共有 0 条评论) |