一、用户在浏览器输入百度的URL
> URL:统一资源定位符(http://www.baidu.com),全球性地址,用于定位网上的资源。
二、域名解析(查找IP地址)
对于用户输入的baidu.com,浏览器不知道baidu.com是什么,需要查找baidu.com网站服务器的IP地址,才能找到目标。这个找到IP地址的过程就叫做域名解析。
域名解析流程:
- 从浏览器缓存中查找IP地址。
- 在浏览器缓存中没找到,在系统缓存中查找。
- 系统缓存中也没查到,在路由器缓存中查找,因为路由器一般都有自己的DNS缓存。
- 还是找不到,就向ISP DNS发起域名解析请求,查找baidu.com的IP地址。
- 如果以上流程走完了,还是没有找到IP地址,则向根域名服务器查找,根域名服务器把请求转到下一级,直到找到IP地址。
在这之后,用户电脑的解析器获取到解析结果,会缓存在自己操作系统的DNS中,同时返回给浏览器,浏览器依旧会缓存一段时间
三、服务器处理
服务器是一台安装系统的机器,常见的如Linux、windows server,系统安装的应用web server才是接受请求和处理服务的。常见的Web服务器如Apacha\Nginx\IIS\lighttpd。Web服务器接收用户的请求交给网站,或者将接收的请求反向代理到其他Web服务器。
四、网站处理流程(MVC模型)
视图:视图是用户看到并与之交互的界面。视图向用户展示用户感兴趣的业务数据,并能接收用户的输入数据,但是视图并不进行任何实际的业务处理。视图可以向模型查询业务数据,但不能直接改变模型中的业务数据。视图还能接收模型发出的业务数据更新事件,从而对用户界面进行同步更新。
模型:模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供业务数据。同一个模型可以被多个视图重用。
控制器:控制器接收用户的输入并调用模型和视图去完成用户的请求。当用户在视图上选择按钮或菜单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。
MVC处理过程:
- 控制器接受用户请求,然后决定调用哪个模型来进行处理。
- 模型进行相应的逻辑处理,然后返回处理后的数据。
-
控制器调用视图将模型返回的数据呈现给用户。
浏览器处理
- 1、浏览器接收控制器返回的HTML,然后一句句读取解析HTML,解析到link标签后重新发送请求获取CSS,解析到script标签后发送请求获取js,并执行代码,解析到img标签后发送请求获取图片资源(请求流程跟上图一样)
- 2、绘制网页:浏览器根据HTML和CSS计算得到渲染树,绘制到屏幕上,js会被执行