从输入url到页面展示到底发生了什么
Posted zc-lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从输入url到页面展示到底发生了什么相关的知识,希望对你有一定的参考价值。
从输入url到页面展示到底发生了什么
|-- 域名解析(获得IP地址)
|-- 向WEB服务器发送HTTP请求
|-- 服务器处理请求
|-- 服务器返回HTTP响应
|-- 浏览器显示页面信息
- 输入地址
当输入url地址后,浏览器已经在智能匹配地址了,会从历史记录、书签或缓存中查找,如果找到了,会从缓存中调出页面显示出来,在你还没有按“enter”之前
- 浏览器查找域名的IP地址
浏览器查找域名的IP地址按照以下几个步骤进行(这是你输入url,按了enter之后):
首先会在浏览器的缓存中查找是否有该域名对应的IP地址,如果有,则直接返回该IP地址;如果没有,则查找本地硬盘上的`hosts`文件中是否有,如果有,则返回对应的IP地址;如果没有,则查找`路由器缓存`中是否有对应的IP地址,如果有,则返回;
如果在浏览器缓存中、hosts文件中、路由器缓存中都没有找到ip地址,则浏览器会发起一个DNS请求到`本地DNS服务器`,本地DNS服务器一般是由你的网络接入服务器商提供,如:电信、移动;
DNS请求到达本地DNS服务器后,本地DNS服务器会先在自己的`缓存中`查找,如果找到了就返回找到的IP,这个过程是以递归的方式进行的;如果没有,则本地DNS服务器继续向`根DNS服务器`发起请求;
`根DNS服务器`并没有记录域名与IP的对应关系,而是告诉本地DNS服务器,可以到哪个`顶级域名服务器`上查询,并给出该顶级域名服务器的地址,此过程是以`迭代的方式`进行的;
本地DNS继续向顶级域名服务器发出查询请求,顶级域名服务器接收到请求后,会告诉本地DNS到`权限域名服务器`上去查询;
本地DNS继续向权限域名服务器发出查询请求,权限域名服务器查询到域名对应的IP后,将IP地址返回给本地DNS,本地DNS接收后将其`保存到自己的缓存中`,以备下次查询,提高查询速度;至此,一个IP地址的查询就此结束;
DNS解析是一个递归查询的过程:
注意:DNS域名解析是以递归的方式进行的
知识拓展
- 什么是DNS
DNS(domain name system,域名系统):因特网上域名和IP地址相互映射的分布式数据库;简单理解就是域名与IP地址的对照表,因为域名(如:www.google.com)对于我们而言,更便于记忆,但是机器却不擅长这种表达方式,因此需要将域名转换为IP地址,以便于机器识别, 这便有了DNS。 - 根域名服务器
根服务器是架设互联网的必须设施,管理互联网的主目录,全球共有13套根域名服务器 - 递归查询
客户端主机向本地域名服务器的查询是递归查询;所谓递归查询:客户端主机查询的域名地址无法在本地域名服务器中找到,因此本地域名服务器就以DNS客户端的身份向其他根域名服务器发起请求,进行查询,而不是让客户端主机去一直查询;
递归查询的结果要么是返回的IP地址,要么是报错,表示无法查询到地址; - 迭代查询
本地域名服务器向根服务器、顶级域名服务器和主机域名服务器发起的查询请求就是迭代的过程,如:本地域名服务器向根服务器发起查询请求,根服务器中会告诉本地域名服务器:”我这里没有你要找的内容,你去顶级域名服务器上找吧“,并将顶级域名服务器的地址返回给本地域名服务器,本地域名服务器接收到后,继续向顶级域名服务器发送请求;顶级域名服务器要么返回ip地址,要么告诉本地域名服务器下一步要向哪个权限域名服务器发送请求,直到找到ip地址或找不到ip返回报错信息,然后信息返回给客户端主机; - 下图给出了这两种查询的差别
递归过程:主机→本地DNS服务器→其他DNS服务器(如:我要找一个苹果吃,找到了A,问A有没有,A说我帮你去找B,B可能有,果真B有,然后B将苹果给了A,A再将苹果给我,这就是递归)
迭代过程:本地DNS服务器→根服务器,本地DNS服务器→顶级域名服务器,本地DNS服务器→权限域名服务器;(如:我要找一个苹果,找到了A,A说我也没有,B可能有,你去找B吧;我又找B,B说我也没有,你去找C吧,我又去找C,终于找到了苹果,这就是迭代的过程)
- 浏览器向WEB服务器发送Http请求
以上是关于从输入url到页面展示到底发生了什么的主要内容,如果未能解决你的问题,请参考以下文章