使用tcpdump观察DNS的通信过程

1、实验概述

在Ubuntu上用host命令通过DNS协议查询www.baidu.com的IP地址。同时,使用tcpdump抓取数据包,并观察结果。

2、实验过程

首先,在一个终端上输入如下命令:

sudo tcpdump -nt -s 500 port domain
  • -s 500表示每个数据包的大小为500字节
  • 使用port domain表示只抓取使用domain(域名)服务的数据包,即DNS查询和应答报文。

然后再开一个新的终端,输入如下命令:

host -t A www.baidu.com
  • -t选项告诉DNS协议使用哪种查询类型。这里使用的是A类型(详请参考DNS的报文格式),即通过域名获得其IP地址。
    host使用DNS协议和DNS服务器通信,查询域名对应的IP。

3、结果分析

第二个终端:
在这里插入图片描述
host命令的输出告诉我们,域名www.baidu.comwww.a.shifen.com的别名,且该域名对应两个IP地址。
第一个终端:
在这里插入图片描述

重点分析第一个终端的输出内容。前两行并不是抓包的输出信息。直接看后两行(按^C前面的算)。

一共抓到两个数据包,分别是主机发出的DNS请求和收到的DNS应答。

  • 两个数据包开始的IP表示,后面的内容描述的是IP数据报。
  • IP后面紧跟着IP地址+端口号,tcpdump以 “IP地址.端口号” 的形式描述通信的某一端。所以下面的DNS应答报文中的端口号为53,是DNS服务使用的端口。
  • >表示数据传输的方向,>前面是源端,后面是目的端。
  • 两个数据包中的53231是DNS查询报文的标识值,此值用于标记一对DNS查询/应答报文,所此值也出现在以下面的应答报文中。
  • +表示启用递归查询标志。
  • A?表示使用A类型查询方式。
  • www.baidu.com是DNS查询问题中的查询名。
  • 最后括号中的31是DNS查询报文的长度(以字节为单位)。

DNS查询报文分析完毕,再看DNS应答报文。

  • 3/0/0表示该报文中包含3个应答资源记录、0个授权资源记录 和 0个额外信息记录。
  • CNAME www.a.shifen.com., A 39.156.66.18, A 39.156.66.14表示3个应答资源记录的内容。其中CNAME表示紧随其后的纪录是机器的别名,A表示紧随其后的纪录是IP地址。
  • (90)表示该应答报文的长度为226字节。

4、扩展

抓包时使用-x选项,就能看到DNS报文的每一字节:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值