如果说我们通过计算机连入了世界,那么浏览器可以算是一个看世界的窗口。那么,这个多彩的世界是如何展现在我们的面前的呢?现在我们就来看看从我们在浏览器地址栏输入一个网址到浏览器将页面展示出来这个过程发生了什么。
URL是什么
首先认识URL(Uniform Resource Locator),统一资源定位符。统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名。以http://mail.163.com/index.html为例:
- http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
- mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail.
- 163.com:这个是域名,是用来定位网站的独一无二的名字。
- mail.163.com:这个是网站名,由服务器名+域名组成。
- /:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
- index.html:这个是根目录下的默认网页。
过程
从输入URL到页面展现,包含以下过程:
- 地址栏输入URL地址。
- 域名解析。
- 服务器处理。
- 网站处理。
- 浏览器处理。
我们可以形象的认为浏览器拿着指定的购物券(URL)去买到相应的货物,然后展示在窗口。详细过程如下:
域名解析
为了便于记忆和辨识,人们使用域名来登录网站。但是为了让计算机理解这个地址还需要把它解析为IP地址。每个域名背后有对应的IP地址,每个网站就是靠IP来定位的。IP是因特网中的每台连接到网络的计算机为实现相互通信而遵循的规则协议。
在说明IP寻址之前,我们先了解DNS概念。DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。 DNS解析是浏览器的实际寻址方式
首先,我们在地址栏输入URL。浏览器会依次按下面的方法进行DNS解析域名:
- 浏览器会去自己的DNS缓存地址查看是否有当前地址的缓存记录在一定的时间之内、浏览器访问具有缓存记录的网址,浏览器直接使用缓存ip地址进行访问。
- 浏览器会从电脑C盘(windows下一般保存在C:\Windows\System32\drivers\etc)的hosts文件查找是否有存储DNS信息,查找是否有目标域名和对应的IP地址;
- 从路由器的缓存DNS信息中查找;
- ISP DNS缓存查找,从网络服务商(比如电信)的DNS缓存信息中查找;
- 经由以上三种查找方法还没查找到目标URL对应的IP的话,就会向根域名DNS服务器查找目标URL的对应IP,根域名服务器会向下级服务器转送请求,层层下发,直至找到对应IP为止。
经过以上IP寻址的过程,目标URL查找到对应的IP地址之后,通过IP地址查找到对应的服务器,浏览器将用户发起的HTTP请求发送给服务器。HTTP请求包括请求报头和请求主体两个部分,其中请求报头包含了至关重要的信息,包括请求的方法(GET / POST)、目标url、遵循的协议(http / https / ftp…),返回的信息是否需要缓存,以及客户端是否发送cookie等。下一步就到了服务器处理阶段的工作。
服务器处理
服务器:是一台安装了系统的机器,常见的系统如linux,windows server2012,系统里安装的处理请求应用叫 Web server,常用Web服务器有Apache Nginx IIS Lighttpd。对于不同用户发送的请求,会结合配置文件,把不同请求委托给服务器上处理对应请求的程序进行处理,然后返回后台程序处理产生的结果作为响应。
网站处理
网站处理,就是实际后台处理的工作。后台开发现在有很多框架,但大部分都还是按照MVC(view-model-controller)设计模式进行搭建的。
浏览器处理
通过后台处理返回的HTML字符串结果会被浏览器读取解析,对应就是HTML页面加载、解析、渲染的工作。浏览器通过上面步骤计算得到渲染树,是DOM树的可视化表示,构建渲染树使页面以正确的顺序绘制出来,遵循一定的渲染规则,经过一系列的渲染工作,实现网站页面的绘制,由此最终完成了页面展示。
后记
以上就是从URL输入到页面展示的全过程。由于时间以及学识有限,很多细节没有铺展开。继续努力学习,以后慢慢完善。