DNS协议基础

web冲浪,DNS是必不可少的协议。本文主要介绍DNS的工作机制,对DNS的某些信息(比如历史)不做介绍。

DNS是什么?

DNS是互联网世界的地址薄,类似于电话本,主要提供将域名映射到IP地址的功能。

DNS的树状层次结构

  • 第一层: 根DNS服务器,负责返回顶级DNS(TLD)服务器的IP地址。目前全世界有13台服务节点。
  • 第二层: TLD服务器,负责返回权威DNS服务器的IP地址。
  • 第三层: 权威DNS服务器,负责返回相应主机或域名的IP地址。

DNS的解析流程

在未命中缓存的情况下,DNS完成域名的解析需要经过如下步骤:

  1. 用户在浏览器中输入“example.com”, 查询由本地DNS服务(递归服务器)解析器接收。
  2. 递归服务器查询根DNS域名服务器
  3. 根DNS服务器使用顶级DNS(TLD)服务器(例如.com或.net)的地址响应给递归服务器。如:“example.com”,则返回.com TLD的IP地址。
  4. 递归服务器向.com顶级DNS(TLD)服务器发出请求。
  5. 顶级DNS(TLD)服务器响应权威DNS服务器的IP地址。
  6. 递归服务器权威DNS服务器翻出请求。
  7. 权威DNS服务器响应example.com的IP地址给递归服务器
  8. 递归DNS服务器将example.com的IP地址响应给浏览器。(DNS解析完成
  9. 浏览器向example.com的IP地址发出HTTP请求...

DNS缓存

在未命中缓存的情形下,DNS解析的流程是复杂且耗时的。DNS数据可以被缓存在多个位置,每个位置可以在一段时间内(记录生存时间TTL)缓存DNS数据记录:

  • 浏览器DNS缓存
  • 操作系统级DNS缓存
  • 递归DNS服务器级别缓存。如果域名缓存未命中,但是命中了该域名的NS记录,则跳过请求根和TLD服务器;如果没有NS记录,但是命中了TLD的记录,则跳过请求根服务器;如果没有命中TLD的记录,则要完整走完迭代访问根DNS服务器到权威服务器这一全流程了。

DNS记录类型

  • 常见类型:
  1. A记录: 域名映射的IPv4地址。
  2. CNAME记录:域名别名映射,将域名指向另外一个域名。
  3. NS记录:域名映射的权威服务器记录。
  4. AAAA记录:域名映射的IPv6地址。
  5. MX记录:域名映射的邮箱服务器地址。
  6. TXT记录:允许管理员在记录中存储文本。
  7. SOA记录:存储有关域的管理员信息。
  8. SRV记录:指定特定服务的端口。
  9. PTR记录:在反向查询中提供域名。

DNS协议报文格式

  • https://jocent.me/2017/06/18/dns-protocol-principle.html

胶水记录(Glue record)

当给域名A配置NS记录时,如果NS记录为域名A的子域名,则必须配置NS记录的A记录。

  • 通常需要在域名提供商哪里申请两个域名,而不建议采用胶水记录方式。
  • 参考链接:https://www.jianshu.com/p/7d69ec2976c7

DNS优秀的go开源项目

  • https://github.com/miekg/dns
  • https://github.com/EmilHernvall/dnsguide
  • demo: https://github.com/xly0713/xdns 😜
0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!