【面试试题】——在浏览器输入网址,直到页面出现,之间发生了什么?

【面试试题】——在浏览器输入网址,直到页面出现,之间发生了什么?

从一道阿里面试题谈起:html

 

    用户在浏览器中输入www.taobao.com直到看到页面之间发生了什么?注:本文转载自博客,并不是本人原创,这里只参考学习前端


 

前端面试时基本上都会被问到这类关于http协议相关的内容,不止是为了应对面试,实际开发时也会一直用到http协议的知识,所以,整理一下这方面内容很是有必要。web

回到上面的问题,这个过程大体分以下几步:面试

  • 操做系统(window)访问网络上DNS服务器,或把域名转换为IP地址DNS【www.taobao.com 60.28.242.250】
  • 浏览器发起HTTP请求
  • web服务器接收并解析请求消息,查找指定资源,可能访问数据库,构建并返回HTTP响应消息
  • 浏览器接收并解析响应消息
  • 浏览器(缓存)接收到解析内容,并解析和渲染响应内容

一、输入地址数据库

        当咱们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能的 url 了,它会从历史记录、书签等地方找到已经输入的字符串可能对应的 url,而后给出智能提示,让你能够补全url地址。 Chrome 浏览器甚至会直接从缓存中把网页展现出来,也就是说,你尚未按下 Enter,页面就出来了。windows

 

二、浏览器查找域名的 IP 地址  浏览器

        (1)、请求一旦发起,浏览器首先要作的事情就是解析这个域名,通常来讲,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,若是有的话就直接使用 hosts 文件里面的 ip 地址。缓存

         (2)、若是在本地的 hosts 文件没有可以找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地的DNS服务器 ,本地DNS服务器通常都是由你的网络接入服务器商提供,好比中国电信、中国移动。安全

        (3)、你输入的网址的DNS请求到达本地DNS服务器以后,本地DNS服务器会首先查询它的缓存记录,若是缓存中有此条记录,就直接返回结果,此过程是递归的方式进行查询。若是没有,本地DNS服务器还要向DNS根服务器进行查询。服务器

        (4)、根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你能够到域服务器上去继续查询,并给出域服务器的地址,这个过程是迭代的过程。

        (5)、本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器, .com域服务器收到请求以后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器请求的域名的解析服务器地址。

        (6)、最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不只要把IP地址返回给用户电脑,还会把这个对应关系保存在缓存中,以备下次别的用户查询时,能够直接返回结果,加快网络访问。

        下面这张图很完美的解释了这一过程(盗图,感谢原做者):

 

概念解释:

1. 什么是URL?

        统必定位资源符,英文全称为Uniform Resource Locator,是对能够从互联网上获得的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每一个文件都有一个惟一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。它最初是由蒂姆·伯纳斯·李发明用来做为万维网的地址。如今它已经被万维网联盟编制为互联网标准RFC1738了。

        URL有以下常见传输协议:

  • http——超文本传输协议

  • ftp——文件传输协议

  • file——主要用于访问本地计算机中的文件

  • https——数据通过加密的超文本传输协议

        注:开头只有//不是协议,表明该URL的协议与当前页面一致。

 

2. 什么是IP与IP地址?

        IP是在TCP/IP协议中网络层的主要协议,任务是根据源主机和目的主机的地址传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。

        IP是分配给网络上使用网际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类。IP地址至关于一台主机的门牌号。

        IP地址根据网络ID的不一样分为A,B,C,D,E 五类,其中最经常使用到的是A类B类和C类,常以32二进制组成常以XXX.XXX.XXX.XXX形式表现,每组XXX表明小于或等于255的10进制数。

        公网IP:是由国际互联网分配的惟一的IP地址,是个静态IP地址。

        内网IP:由路由器创建子网分配IP地址。

 

3. 服务器

        服务器,也称伺服器,是提供计算服务的设备。因为服务器须要响应服务请求,并进行处理,所以通常来讲服务器应具有承担服务而且保障服务的能力。

        服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构相似,可是因为须要提供高可靠的服务,所以在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

        在网络环境下,根据服务器提供的服务类型不一样,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

 

        常见的系统如Linux、windows server 2012。常见的web服务器有Apache、Nginx、IIS、Lighttpd等。

 

4. 什么是DNS?

        DNS(Domain Name System,域名系统),因特网上做为域名和IP地址相互映射的一个分布式数据库,可以使用户更方便的访问互联网,而不用去记住可以被机器直接读取的IP数串。经过主机名,最终获得该主机名对应的IP地址的过程叫作域名解析(或主机名解析)。

        通俗的讲,咱们更习惯于记住一个网站的名字,好比www.baidu.com,而不是记住它的ip地址,好比:167.23.10.2。而计算机更擅长记住网站的ip地址,而不是像www.baidu.com等连接。由于,DNS就至关于一个电话本,好比你要找www.baidu.com这个域名,那我翻一翻个人电话本,我就知道,哦,它的电话(ip)是167.23.10.2。

        DNS劫持:将系统缓存hosts文件里的域名对应的IP改为其余IP,导致用户访问该域名时访问到其余的网站。

 

5. DNS查询的两种方式:递归查询和迭代查询

(1)、递归解析

         当局部DNS服务器本身不能回答客户机的DNS查询时,它就须要向其余DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器本身负责向其余DNS服务器进行查询,通常是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后获得的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

 

 

(2)、迭代解析

        当局部DNS服务器本身不能回答客户机的DNS查询时,也能够经过迭代查询的方式进行解析,如图所示。局部DNS服务器不是本身向其余DNS服务器进行查询,而是把能解析该域名的其余DNS服务器的IP地址返回给客户端DNS程序,客户端DNS程序再继续向这些DNS服务器进行查询,直到获得查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。好比说:baidu.com的服务器ip地址在192.168.4.5这里,你本身去查吧,本服务器比较忙,只能帮你到这里了...

 

 

未完待续

 

posted @ 2017-10-29 01:01 柳洁琼Elena 阅读( ...) 评论( ...) 编辑 收藏