DNS协议

DNS报文结构

DNS报文分为查询请求报文和查询相应报文,两类报文结构基本相同,结构如下:

报文每行为4个字节,其中前12个字节节(前三行)为基础部分,后四行为可变长度的区段,包括问题部分(即查询问题区域,存在于查询请求报文)和响应资源记录(后三行,存在于响应报文中)。

基础部分

该部分中每个字段含义如下。

事务 ID

DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。

标志

DNS 报文中的标志字段。

  1. QR(Query/Response Flag) 是 1 bit 字段:0 表示查询报文,1 表示响应报文。
  2. opcode 是一个 4 bit 字段:通常值为 0(标准查询),其他值为 1(反向查询)和 2(服务器状态请求)。
  3. AA 是 1 bit 标志,表示 “授权回答(Authoritative Answer)” 。该名字服务器是授权于该域的。
  4. TC 是 1 bit字段,表示 “可截断的(Truncated)”。使用 UDP 时,它表示当应答的总长度超过 512 字节时,只返回前 512 个字节。
  5. RD 是 1 bit字段 表示 “期望递归(Recursion Desired)”。 该比特能在一个查询中设置,并在响应中返回。 这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。 如果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
  6. RA 是 1 bit 字段,表示 “可用递归(Recursion Available)”。 如果名字服务器支持递归查询,则在响应中将该比特设置为 1。 在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。
  7. 随后的 3 bit 字段必须为 0。
  8. rcode(Response Code) 是一个 4 bit 的返回码字段。通常的值为 0(没有差错)和 3(名字差错)。 名字差错只能从一个授权名字服务器上返回,它表示在查询中指定的域名不存在。

计数/记录数

随后的 4 个 16 bit 字段说明最后 4 个变长字段中包含的条目数。对于查询报文,问题(question)数通常是 1,而其他 3 项则均为 0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是 0 或非 0

问题部分

问题部分的格式如下,该部分是用来显示 DNS 查询请求的问题,通常只有一个问题。该部分包含正在进行的查询信息,包含查询名(被查询主机名字)、查询类型、查询类。

查询名(QName)是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度, 每个名字以最后字节为 0 结束,长度为 0 的标识符是根标识符。 计数字节的值必须是 0 ~ 63 的数,因为标识符的最大长度仅为 63 (在本节的后面我们将看到计数字节的最高两比特为 1,即值 192 ~ 255,将用于压缩格式)。 不像我们已经看到的许多其他报文格式,该字段无需以整 32 bit 边界结束,即无需填充字节。图 14-6 显示了如何存储域名 gemini.tuc.noao.edu。

每个问题有一个查询类型(QType),而每个响应(也称一个资源记录,我们下面将谈到)也有一个类型。 大约有 20 个不同的类型值,其中的一些目前已经过时。 图 14-7 显示了其中的一些值。 查询类型是类型的一个超集( superset ):图中显示的类型值中只有两个能用于查询类型。最常用的查询类型是 A 类型,表示期望获得查询名的 IP 地址。域名服务器是能提供域名解析的服务器,上面的记录类型可以是A(address)记录,NS记录(name server),MX(mail),CNAME等。

查询类(QClass)通常是 1,指互联网地址(某些站点也支持其他非 IP 地址)。

响应资源记录

资源记录部分是指 DNS 报文格式中的最后三个字段,包括回答问题区域字段、权威名称服务器区域字段、附加信息区域字段。这三个字段均采用一种称为资源记录的格式,格式如图所示。

资源记录格式中每个字段含义如下:
域名:DNS 请求的域名。
类型:资源记录的类型,与问题部分中的查询类型值是一样的。
类:地址类型,与问题部分中的查询类值是一样的。
生存时间:以秒为单位,表示资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间。它同时也可以表明该资源记录的稳定程度,稳定的信息会被分配一个很大的值。
资源数据长度:资源数据的长度。
资源数据:表示按查询段要求返回的相关资源记录的数据。
资源记录部分只有在 DNS 响应包中才会出现。

抓包

请求

响应

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇