【学习笔记】linux下使用nslookup工具模拟实现DNS域名解析过程

一、DNS概念

        域名系统(Domain Name System)为Internet中域名和IP地址相互映射的一个分布式数据库,用户只需通过主机名就可以访问互联网上的主机,而不用去记主机的IP地址。将主机名解析为该主机名对应的IP地址的过程叫作域名解析(或主机名解析)。DNS协议运行在TCP/IP协议族的UDP协议之上,使用端口号53。

二、DNS报文格式

DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如下所示。

事务ID(Transaction ID)标志(Flags)
问题计数(Questions)回答资源记录数(Answer RRs)
权威名称服务器计数(Authority RRs)附加资源记录数(Additional RRs)
查询问题区域(Queries)
回答问题区域(Answers)
权威名称服务器区域(Authoritative nameservers)
附加信息区域(Additional records)

1、用于区分请求和应答报文的字段是标志字段(Flags)中的QR字段,除此之外还有若干个字段,如下所示。

QROpcodeAATCRDRAZrcode

        每个字段的含义如下:

  • QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
  • Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。
  • AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
  • TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
  • RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
  • RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
  • Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
  • rcode(Reply code):返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。

2、在DNS应答报文的查询问题区域(Queries)、回答问题区域(Answers)和权威名称服务器区域(Authoritative nameservers)会有资源记录类型type,资源记录类型是用来标识需要查询/已查询到域名的各种记录。抓包如下所示:

        资源记录常见类型如下所示:

 TYPE            value and meaning
 A               1 a host address
 NS              2 an authoritative name server
 MD              3 a mail destination (Obsolete - use MX)
 MF              4 a mail forwarder (Obsolete - use MX)
 CNAME           5 the canonical name for an alias
 SOA             6 marks the start of a zone of authority
 MB              7 a mailbox domain name (EXPERIMENTAL)
 MG              8 a mail group member (EXPERIMENTAL)
 MR              9 a mail rename domain name (EXPERIMENTAL)
 NULL            10 a null RR (EXPERIMENTAL)
 WKS             11 a well known service description
 PTR             12 a domain name pointer
 HINFO           13 host information
 MINFO           14 mailbox or mail list information
 MX              15 mail exchange
 TXT             16 text strings

三、域名格式

        例如在www.baidu.com中,www是三级域名,baidu是二级域名(权威域名),com是一级域名(顶级域名),一级域名之上是根域名。他们的关系是:二级包含三级,一级包含二级...

         全球共有13组根域名服务器。

四、DNS域名解析过程

假设我们现在使用浏览器访问某域名,首先要做的事情是查看浏览器缓存中有没有对应的IP记录,同时还要查询一下主机本地文件里面有没有对应的记录。以www.bilibili.com为例,完整步骤如下所示:

五、nslookup工具模拟域名解析过程

六、相应抓包

七、文章引用

[1]沈劲桐.基于Linux环境的DNS实验设计与实现[J].科技风,2024,(33):112-115.DOI:10.19392/j.cnki.1671-7341.202433035.

[2]张久发,黄兵,许彦彬,等.一种去中心化的域名服务本地化模型[J].信息技术与网络安全,2022,41(01):30-36.DOI:10.19358/j.issn.2096-5133.2022.01.005.
 

DNS报文格式解析(非常详细) - C语言中文网icon-default.png?t=O83Ahttps://c.biancheng.net/view/6457.html

DNS域名解析过程_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1uL4y1B7aE/?spm_id_from=333.1387.search.video_card.click&vd_source=ef032b574bf3b772f8e63bd436120253

RFC官方文档链接:rfc1035.txt.pdficon-default.png?t=O83Ahttps://www.rfc-editor.org/rfc/pdfrfc/rfc1035.txt.pdf

(rfc1035只讲了DNS协议部分知识,可以看其他编号的RFC文档。) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值