DNS:domain name server
- 域名系统介绍;
- 两种查询异同
- 数据格式;
1. 域名系统概述
域名系统是为了将便与人类记忆的域名转换为便于机器处理的32位ip地址;
域名采用层次树状结构命名,域名系统DNS是联机分布式的系统。单电系统的缺点是:
- 单点故障导致网络系统瘫痪;
- 流量大;
- 地理分布不均,导致距离dns服务器较远的请求RTT时间大;
为了减小开销,传输层使用的是UDP协议
1.1 因特网的域名结构
因特网的域名结构是树装层次结构,这种命名方法可以使因特网上的主机或者路由器都有一个唯一的层次结构的名字,即域名。
示例如www.cctv.com
标点符号之间的部分叫标号(label),每个标号不超过63个字符,域名总长度不超过255字符,下级域名个数不受限,各级域名由上级域名直接管理,不受上上级机构限制。
域名只是逻辑概念,不是计算机所在的物理位置;
顶级域名(TLD:top level domain)分为3部分:
- 代表国家的顶级域名,例如cn;
- 通用顶级域名,比如com公司企业、net网络服务机构、org非营利组织、int国际组织、edu美国教育机构专用(中国是edu.cn),gov政府部门(同理中国家cn后缀),mil美国军事部门;
- 基础结构域名:只有arpa一个,用于反向域名解析;
域名树示例如下:
- 例如
mail.cctv.com
,com是顶级域名,然后之前cctv和mail分别是二级域名和三级域名,只和他们为之有关,与命名无关,见上图"mail"; - 域名树的叶子就是单台计算机的名字,不能在继续划分子域。
1.2域名服务器
每个域名服务器所负责管辖的范围叫做区(zone),此域名服务器叫做权限域名服务器(authoritative name server),区是域的子集,示例如下:
域名服务器大致分为4总,分别是根域名服务器root name server、顶级域名服务器TLD服务器、权限域名服务器和本地域名服务器local name server。具体含义如下:
- 根域名服务器有13个,对应13个ip地址,但是不仅仅是13台机器,而是13套装置(installations),北京、台北和香港分别有一台;
- 同上,有多个根域名服务器节点,为了加快解析速度,根域名服务器采用了任播(anycast)技术使得英特网上的路由器可以找到距离请求客户最近的根域名服务器;
- 本地域名无法解析客户端发送的解析请求时,首先会求助于根服务器;
- TLD服务器:负责管理该顶级域名下所有二级域名,对请求的相应可能是结果,也可能是告知用户去哪一个服务器去查询;
- 权限域名服务器:如上,负责一个区的域名服务器;
- 本地域名服务器不在示意图中,但是在诸如大学、公司等组织中,可以有自己的一台或者多态本地域名服务器,又称“默认域名服务器”。本地域名服务器是客户请求的第一站;
为了保障服务可靠性,NDS服务器也使用了主从复制,只有主服务器可写,并定时想其他服务器更新数据由此保证一致性。
域名解析过程一般分为递归查询recursive query和迭代查询iterative query。示意图如下:
- 迭代查询:根服务器告知本地服务器去哪个顶级域名服务器查询,TLD服务器再告知LDS去哪个服务器查询;
- 递归查询:此级域名服务器不知道结果时,代替请求端向下一个域名服务器发出查询请求,结果同理一层层返回;
为了提高效率、减轻根域名负荷以及减少因特网上DNS查询报文数量,域名服务器中广泛使用缓存。为了保证缓存中数据正确,服务器应当为每一项数据设置有效期。
3. 消息记录和消息格式
DNS记录(RR:resource record)格式如下:
RR format(name,value,type,ttl)
,ttl指这条记录的有效期(time to live),在不同的type类型时name和value有不同的含义,如下图:
- type=A:name是主机域名、value是IP地址;
- type=NS:name是域(edu.cn)、value是负责解析该域的主机服务器域名;
- type=CNAME:name是正式域名的别名、value是真实的域名,例如www.baidu.com和www.a.shifen.com;
- type=MX:value是与那么对应的邮件服务器;
DNS消息格式
DNS消息格式及其占位如下图所示:
- 16位的ID:请求及其相应ID相同;
- QR标记,标识其实请求还是响应;
- Opcode:4位标识,标志着查询类型,回复相同:标准查询、反向(inverse)查询、服务状态查询等;
- AA:权威回答authoritative answer;
- RD:期望递归...
- QDCOUNT:query的name、type;
- ANCOUNT:响应的RRs(消息记录);
请求与相应的消息格式是一样的,Wireshark抓包示例如下:
4.其他
当注册域名时,顶级域名管理机构会向域名服务器中插入两条记录:
(域名,解析该域名的服务器域名,NA)
(解析该域名的服务器域名,IP,A)