2019独角兽企业重金招聘Python工程师标准>>>
1.什么是DNS
DNS域名系统是一种适用于TCP/IP的分布式数据库,提供的功能包括:
- 主机名字和IP地址之间的转化
- 有关电子邮件的选路信息
另外DNS还规定了DNS服务器之间交换信息的报文格式,这个报文在应用层,基于UDP或者TCP
2.DNS的组织结构
DNS的组织结构需要分为两个部分来阐述,一个是存储的组织结构,另一个方面是如何管理这些DNS记录。
2.1DNS的存储结构
DNS用树状结构存储结构我们从两个方向来描述这个结构
从上到下的描述:
根部是一个没有任何标示符号的节点,然后是各种顶级和次级域名
从左到右的描述:
arpa这个域名用来做反向解析(从IP地址解析到域名,解析的过程如下,当申请到一个域名和IP的时候在这个域名下面会获得一个域名空间,即一个存储信息的节点,里面回包括域名信息,arpa的结构是,次一级为IP第一个字节,以此类推,因此127.45.67.89的反向域名就是89.67.45.127.in-addr.arpa 因为域名是从当前节点书写到根节点)
三字符的是普通域名
二子节的是基于国家代号的国家域名
2.2如何管理这些结构
网络信息中心(NIC)负责分配顶级域名和委派机构来管理相应的域(一个独立的DNS子树被称为一个域)
一个机构管理的时候,当有新的系统加入,先申请域名和IP地址存储到机构自己的DNS服务器,出于容灾考虑DNS服务器一般有两个。
3.DNS的查询格式和步骤
3.1DNS查询的步骤
服务器向根域名服务器发出查询请求,根服务器返回可以查询到的服务器列表,然后在向该服务器发送相同的请求获取结果
3.2DNS查询类型
- A 查询主机的IP地址
- PTR 指针查询,用于查询IP对应的域名地址
- CNAME,查询主机的规范名字
- MX交换记录,用来说明邮件被发到哪里,可以有多个,有自己的优先级
- HINFO,主机信息
linux下的查询举例
host -t a baidu.com
3.3DNS报文信息
基本为12子节首部和四个可以变的字段(问题,回答,授权,额外信息)
参考《TCP/IP协议详解:卷1》
4.DNS的实现考量
DNS可以基于UDP或者TCP,UDP的优点在于速度快,但是不可靠需要自己实现超时和重传的机制。
因此一般用UDP,在需要分片报文的时候需要用TCP重新传输
辅DNS服务器从主DNS服务器获取记录的时候也用的是TCP协议。