1、 DNS报文格式
![79f8dcc8551b181856c73b9472fbdf0f.png](https://i-blog.csdnimg.cn/blog_migrate/77199ca3de2f1507108728e13b9853cb.jpeg)
1.1标识位:即ID位,共16位,2个字节,客户端发送一个ID位为1的请求,DNS服务器会响应此ID为1的请求,ID为还为1。ID为是为了对应请求与响应报文。
1.2标志位:共16位,2个字节,16位。内容如下图所示:
![260f22728c08d19304997579981985bd.png](https://i-blog.csdnimg.cn/blog_migrate/944000b9025055dc6efa1acb36b272ca.jpeg)
1.2.1、QR位,共1位,为0时表示该DNS报文为请求报文,为1时表示该DNS报文为响应报文。
1.2.2、opcode为,共4位,为0时表示该DNS报文为正向查询,为1时表示该DNS报文为反向查询。
1.2.3、AA(authoritative answer)位,共1位,表明该DNS响应是否为首选回答,为0时表示该DNS报文为非授权回答,即DNS服务器从缓存中获取的解析地址,为1时表示该DNS报文为授权回答,即查询域名服务器后获取的解析地址。
1.2.4、TC(truncated)位,截断位,共1位,为0时表明不截断,为1时表示该响应报文大于512Byte,需要使用TCP进行传输。
1.2.5、RD(recursion desired),期望递归位,共1位,DNS请求中出现,为1时表示期望使用递归查询的方式进行DNS查询,但域名服务器基本不会响应递归查询,递归查询会消耗域名服务器的性能。
1.2.6、RA,为RD的响应,共1位,DNS响应报文中出现,为1时表示DNS服务器可用递归查询方式。
1.3问题数位:共16位,出现在DNS请求报文中,表示报文中询问域名的数量。
1.4回答数位:共16位,出现在DNS响应报文中,表示报文中回答请求相应域名解析的数量。
1.5授权资源记录数位:共16位,基本不会出现在用户和DNS服务器之间,一般出现在DNS服务器与域名服务器之间。
![c4cfd66e0a0a1004d8a7e12fb50e6c26.png](https://i-blog.csdnimg.cn/blog_migrate/e9ad30139860f5092a8bb1a2a9a17129.jpeg)
如上图2、3步骤:当DNS服务器向根域名服务器查询一个FQDN时,由于根域名服务器没有对应的域名,只有.Com域名服务器的解析地址时,会告知DNS服务器寻找去这个.com服务器的域名(如上图666.dns.com)来查询响应FQDN,此时就授权资源记录数位将设置为1。如果根域名服务器中记录了多个.Com域名服务器的解析地址时,会告知DNS服务器可以去多个.com域名服务器的响应域名去查询相应的FQDN,此时授权资源记录数位将设置为"多个.com域名服务器"的数量。
1.6额外资源记录数位:共16位,与授权资源记录数相对应,授权资源记录数是告知DNS服务器寻找去这个.com服务器的域名来查询响应FQDN,并没有告知.Com服务器相应的IP地址为2.2.2.2,额外资源记录就是告知.Com服务器相应的IP地址的,即告知666.dns.com的地址为2.2.2.2,响应报文中有一个额外资源的告知,则额外资源记录数位加1。
知识扩展:DNS协议端口号位UDP和TCP的53端口,大家应该都知道UDP53号端口,那TCP53号端口是什么作用呢?TCP53号端口用于主备两台DNS服务器之间同步记录(DNS服务器间的区域传送)时使用,还有就是当DNS响应的报文大于512Byte时,也将使用TCP53号端口发送DNS报文。
![d2c9dcb62001d43c58a9d7014baa951b.png](https://i-blog.csdnimg.cn/blog_migrate/00d2574c96ff9f848936ecf8a6a044c0.jpeg)
如图所示,如果DNS服务器的响应报文大于512Byte时,该蓝底的标志位将会被置为1,告知客户端报文大于512Byte,将使用tcp53端口进行DNS响应报文的传输。
2、 DNS报文分析
下面我们通过抓包详细分析一个常见的DNS的请求报文和对应的响应报文:
DNS请求报文:请求www.baidu.com的A记录,即请求解析www.baidu.com的IP地址。
![021e11b274d34a91d08cd987e9af5620.png](https://i-blog.csdnimg.cn/blog_migrate/1cba4c1ae7e822f7e2b8518aa084aa20.jpeg)
DNS响应报文:响应用户对于www.baidu.com解析的请求。
![41ee31ae37c3de47ef9591106d77b71e.png](https://i-blog.csdnimg.cn/blog_migrate/35c5355138a0ee5f7a540a1cb2a070df.jpeg)
![16481e6a4db66a30f3c566e135ac9eb8.png](https://i-blog.csdnimg.cn/blog_migrate/67f5f1fa50d6e5ef5c8aa76d4b1c23a0.jpeg)
此时,用户即可通过解析的相应IP地址访问www.baidu.com。
![2fc5c785f8054ca7f0dcd82350a109d7.png](https://i-blog.csdnimg.cn/blog_migrate/ce62509000f0971dd4930d5025312cc8.jpeg)
以上内容均为本人对所掌握知识总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的指正,大家共同学习,共同进步。
欢迎关注我的头条号,私信交流,学习更多网络技术!