1.URL寻找IP地址
打开一个页面,首先需要找到存储这个页面所含信息的设备,这时候我们需要这个设备的定位信息,也就是IP地址。
注意:局域网IP和公网IP有差别。
什么是IP,比如127.1.0.0就是一个IP,很难记忆。
所以我们使用URL。
URL是什么?
URL:统一资源定位符,用于定位互联网上的资源
http://www.baidu.com
这是一个URL地址,其中http指的是一种传输协议,另外还有使用本地文件时用的flie协议,以及为了加密用的防止文件泄露的https协议,直接指向目标IP。
www.baidu.com是我们输入的网站,baidu.com是域名,域名可以通过DNS解析得到对应的IP地址,而我们输入的网站是有语义含义的,非常方便记忆。
2.域名解析
DNS解析网站时,采取就近原以最快时间找到IP地址。
1.首先从浏览器缓存找-浏览器会缓冲DNS一段时间;
2.在浏览器缓冲中找不到网站名称对应的IP,那么从本地Host文件里找;
3.还找不到去路由器缓冲中找-一般路由器也有缓存;
4.去网络供应商的DNS缓冲中找;
5.如果还没找到,去根服务器里找,比如.com根服务器,根域名服务器把请求发给下一级直到找到。
ps:这里会涉及到2个经常碰到的问题:
1.DNS劫持的问题:有些黑客会更改根服务器中网站和IP地址的对应关系,使URL指向他希望的IP地址。而用户经常对此一无所知,因为他们输入的URL还是相通的,尤其是在在页面外观上很难区分的时候。
2.DNS服务器修改:有时候打不开页面时,会百度搜索来寻找解决方法。很多人提供的解决方法是修改DNS地址,比如改成8.8.8.8。然后,就能打开所希望打开的网站了。这是因为修改了DNS服务器地址,8.8.8.8对应的是谷歌的服务器地址,而谷歌服务器有这个网址对应的IP信息。原先的服务器已经没有了这个信息导致无法打开这个网页。
3.WEB 服务器
通过解析后的IP地址找到这个设备后,也就是WEB服务器,将对服务器发生请求。
WEB服务器也是一台电脑,常见的系统是Linux和windows server2012。装有处理请求的的应用叫Web Server。
常见的web服务器有Apatch、Nginx、IIS和Lighttpd
而很多个URL都会指向这个服务器,根据不同的URL来指向不同的指令。做个比喻,服务器就像食堂打菜的大妈,面对这一个窗口(IP地址)下所有排队的学生,处理他们的点菜指令,根据点菜指令去打菜(执向存储的不同指令)。如果学士点的菜没有找到,向别的web服务器发出指令。
4.指令处理,获取文件
根据WEB服务器处理后发出的指令,经过路由器的解析向控制器发出指令,控制器向模型发出指令,模型在数据库中 寻找代码,并将代码送到控制器,控制器得到代码后向视图发出指令,视图经过处理后将html文件返送至控制器。控制器再把html文件给浏览器文件,浏览器读取html文件。
5.指令处理,获取文件
html字符串被浏览器接受后一句句解析,读取到link 标签后,重新发送请求读取css文件,解析到script 标签后发送请求获取js,并执行代码。解析到img 标签后,发送请求获取图片资源。
6.绘制网页
浏览器根据HTML和CSS计算得到渲染树,绘制到屏幕上。js会被执行。