深刻理解输入域名,到拿到首页的所有细节过程 以访问百度为例
目录
从输入url到页面展示总共经过如下几个过程:
- 域名解析(获得IP地址)
- 向WEB服务器发送HTTP请求
- 服务器处理请求
- 服务器返回HTTP响应
- 浏览器显示页面信息
一、输入地址
网址,即URL,被解析为若干部分。例如对于www.baidu.com,实际上它的完整形式是:http://www.baidu.com:80/。
其中包括了以下部分:
协议:http
域名:www.baidu.com。其中baidu.com是百度的域名,www是这个域名下的二级域名。
端口:80
路径:/
当输入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
1. 什么是DNS
DNS(domain name system,域名系统):因特网上域名和IP地址相互映射的分布式数据库;简单理解就是域名与IP地址的对照表,因为域名(如:www.google.com)对于我们而言,更便于记忆,但是机器却不擅长这种表达方式,因此需要将域名转换为IP地址,以便于机器识别, 这便有了DNS。
2. 根域名服务器
根服务器是