
文章插图

文章插图
DNS 的记录类型当我们在阿里云买了一个域名后,可以配置我们主机域名解析规则,也就是 记录 。

文章插图
阿里云 域名云解析
常见的 DNS 记录类型如下
- A:地址记录(Address),返回域名指向的IP地址 。
- NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址 。该记录只能设置为域名,不能设置为IP地址 。
- MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址 。
- CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文 。
- PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名,详见下文 。

文章插图
DNS 报文结构后面我将使用 wireshark 抓取 DNS 的数据包,但是在开始之前,得先了解一下 DNS 的报文结构

文章插图
- 事务 ID:DNS 报文的 ID 标识 。对于请求报文和其对应的应答报文,该字段的值是相同的 。通过它可以区分 DNS 应答报文是对哪个请求进行响应的 。
- 标志:DNS 报文中的标志字段 。
- 问题计数:DNS 查询请求的数目 。
- 回答资源记录数:DNS 响应的数目 。
- 权威名称服务器计数:权威名称服务器的数目 。
- 附加资源记录数:额外的记录数目(权威名称服务器对应 IP 地址的数目) 。

文章插图
Wireshark抓包实战打开 Wireshark 后,使用 ping 163.com 来发起 DNS 解析请求,使用 DNS 关键字在Wireshark 过滤 。
【网络知识扫盲,一文搞懂 DNS】从抓取的报文整体来看,我们可以粗略获取几个信息
- DNS 是应用层协议,传输层协议使用的是 UDP
- DNS 默认端口是 53

文章插图
请求和应答的报文的截图我放在了下面,接下来我将逐个分析 。
请求

文章插图
应答

文章插图
Transaction ID请求和应答的事务ID应当是一个:0xd0d7
Flags标志字段里的内容比较多,每个字段的含义如下:
- 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),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答 。
推荐阅读
- 一文带你彻底理解Linux的各种终端类型及概念
- 什么样的茶杯才算好茶杯?一文帮你挑到最实用的茶器
- 手电钻、冲击钻、电锤、电起子有什么区别?一文搞懂男人电钻工具
- 服务器软件大扫盲
- 退休人员去世,家属到底可以领取多少钱?一文给你说清楚
- 一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项
- 一文读懂HTTPS以及SSL单向验证和双向验证
- 学好JavaScript设计模式,一文足矣!
- 给家长们扫扫盲:啥是EDG?为什么年轻人对“EDG夺冠”如此狂欢?
- 一文看懂开源许可证,能不能商用再也不抓瞎
