当用户在浏览器中输入了 baidu.com,页面展示百度首页,整
1.协议 URL
首先当用户输入baidu.com,浏览器会自动补全为 https://www.baidu.com。
其中https://www.baidu.com”为URL。URL一般包含协议、端口号、域名还有其他信息。
URL:统一资源定位器,用于定位互联网上的资源,俗称网址!
协议:协议有 http、https 、ftp、file协议。
其中的“baidu.com”才是域名。
2.域名解析
浏览器通过域名“baidu.com”查找所在服务器的IP地址。
为什么要解析?
DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程。在浏览器中输入www.baidu.com时,其实不是百度网站真正意义上的地址。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆。用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机,也就是上面提到的百度的网址。所以互联网设计者需要在用户的方便性与可用性方面做一个权衡,这个权衡就是一个网址到IP地址的转换,这个过程就是DNS解析。它实际上充当了一个翻译的角色,实现了网址到IP地址的转换。网址到IP地址转换的过程是如何进行的?
域名解析流程
域名解析是一个递归查询的过程。
- 浏览器缓存
浏览器会首先向浏览器缓存查询,如果浏览器访问过baidu.com这个域名的IP地址,它会将这个域名的IP地址缓存一段时间。当用户再次输入该域名查找IP地址时,通过查询浏览器缓存它就能知道该域名的IP地址,就能直接访问IP地址了。如果没有就进行下一步。
2.系统缓存
如果浏览器在浏览器缓存中没有找到,浏览器就会从系统缓存Hosts文件中查找是否有相对应的IP。如果没有就进行下一步。
3.路由器缓存
如果系统缓存中也没有,就会从路由器中继续查找,一般路由器中也会缓存域名信息。如果还没有找到就进行下一步。
4.LSP DNS缓存
上面都找不到,就会找LSP缓存,也就是你的服务商,例如到电信的DNS上查找缓存。
5.根服务器
如果都找不到,则向根域名服务器查找域名对应IP,根域名服务器把请求转发到下一级,直到找到IP。
根服务器主要用来管理互联网的主目录,全世界只有13台(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。
3.服务器处理
服务器接收处理用户要打开baidu.com域名的Request(请求)。
- 服务器是一台安装系统的机器,常见的系统如Linux、windowns server 2012,系统里安装出来请求的应用叫web server。
- 常见的web服务器有Apache、Ngins、lls、Lighttpd。
- web服务器接收用户的Request(请求)交给网站代码,或者接受请求反向代理到其他web服务器。
4. 网站处理流程
服务器接收到baidu.com的请求,通过后端语言交由控制器从模型里面查找,模型通过数据库返还数据给控制器。
控制器再将数据交由视图模版,视图模板将数据组合成HTML,组合好之后发回控制器,并将代码发给浏览器。如下图
5. 浏览器处理
- HTML字符串被浏览器接受后被一句句解析
- 解析到link 标签后重新发送请求获取CSS
- 解析到script 标签后重新发送请求获取js,并且执行代码
- 解析到img 标签后重新发送请求获取图片资源
- 请求方式与第一次请求HTML过程相同,浏览器会把HTML会把里包含的链 接,图片资源等等再请求一次,所以浏览器会发很多请求
当资源都到了之后 浏览器会根据HTML和css计算得到渲染树,将其绘制到屏幕上,JS也会被执行。
6. 总结
当用户在浏览器中输入baidu.com,浏览器会通过域名解析找到该域名的IP地址,并且向该IP地址的服务器发送请求HTML代码,服务器通过MVC将HTML代码返回给浏览器,浏览器根据服务器返回的HTML及HTML代码中资源,链接等计算得出渲染树并最终将其绘制在屏幕中