#从URL到页面展示
>以用户打开浏览器,输入baidu.com为例,解析整个过程发生了什么?
##URL是什么?
URL:统一资源定位符,用于定位互联网上的资源。
我们常见的有:http/https/ftp/file等协议,http主要用于定位网络上的资源,https与http不同的是https是用于加密后的协议,file主要用于定位本地资源,还有一种我们常见的仅以//开头的网址,则是表示当前协议与页面保持一致。例如我们在线搜索百度就以http开头:http://baidu.com。
##域名解析(baidu.com是什么?)
对于baidu.com的URL,浏览器实际上不知道baidu.com到底是是么东西,需要查找baidu.com网站所在服务器的IP地址,才能找到目标。baidu.com就是域名。以域名代替IP主要为了方便用户搜索,如果直接输入IP,作为一串数字相对难记。每一个域名都有对应IP地址,每个处于互联网中的设备都有IP地址,局域网IP和公网IP是有差别的,例如:127.0.0.1代表本机IP。
.com格式域名,国际上最广泛的通过用域名格式。国际化公司都会注册.com域名,当然也可以选择以.net/.org为结尾的国际域名。
##域名解析的流程
以baidu.com为例,在浏览器输入baidu.com后,服务器会首先浏览器缓存查找,浏览器会缓存DNS记录一段时间。如果没有则向系统缓存从hosts文件查找是否有该域名和对应IP。再然后依次向路由器缓存、ISP DNS缓存查找。如果都没有则向根域名服务器查找域名对应的IP,根域名服务器把请求转发到下一级,知道找到IP。
##服务器处理
服务器是一台安装系统的机器,常见的系统如:linux/windows server2012等。系统里安装的处理请求的应用叫Web server,常见的Web服务器有:Apsche/Nginx/ISS/Lighttpd等。Web服务器接收用户的请求交给网站代码,或者直接接收请求反向代理到其他Web服务域。
##网站处理流程
这里需要提到MVC,简单来说就是模型-视图-控制器。网站把我们的请求通过浏览器发送,经过MVC处理,生成HTML字符串。HTML字符串被浏览器接收后被一句句读取解析,解析到link标签后重新发送请求获取CSS,解析到Script标签后发送请求获取js并执行代码,解析到ing标签后发送请求获取图片资源。浏览器根据HTML和CSS计算得到渲染树,绘制到屏幕上js会被执行。