简述从URL输入到界面展示的过程
从用户在浏览器首页输入网址(列如baidu.com)到最终页面展现出百度搜索的首页,其实一共要经过6个步骤。分别是在浏览器输入URL、域名解析、服务器处理、网站处理流程、浏览器处理、绘制界面。在详细讲述每个过程之前,我们要先了解一下几个名词。
1.什么是URL?
URL(英文Uniform Resource Locator的缩写)其实就是网址,全称是统一资源定位符,用于定位互联网上的资源。URL由三个部分组成:资源类型、存放资源的主机域名、资源文件名。
介绍一下几个常用的协议:
http--超文本传输协议资源;
https--用安全套接字层传送的超文本传输协议;
ftp--文件传输协议;
file--当地电脑或者网上分享的文件;
2.什么是IP地址?
IP地址是指互联网协议地址,它是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IP地址是一个32位的二进制数,通常是被分割为4个“8位二进制数”,常用“点分十进制”法表示成(a.b.c.d)的形式。常见的IP地址分为IPv4和IPv6两大类。
3.什么是域名?
域名(Domain Name)是由一串用点分隔的名字组成的Internet上某一台计算机或者计算机组的名称,用于在数据传输是标识计算机的电子方位(有时也只物理地址),对于https://baidu.com/,其中baidu.com就是域名。
介绍了两个需要了解的名词之后接下来就来详细介绍具体五个过程:
一 、在浏览器输入URL
首先我们在浏览器主界面输入栏中输入baidu.com,当你点击搜索时候浏览器会自动将地址补全为https://baidu.com/。在这里我们就看到了前面介绍的https协议。
二、域名解析
域名解析就是把域名指向网站空间IP,让人们通过域名就可以快速的访问到网站。其主要过程是:
(1)查询浏览器缓存——浏览器会在自身缓存的DNS记录中去查找有关于https://baidu.com/的IP。
(2)系统缓存——如果第一步查不到的话,则会从系统的hosts文件中去查找是否有关于该域名和对应IP。
(3)路由器缓存——如果还没查到,则通过路由器缓存的有关域名和IP信息中去查找相关信息。
(4)ISP,DNS缓存——若还是不能查到的话,则从ISP和DNS中缓存的信息去查看,就是从互联网提供商那里去查找。
(5)若以上4步都不能查找到对应IP的话,则向根域名服务器查找对应IP,根域名服务器会把请求转发到下一级,指导查找到对应IP。
三、服务器处理
服务器就是一台安装了系统的机器,常见的系统有Linux、Window Server 2012,在系统里安装的处理请求的应用叫Web Server。web服务器接收用户的Request交给网站代码或者接收请求反向代理到其他web服务器。
常见的web服务器有Apache、Nginx、IIS、Lighttpd
四、网站处理流程
MVC模型(model)——视图(view)——控制器(controller)
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
其大致过程就是:控制器在接收到用户请求时会调用相关模型进行处理,模型则根据数据库的相关内容和有关规则去处理用户发出的请求,再返回字符串给浏览器。
五、浏览器处理
HTML字符串被浏览器接收后被一句句读取解析
解析到link标签后重新发送请求获取css
解析到script标签后发送请求获取js,并执行代码
解析到img标签后发送请求获取图片资源
六、绘制网页
浏览器根据HTML和CSS计算得到渲染树,绘制到屏幕上,js会被执行。
总结:经过以上6个步骤,就能够实现只需要输入网址就能得到网址页面,其中我只介绍了重要步骤,具体极为详细的过程就没有详述,比如浏览器与服务器建立连接的TCP/IP三次握手。如果读者比较感兴趣的话,可以自行查阅相关资料了解。