用户打开浏览器,输入baidu.com,页面展示百度首页。整个过程发生了什么?
第一步:用户输入baidu.com
URL是什么?
URL(统一资源定位符),用于定位互联网上的资源,它包括http,https,ftp,file协议。
第二步:域名解析
域名解析的流程:
1.查找浏览器缓存 —— 浏览器会缓存DNS记录一段时间。
浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
2.查找系统缓存 —— 从Hosts文件查找是否有该域名和对应IP。
如果用户的浏览器缓存中没有,浏览器会从hosts文件查找是否有存储DNS信息,查找是否有目标域名和对应的IP地址
3.查找路由器缓存 —— 一般路由器也会缓存域名信息。
如果系统缓存中也找不到,那么查询请求就会发向路由器,路由器一般会有自己的DNS缓存。
4.ISP DNS缓存 —— 比如到电信的DNS上查找缓存。
如果路由器缓存中也找不到,那么就查询ISP DNS 缓存服务器了。
5.如果都没有找到,则向根域名服务器查找域名对应IP,根域名服务器把请求转发到下一级,直到找到IP。
第三步:服务器处理
服务器是一台安装系统的机器,常见的系统如Linux,Windows server 2012.
系统里安装的处理请求的应用叫Web server。
当web server接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。对于不同用户发送的请求,会结合配置文件,把不同请求委托给服务器上处理对应请求的程序进行处理(例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术等)。
无论它们(脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
第四步:网站处理流程
那么如何处理请求?实际上就是后台处理的工作。后台开发现在有很多框架,但大部分都还是按照MVC设计模式进行搭建的。
imageMVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,控制器决定用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器确定用哪个视图模型,用相应的视图格式化模型返回html字符串给浏览器,并通过显示页面呈现给用户。
第五步:浏览器处理:
1.HTML字符串被浏览器接手后被一句句读取解析
2.解析到link标签后重新发送请求获取CSS
3.解析到script标签后发送请求获取js,并执行代码。
4.解析到img标签后发送请求获取图片资源。
第六步:绘制网页
浏览器根据HTML和CCS计算的得到渲染书,绘制到屏幕上,js会被执行。
参考文章:
网友评论