DNS(域名系统) 与 DNS域名解析
DNS的全称是domain name system,即域名系统。DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的去访问互联网而不用去记住能够被机器直接读取的IP地址。比如大家访问百度,更多地肯定是访问www.baidu.com,而不是访问112.80.248.74,因为这几乎无规则的IP地址实在太难记了。DNS要做的就是将www.baidu.com解析成112.80.248.74。
一个域名对应一个IP地址,而一个IP地址可以绑定多个域名。
域名解析流程是怎样的?
- 在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个域名的映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果hosts文件中没有,则查询本地DNS解析器缓存,如果有,则完成地址解析。
- 如果本地DNS解析器缓存中没有,则去查找本地DNS服务器,如果查到,完成解析。
- 如果没有,则本地服务器会向根域名服务器发起查询请求。根域名服务器会告诉本地域名服务器去查询哪个顶级域名服务器。
- 本地域名服务器向顶级域名服务器发起查询请求,顶级域名服务器会告诉本地域名服务器去查找哪个权限域名服务器。
- 本地域名服务器向权限域名服务器发起查询请求,权限域名服务器告诉本地域名服务器www.baidu.com所对应的IP地址。
- 本地域名服务器告诉主机www.baidu.com所对应的IP地址。
主机向本地域名服务器的查询一般是采用递归查询,而本地域名服务器向根域名服务器的查询一般是采用迭代查询。
简单来说,递归查询就是,A问B,B不知道,B再问C,然后C回复B,B回复A
迭代查询就是,A问B,B不知道,B让A取问C,C回复A
DNS是集群式的工作方式 集群式 还是 单点式的,为什么?
是集群式的。如果把所有域名与IP地址之间的映射都存储在一个DNS服务器,那这个唯一的DNS服务器万一出了故障,那么就全完了,因特网就几乎崩了。为了避免这种情况出现,DNS系统采用的是分布式的层次数据数据库模式。
DNS使用的协议
既使用TCP又使用UDP
-
区域传送时使用TCP,主要有一下两点考虑:
- 辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。这个数据量非常大,需要用TCP。
- TCP是一种可靠的连接,保证了数据的准确性。
-
域名解析时使用UDP协议: 客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,
DNS劫持
DNS劫持就是通过劫持了DNS服务器,修改域名的解析结果,用户得到假的IP,从而访问错误的网页。例如:输入Google的域名,跳转到的是baidu的页面。
解决方案
1、换个DNS 2、工信部投诉(DNS劫持问题的终结者!)
HTTP劫持
劫持者修改response信息,让浏览器弹出一些垃圾信息,比如广告。
解决方案
1、使用https