DNS【Domain Name System】因特网使用的域名系统,指明这种系统是应用在因特网中
域名服务器:【运行域名程序服务器的机器】
- 域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成
- 域名服务器程序在专设的节点上运行
DNS的作用:是把人们使用的机器名字转换称成IP地址
- IP地址是由32位的二进制组成,转换成主机名字更容易记忆
- 机器在处理IP数据报时,更愿意使用IP地址,是因为IP地址长度固定,处理起来比较简单
- 因特网采用层次树状结构的命名方法,并使用分布式的域名系统DNS,采用客户服务器方式
- 分布式的好处:单个计算机出了故障,也不会影响整个DNS系统正常运行
- DNS的效率很高
- 大多数的名字都在本地解析
- 少量解析在因特网上通信
- 应用进程调用解析程序,把待解析的域名放在DNS请求报文中,以UDP【用户数据报】的方式传递给本地域名服务器
- 本地域名服务器查找到该域名后,把对应的IP地址放在回答报文中返回;应用程序获得目的主机的IP地址后进行通信
- 本地域名服务器找不到该域名,就向其他域名服务器发出查询请求,直到找到能够回答该请求的域名服务器为止
主机名.次级域名.顶级域名.根域名
通常称为一个域名,但是从严格意义上来看才是一个域名
- 域名需要从右往左来看
- 每一个域名后面都有一个root表示根域名
- 每一个域名都是由标号序列组成,而标号之间用小数点隔开
- 域名中的标号由英文和数字组成,每一个标号不超过63个字符,不区分大小写
- 级别最低的写在最左边,级别最高的写在最右边
- 由多个标号组成的完整域名不允许超过255个字符
顶级域名已有265个,分为3大类
- . 国家顶级域名【nTLD】:采用ISO3166的规定
- cn代表中国
- us代表美国
- uk代表英国
- 国家域名又通常记为ccTLD【cc表示国家代码contry-code】
- . 通用顶级域名【gTLD】
- com:公司企业
- net:网络服务机构
- org:非营利组织
- int:国际组织
- gov:美国政府部门
- mil:美国军事部门
- . 基础域名结构
- arpa:用于反向域名解析
如下图所示
举个例子:
- 根域名:以表示,由多台DNS服务器组成,由不同机构管理
- 顶级域名:由数台DNS服务器组成,实现组织机构分类管理
- 二级域名:可供组织机构申请使用,必须先申请成功后才可以使用,比如:
- 子域:二级域名下可以设置多级域名。如上图的、就是的子域
- 主机域名:这三个主机的完整域名是,,,而www、ftp、mail、代表bc123的主机
在DNS中以划分区的方法来解决:【是一种树状结构】
原因:每一个节点采用一个域名服务器,会使得域名服务器的数量太多,使域名系统的运行速率降低
- 区:一个服务器所负责管辖的范围【各单位根据具体情况划分自己管辖范围的区】
- 在一个区中的所有节点必须时能够连通的
- 每一个区设置相应的权限域名服务器【保存这个区中主机到IP地址的映射】
- DNS服务器的管辖范围不是以域为单位。而是以区为单位
- 区是域的子集
举例:
假定 abc 公司有下属部门 x 和 y , 部门 x 下面有分三个分布们 u , v , w , 而 y 下面还有下属部门 t ;
对于图a来说:
- 表示 abc 公司只设一个区 abc.com ;
- 区 abc.com 和域 abc.com 指的是同一件事 ;
对于图b来说
- 表示 abc 公司划分为两个区 : abc.com 和 y.abc.com ;
- 这两个区都隶属于域 abc.com ,都各设置了相应的权限域名服务器
每一个域名服务器都能完成部分域名到IP地址的解析,当某个域名服务器不能完成IP地址的转换时,就会设法到因特网上别的域名服务器进行解析
DNS服务器按照层次安排,每一个域名服务器只对域名体系的一部分进行管辖
- 根域名服务器:层次最高的域名服务器,也是最重要的域名服务器
- 所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
- 不管是哪一个本地域名服务器,自己无法解析域名时,首先求助于根域名服务器
- 所有的根域名服务器瘫痪了,整个DNS系统就无法工作
- 根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应该找哪一个顶级域名服务器进行查询
- 顶级域名服务器:负责管理在顶级域名服务器注册的二级域名
- 权限域名服务器:负责一个区的域名服务器
- 本地域名服务器:本地域名服务器不属于下图域名服务器的层次结构,但是它的存在对域名系统非常重要
- 当一个主机发出DNS查询请求时,这个查询的请求报文就发送给本地域名服务器
- 当一个主机发出DNS查询请求时,这个查询的请求报文就发送给本地域名服务器
- 客户机提出域名解析请求 , 并将该请求发送给本地的域名服务器 ;
- 当本地的域名服务器收到请求后 , 就先查询本地的缓存 , 如果有该纪录项 , 则本地的域名服务器就直接把查询的结果返回 ;
- 如果本地的缓存中没有该纪录 , 则本地域名服务器就直接把请求发给根域名服务器 , 然后根域名服务器再返回给本地域名服务器一个所查询域 (根的子域) 的主域名服务器的地址;
- 本地服务器再向上一步返回的域名服务器发送请求 , 然后接受请求的服务器查询自己的缓存 , 如果没有该纪录 , 则返回相关的下级的域名服务器的地址 ;
- 重复第四步 , 直到找到正确的纪录 ;
- 本地域名服务器把返回的结果保存到缓存 , 以备下一次使用 , 同时还将结果返回给客户机;
下边是我自己画的图,方便理解
- 递归查询【本机–>本地域名服务器】
- 如果本地域名服务器不不知道被查询的IP地址,那么本地域名服务器代替主机查询 ,向其他根域名服务器继续发送查询的请求报文
- 递归查询返回的结果是:要查询的ip地址要么是报错
- 迭代查询【本地域名服务器–>根域名服务器】
- 根域名服务器收到本地域名服务器的查询报文时,要么给出ip地址,要么告诉本地域名服务器下一步该向哪一个域名服务器查询,让本地域名服务器进行后续的查询
- 一般是根域名服务器把自己知道的顶级域名服务器的ip地址告诉本地域名服务器,让本地域名服务器向顶级域名服务器进行查询
- 顶级域名服务器要么给出所查询的ip地址,要么告诉本地域名服务器下一步应该向哪一个权限域名服务器进行查询,然后将这个结果返回给要查询的主机
DNS拦截属于HTTP拦截的一种,HTTP劫持分为:
- DNS拦截【域名劫持】
拦截域名解析的请求,使用造假的DNS解析服务器返回假的IP地址或者不返回响应- 解决办法
- 使用自己的解析服务器,不使用运营商的
- 提前在自己网站中将解析好的域名以IP地址发送出去,绕过运营DNS解析
- 解决办法
- 内容劫持
修改缓存池中的内容,非法商家将缓存池中的内容做修改,使请求收到错误的数据
- A记录
A记录【Address】,用来指定域名对应的IP地址记录
用户可以将该域名下的网站服务器指向自己的web server上,同时也可以设置域名的二级域名 - MX记录
【邮件路由记录】,用户可以将该域名下的邮件服务器指向自己的mail server 上,然后可自行操控所有的邮箱设置,(只需要填写自己服务器的IP地址,就可以将域名下的邮件全部转到自己设定的响应邮件服务器上) - CNAME记录
【别名记录】,这个记录允许多个域名映射到同一台计算机上。通常用于同时提供www和mail 服务的计算机
例如:有一台计算机为host.mydomian.com,他可以同时提供www和mail 服务,为了帮助用户访问,就可以设置两个别名,全称分别是www.mydomian.com 和 mail.mydomian.com,实际上他们都指向host.mydomain.com - TTlL值 本文地址:http://lianchengexpo.xrbh.cn/quote/12511.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多