DNS原理及指令

本文深入探讨了DNS的概念,包括其层级结构和主要资源类型。详细介绍了DNS解析流程,以及使用dig和nslookup等工具进行查询的方法,如A记录、NS记录、SOA记录、MX记录、CNAME记录、PTR记录和SRV记录。此外,还提到了host和whois指令在DNS查询中的应用。

前言

​ 本篇文章仅仅记录DNS相关学习播客和总结。

参考博客:

一、DNS概念

  • 域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
    
  • DNS的层级结构:

    • 主机名.次级域名.顶级域名.根域名 (host.sld.tld.root)

    • 示例 www.baidu.com,即:www.baidu.com., 默认省略根域名.,为DNS服务器内嵌。

      .              # 根域名
      com.           # 顶级域名,TLD
      baidu.com.     # 次级域名, sld
      www.baidu.com  # 主机名,又称为 三级域名
      

二、DNS原理及工具使用

1.dig 指令和 DNS 原理

2.DNS 主要资源类型描述

  • 参考博客:DNS中的七大资源记录介绍

  • 总结如下

    • A记录(地址记录 Address),返回域名指向的 IP 地址。

      dig 域名  # 返回域名对应的IP,如下图:有两条A记录
      

      在这里插入图片描述

    • NS记录(域名服务器记录Name Server),回保存下一级域名信息的服务器地址,用于说明这个域名有哪些DNS服务器负责解析。

      dig +trace www.tmall.com  # 分级查询查看
      # 如下图,根域名 . 可以在 a~m.root-servers.net. 服务器上查询
      # 顶级域名 com. 可以在 a.gtld-servers.net. 服务器上查询
      

      在这里插入图片描述

    • SOA记录(起始授权机构 Start of Authority),返回在众多NS记录里那一台才是主要的服务器。

      dig NS www.tmall.com # 查看DNS的NS记录
      

      在这里插入图片描述

    • MX记录(邮件记录 Mail eXchange),返回接收电子邮件的服务器地址。

      dig MX tmall.com
      

      在这里插入图片描述

    • CNAME记录(规范名称记录 anonical Name,又叫别名记录),返回另一个域名,即当前查询的域名是另一个域名的跳转。

      dig www.tmall.com  
      # 如NS记录截图
      # www.tmall.com. 别名就是 www.tmall.com.danuoyi.tbcache.com.,即通过 www.tmall.com.danuoyi.tbcache.com.做跳转到的www.tmall.com
      dig www.tmall.com.danuoyi.tbcache.com # 查看别名的记录,与 dig www.tmall.com  相比没有CNAME记录
      

      在这里插入图片描述

    • PTR记录(逆向查询记录 Pointer Record,也被称为指针记录),是A记录的逆向记录,作用是把IP地址解析为域名,DNS的反向区域负责从IP到域名的解析,因此如果要创建PTR记录,必须在反向区域中创建。

      dig x ip地址
      

      在这里插入图片描述

    • SRV记录(服务器资源记录的缩写),在RFC2052中才对SRV记录进行了定义,很多老版本的DNS服务器并不支持SRV记录。作用是说明一个服务器能够提供什么样的服务!在微软的Active Directory中有着重要地位。(详细看博客)

3.DNS 解析流程

三、指令学习

  • nslookup

    nslookup -qt=类型名 域名 DNS服务器  # 指定使用“DNS服务器” 查询 “域名" 的 "类型名" 记录
    

    在这里插入图片描述

  • host 指令,精简 dig 指令。

    host 域名 # 详见 host --help
    

    在这里插入图片描述

  • whois

    whois 域名  # 查看域名的注册情况,如: whois baidu.com
    
### DNS协议的工作机制和流程 DNS(Domain Name System)是一种用于将人类可读的域名转换为计算机可以理解的IP地址的服务。以下是关于其工作机制和流程的具体描述: #### 1. 客户端发起查询 当用户尝试访问某个网站时,应用程序会调用DNS客户端来获取该网站对应的IP地址。这一过程通常通过调用操作系统中的特定API完成,例如在基于UNIX的系统中可能使用`gethostbyname()`函数[^2]。 #### 2. 查询本地缓存 用户的设备首先会在自身的DNS缓存中查找是否存在已知的目标域名及其对应IP地址的信息。如果找到匹配项,则无需进一步操作即可返回结果;如果没有命中,则继续下一步骤。 #### 3. 联系指定或默认DNS服务器 假如未发现有效的缓存记录,那么接下来就会联系预配置好的首选DNS服务器——这通常是ISP提供的公共DNS服务之一或者是企业内部部署的安全DNS解决方案的一部分。此阶段涉及发送一个标准格式化的请求消息给选定的目的地节点,并等待响应到来。 #### 4. 进行迭代/递归查询直至获得最终答案 在此之后可能发生两种类型的处理模式: - **递归查询**:在这种情况下,初始询问者负责全程追踪直到得出确切结论为止。这意味着它可能会依次向不同层次结构下的多个权威名称服务器发出后续请求,比如顶级域(TLD)级别、次级区域等等,直至定位到具体托管所需资源记录的那个实体位置。 - **迭代查询**:相比之下,在这里每个中间环节仅需告知下一站应该去哪里寻找更多信息就够了。于是整个链条上的参与者共同协作完成了整个解析路径构建工作。 无论采取哪种方法论指导实际运作行为,最后都会到达持有目标条目详情的一方那里接受验证并反馈回去给最初提出需求的那一侧[^2]。 #### 5. 返回结果并更新缓存 一旦成功取得关联数据包后便立刻传送给原始呼叫源同时也会存储起来供将来重复利用减少未来可能出现相似场景时候额外消耗的时间成本与带宽资源开销情况发生几率提升整体效率表现水平达到优化效果目的达成预期目标设定范围之内结束当前事务周期循环回到待命状态准备迎接下一个新任务指令下达时刻的到来[^2]。 ```python import socket def resolve_domain(domain_name): try: ip_address = socket.gethostbyname(domain_name) return f"The IP address of {domain_name} is {ip_address}." except Exception as e: return str(e) print(resolve_domain("example.com")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值