从输入URL到页面展现这其中经历了什么?
2019-03-16 本文已影响3人
kiterumer
第一步:在浏览器地址栏输入URL
比如我想访问知乎,我会在地址栏里输入www.zhihu.com,点击回车之后页面变跳转到了知乎的首页。
然而URL是什么呢?
URL:统一资源定位符(Uniform Resouce Location),用于定位互联网上的资源,对应的有常见的几种网络协议,如http,https,ftp,file等。
比如本地的文件定位会用到file协议。
第二步:域名解析
将输入的域名通过DNS解析为IP
- 浏览器缓存——浏览器会缓存DNS记录一段时间
- 系统缓存——从HOSTS文件查找是否有该域名和对应IP
- 路由器缓存——一般路由器也会缓存域名信息
- ISP DNS缓存——比如到电信的DNS上查找缓存
- 如果都没有找到,则向根域名服务器查找域名对应IP,根域名服务器吧请求转发到下一级,直到找到IP
第三步:服务器处理
服务器是一台安装系统的机器,常见的系统有Linux、windows server2012.
系统里安装的处理请求的应用叫Webserver
Web服务器常见的有Apache、Nginx、IIS、lighttpd
Web服务器接受用户的Request请求交给网站代码,或者接受请求反向代理到其他Web服务器
Web服务器相当于一个管控承载站,通过里面已经写好的配置文件,将受到的请求分配到不用的代码文件去处理
第四步:网站处理流程
我们以MVC(Model View Controller)框架来演示大概的处理流程
后台处理流程.png
第五步:浏览器处理并展现
浏览器接受服务器返回的html,并并进行解析加载。
- 解析到link标签后重新发送请求获取css
- 解析到script标签后发送请求获取js,并执行代码
- 解析到img标签后发送请求获取图片资源
- 然后浏览器根据html和css计算得到渲染树,绘制到屏幕上,js会被执行
从输入URL到页面载入的流程实际中要复杂的多,很多细节还没有触及到。这其实是一个见不到底的坑,越挖越深。