deny 浏览器显示host_浏览器回车背后做了什么呢?

c5906175aa45a7f52a04b35db027877f.png

小cc:火云大神,我每天用着浏览器,偷着别人的代码,看着电影和新闻,读着段子,突然很好奇,当我
输入一个个网址的时候,浏览器背后到底做了什么?

光头火云大神:小cc,快点端着小板凳,看着我的小黑板,听我娓娓道来。

小cc扭扭屁股,抹抹鼻涕,眯着崇拜的小眼睛,端起小板凳,坐在火云大神的面前,准备大神传经布道。

光头火云大神:敲着小黑板,平时我们看到的浏览器长这个样:有用来输入URL的地址栏,前进和后退按钮,书签。。。。。。

0079619cd6491f8a2729dbb2c630ae3b.png

小cc:很不耐烦的说,这个我知道,我天天都在用,我知道它长什么样。

光头火云大神:好了,那就看看这幅图吧,

7d1be568a0408972e8562c2cb0b8e054.png

这个是大部分浏览器的一个内部架构图,表示了浏览器内部大体有哪些部分,各个部分之间的关系,浏览器接受用户的输入,然后交给浏览器引擎进行分发处理,最终将所有请求的资源进行渲染呈现给用户。

小cc:原来浏览器内部还有这么复杂的机制呢?那一般我们说的浏览器内核是就是Browser Engine么?

光头火云大神:那当然了,浏览器其实要做帮我们做很多事情的,浏览器内核一般指的是渲染引擎和js引擎。但是由于现在js引擎慢慢的开始越来越独立了,所以浏览器内核主要指的是渲染引擎。来看看现在市面上主流浏览器都用的是什么内核,值得一提的是谷歌的chrome之前一直用的是apple的webkit,后来怕受制于人,于是就在webkit的基础上和Opera一起开发出了Blink内核,特点就是渲染速度快,兼容性好。

8956fd332ea8c15c845b7adfa39676cb.png

小cc: 那么渲染引擎主要做了什么啊?

光头火云大神:渲染引擎主要就是将从服务器请求的资源,进行解释加工,翻译成内核中需要的DOM树(Document Object Model Tree,DOM Tree),然后加工成Render树,最终将Render树映射成可视的图形,呈现成为用户看的实际页面,整个过程可以看做一个流水线的过程。

b5e5638c048c997c1b98698a10106f56.png

当然,渲染内核执行的详细过程大致如下:

d0b02764272e387998e94442f852f2d5.png

当然,这里面还有很多细节的东西,解析算法,DOM树和渲染树之间的关系,样式和布局处理,绘制顺序等等。这次就不详细说。现在浏览器处理资源的大概过程已经大致了解了,但是浏览器处理的资源怎么得到呢?

小cc: 当然是网络请求啦,用的是HTTP协议!

光头火云大神:对的,浏览器里面我们一般输入的是一个URL(Uniform Resoure Locator) 统一资源定位

,这个URL包含了好几个部分,举例http://helloworld.com/index.html, http:// 这部分是协议,http://helloworld.com是域名,/根目录,index.html就是资源文件了,浏览器就是使用url来定位全球的网上资源的,那浏览器拿到这个url就要去通过网络来找到这个资源了,首先浏览器要知道这个资源在那一台服务器,那就需要这台服务器的ip地址,首先,浏览器会缓存浏览过的网址的ip一段时间,所以浏览器需要先去缓存看看有没有这ip,没有的话就会去找本机的host文件要,如果没有的话,那就需要费点劲去向DNS(Domain Name System,域名系统)请求啦,它帮我们维护了一个域名和ip地址相互映射的分布式数据库。DNS协议是构建在UDP协议之上,那么抓包的话,我们能看到会有一个UDP包发出。这样就可以获得ip了,

59c8823a320ea4abc1a50a0fb4265a0d.png

什么?没有获取到,是不是域名不存在啊,袄,还有可能你访问了不该访问的网址了,有一个伟大的“墙”,Great Wall of China会采取一些技术手段,比如DNS劫持,去帮我们解析到一个虚拟的ip地址,那你就访问不到你想要的资源了哈。

终于拿到IP了,浏览器发现你使用的是http协议啊,来来来,复习一下,看看OSI模型,看看我们的http协议是在应用层,并且是构建在的TCP协议之上的啊。

ae23bb12ffd53eeff0089ee570058522.png

http需要发送一个TCP包来发送自己的请求协议,那自然少不了tcp的三次握手啦,。。Hello 你好,服务端,我是客户端小弟;服务端点点头说小弟你好。小弟很高兴地说耶耶耶,从此可以源源不断的给服务器大哥送东西啦。送什么啊,当然送甜甜的HTTP甜甜包啊。

90f6d4a446b3e8bfbe778c002f59cad2.png

bc48b92768b79636044703cbd1699aca.png

就是这么一坨精心制作的蛋糕,里面有好多的东西,开开心心的送到了服务端,看到小弟送来这么多东西,服务端想到哪有免费的午餐,很快发现了小弟想要他想要的东西,web服务端果然在家里小弟告诉他的位置(url)找到小弟弟想要的东西,就噼里啪啦的把东西送过去,小弟拿到后愉快的挥挥小手手,

小弟弟: 大哥,我走了啊。FIN

大哥:好的,你走吧。ACK

大哥:心里惦记着好吃的蛋糕,就赶紧又补了一句,小弟下次再来啊。FIN

小弟: 好的,好的。

这样,小弟弟带着资源经过下面的电缆光纤来到浏览器的面前啦。

cdce08fbe296a2b1cc80bfd0a18c3f7a.png

图片来自https://www.submarinecablemap.com/#/,显示了全球的海底电缆分布。

终于拿到了资源,可以解析了。小cc,这就是简单个过程,我这里就简单的说下,后面再给你一个一个点的剖析。

小cc:Zzzzzzzz 若有错误请多多指正。

小cc: 关注公众号回复python,即可获得一套完美的python视频教程。发现更多惊喜。

aee3b88e03ecb62b531e3c6a83cbee85.png

7162c520dfe76920f1e4f27cd9c9c5c0.png

参考:

https://www.cnblogs.com/xiaohuochai/p/9174471.html

http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/

http://www.cnblogs.com/geaozhang/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值