先贴上网上的介绍
域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
简单来说就是,浏览器根据DNS来解析域名然后得到服务器的IP地址
详细点说就是,客户端浏览器先查询自身缓存,如果没有就再逐级查询直到查询到结果,或者直到根域名服务器都没有查询到则返回错误信息。
域名结构
从语法上讲,每个域名都由标号(label)序列组成,而各标号之间用点隔开,
例如
mail.cctv.com
三级域名 | 二级域名 | 顶级域名 |
---|---|---|
cctv | com |
顶级域名分类
- 国家顶级域名 [nTLD / cc(country-code)TLD],例如:cn 代表中国、us 代表美国
- 通用顶级域名 [gTLD],例如:com(公司企业),net(网络服务机构),org(非营利性组织)等等
- 基础结构域名,这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称方向域名
注:国家顶级域名下注册的二级域名均由该国家自行确定。一旦某个单位拥有了一个域名,它就可以自己决定是否要进一步划分其下属的子域,并且不必由上级结构批准,这类域名就是顶级域名下的权限域名
DNS 解析过程
-
查找浏览器是否缓存过该域名对应的IP地址
用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的地址,当用户再次访问的时候,浏览器就会从缓存中查找该域名对应的IP地址,因为缓存不仅是有大小限制,而且还有时间限制(域名被缓存的时间通过属性来设置),所以存在域名对应的找不到的情况。当浏览器从缓存中找到了该网站域名对应的地址,那么整个解析过程结束,如果没有找到,将进行下一步骤。对于的缓存时间问题,不宜设置太长的缓存时间,时间太长,如果域名对应的发生变化,那么用户将在一段时间内无法正常访问到网站,如果太短,那么又造成频繁解析域名。 -
如果在浏览器缓存中没有找到IP,那么将继续查找本机系统是否缓存过IP
如果第一个步骤没有完成对域名的解析过程,那么浏览器会去系统缓存中查找系统是否缓存过这个域名对应的地址,也可以理解为系统自己也具备域名解析的基本能力。在系统中,可以通过设置文件来将域名手动绑定在某文件位置上。例如 windows 操作系统的 host 文件。上面两步都是在本机上完成,还并没有向远程的域名系统发起请求服务。 - 如果在本机上无法完成域名解析,系统就请求本地域名解析服务系统(就是本地区的域名服务器,例如校园网,域名解析系统就在校园机房;接的是电信,移动或者联通网,那么本地域名解析服务器就在本地区,由各自的运营商来提供服务)进行解析。
- 大部分域名解析过程到第三步就结束了,如果还没查到的话,本地域名服务器就向DNS根解析服务器发起域名解析请求
- DNS根服务器返回所查域的顶级域名服务器的地址给本地域名服务器,然后本地域名服务器向顶级域名服务器进行查询
- 顶级域名服务器告诉本地域名服务器,下次应该查询的权限域名服务器的IP地址
- 本地域名服务器向权限域名服务器进行查询,并返回查询到的IP地址
- 本地域名服务器得到权限域名服务器查询的结果,缓存解析后的结果,然后返回给本机IP
总结:
1. 主机向本地域名服务器查询一般采用的是递归查询。所谓递归就是:如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份向其他根域名服务器继续发出查询请求报文(即替该主机继续查询而不是让该主机自己进行下一步查询)。因此,递归查询返回结果或者是所需要查询的IP地址。
2. 本地域名服务器向根域名服务器的查询通常采用的是迭代查询。迭代查询的特点是:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步要向哪个域名服务器进行查询,然后让本地域名服务器进行后续查询(而不是替本地域名服务器进行后续查询)
网友评论