DNS协议
DNS协议的主要作用是将域名解析为对应的IP地址。当我们在浏览器中输入一个网址时,计算机需要通过DNS协议来查找该网址对应的IP地址,以便能够建立连接并访问目标资源。
DNS协议的工作流程大致如下:
- 用户的计算机或设备(充当DNS客户端)首先会检查本地缓存中是否有目标域名的解析结果。如果有,则直接返回IP地址,跳过后续步骤。
- 如果本地缓存中没有找到解析结果,客户端会向本地DNS服务器发起查询请求。
- 本地DNS服务器收到请求后,会先查询自己的缓存中是否有该域名的解析结果。如果有,则返回给客户端;如果没有,则继续向上级DNS服务器发起查询请求。
- 在查询过程中,DNS服务器会按照层次结构逐步向上查找,直到找到负责解析该域名的权威DNS服务器。
- 权威DNS服务器返回域名对应的IP地址给本地DNS服务器。
- 本地DNS服务器将解析结果缓存起来,并返回给客户端。
- 客户端收到IP地址后,就可以向该IP地址发起连接请求,获取网页内容。
需要注意的是,DNS协议采用UDP/TCP 53端口进行通讯。其中UDP 53端口主要用于答复DNS客户端的解析请求,而TCP 53端口用于区域复制。
wireshark抓包
很明显的可以看到协议是dns,请求里面有baidu.com
DNS查询(Query)数据包
一个DNS查询数据包通常包含以下关键信息:
- 事务ID (Transaction ID): 一个唯一标识符,用于匹配查询和响应。
- 标志 (Flags): 指示查询的类型(标准查询、递归查询等)。
- 问题部分 (Question Section):
- 查询名 (QNAME): 要查询的域名。
- 查询类型 (QTYPE): 通常是A记录(IPv4地址)或AAAA记录(IPv6地址)。
- 查询类 (QCLASS): 通常是IN(Internet)。
DNS响应(Response)数据包
DNS响应数据包除了包含与查询数据包相似的字段(如事务ID和标志)外,还包含:
- 回答部分 (Answer Section): 包含与查询匹配的记录。
- 名称 (NAME): 域名。
- 类型 (TYPE): 记录类型(如A、AAAA等)。
- 类 (CLASS): 记录类(如IN)。
- 时间至过期 (TTL): 记录的有效期。
- 资源数据长度 (RDLENGTH): 资源数据字段的长度。
- 资源数据 (RDATA): 实际的IP地址或其他数据。
- 权威部分 (Authority Section): 包含负责该域名的权威DNS服务器的记录。
- 附加部分 (Additional Section): 包含其他与查询相关的资源记录。