DNS查询有递归和迭代两种形式
在网络边缘, 常常为递归查询, 这样也方便边缘服务器进行缓存;
在网络核心, ISP(不含)往上, 如TLD或者根服务器, 都是迭代查询, 因为要保证服务器的性能
网络域也可以是私有的, 比如A.HOME就属于.HOME域
在这里稍微拽一下: 如果系统配置了默认域名搜索列表, 那么DNS查询EXAMPLE.COM
会先查询EXAMPLE.COM.HOME
, 如果查询失败, 才会继续查询真正的EXAMPLE.COM
DNS消息格式
- 事务ID
- QR: 查询还是响应
- opcode: 操作码: 正常查询/ DNS NOTIFY/ DNS UPDATE
- AA: 权威
- TC: 截断回答, 不是我原来发的, 中间被改过了, 大多数原因因为UDP包太大被截断
- RD: 期望递归
- AD: 真实数据, 信息是否是
已授权
的 - CD: 禁止安全检查
- RCODE: 错误码
DNS数据压缩
之前出现过的数据, 后来出现时可以通过指针指向偏移, 这样可以压缩DNS数据大小
资源类型
A/ AAAA记录
常规域名->地址转换
NS
谁提供的服务
CNAME
名字映射为另一个
ANY
请求任意记录
PTR
逆向查询 , 通过IP查域名.
使用了特殊的in-addr.arpa
域, 地址逆着写
如:
> nslookup
> server b.in-addr.arpa.
> set type = ptr
> 81.131.229.169.in-addr.arpa
这是查询169.229.131.81的方式, 之后终端会返回169的DNS域:w.arin.net
, 修改server, 反复查询.
如果是查询无类别域名, 要提供子网掩码,
SOA
权威记录查询
MX
邮件交换记录, 会返回中继服务器, 即使最终邮件服务器不在线, 也可以投到中继服务器上
MX有助于打击垃圾邮件, 通过设置SPF(发送方策略框架), 指名那些服务器被授权发送来自该域的邮件. 中继服务器在收到邮件后查询SPF, 决定怎么处理(pass/ fail/ neutral/ soft fail)
SRV
查询开启了的服务在哪个端口
> host -t srv _ldap._tcp.opemldap.org
查询基于tcp的ldap服务在哪个端口
eNUM
可以查手机号, 用于VoLTE, 中国是6.8.e164.arpa
动态更新( DNS UPDATE)
向已有的应答追加记录
区域传输
主DNS服务器和备用服务器同步, 使用TCP传输.
全量/ 增量传输.
增量传输中, 从服务器定期发送DNS NOTIFY检查自己的序号和主服务器是否相等
网友评论