从输入URL到页面展现到底发生了什么?
阅读目录
1.输入地址
2.览器查找域名的IP地址
3.浏览器向web服务器发送一盒HTTP请求
4.服务器的永久重定向响应
5.浏览器跟踪重定向地址
6.服务器处理请求
7.服务器返回一个HTTP相应
8.浏览器显示HTML
9.浏览器发送请求获取嵌入在HTML中的资源(如图片、音频、视频、CSS、JS等等)
刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入URL到页面展示到底发生了什么”,你可以搜到一大堆的资料。而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步追问下去的很多细节就不太清了。
最近刚开业在看HTTP协议相关的东西,所以想对这个话题来个深入的总结,本文的目的是通过输入url之后发生的事情来做知识的总结和扩展。所以文章可能会很杂。
1.输入地址
当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能的url了,他会从历史记录、书签等地方,找到已经输入的字符串可能对应的url,然后给出智能提示,让你可以补全URL地址。对于goole的Chrome的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下enter,页面就出来了。
1.浏览器查找域名的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地址的对应关系,而是告诉本地服务器,你的域名的解析服务器的地址。
6.最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。
知识扩展
1.什么是DNS?
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
通俗的讲,