一种生成dns查询包的方法
【技术领域】
[0001] 本发明设及数据通信网络,尤其设及生成DNS查询包的方法。
【背景技术】
[0002] 在数据通信网络中,域名系统(Domain Name System,DNS)用于将域名与IP地址相 互映射,从而使得用户能够更加方便的访问互联网。针对DNS服务器进行的网络测试的目的 在于验证网络功能完整性、测试网络性能W及查找网络漏桐,W便了解DNS服务器的功能、 性能和安全性。
[0003] 构建网络测试的流量包括生成查询流量,为了应对网络流量的需求,尤其是在网 络攻击的环境下或者是在进行安全性测试的情况下,不仅需要快速地生成DNS查询包,还需 要采用不同的DNS查询包,W便能够生成较大查询流量,并且防止DNS服务器对采用相同域 名的DNS查询包进行限速。
[0004] 然而,在常用的现有技术中没有一种通用的能够快速地生成不同的DNS查询包的 方法。通常生成DNS查询包的方法包括:确定例如由Alexa网站所提供的排名前2000个的多 个域名,然后逐个地生成DNS查询包。在运样方法中存在二个问题:一是生成不同的域名的 数量有限制;二是在逐个生成DNS查询包中,会重复生成查询包中重复的部分(如标志、问题 数等)和需要计算每个域名的长度。由此造成的时间开销,使得通过运样的方法难W快速地 生成不同的DNS查询包。
【发明内容】
[0005] 因此,本发明的目的在于克服上述现有技术的缺陷,提供一种生成DNS查询包的方 法,包括:
[0006] 生成DNS查询包中的动态部分;
[0007] 将DNS查询包中的固定部分和所述动态部分组合成DNS查询包;
[000引其中,在多个所述DNS查询包之间,固定部分的内容保持不变,而动态部分的内容 改变。
[0009] 根据本发明的方法,所述生成一个或多个DNS查询包中的动态部分的方法,包括:
[0010] 确定用于生成二级域的字符串、顶级域、查询类和查询类型;
[0011] 根据所述二级域的字符串和所述顶级域生成查询名;
[0012] 根据所述查询名、查询类和查询类型生成DNS查询包中的动态部分。
[0013] 根据本发明的方法,所述确定用于生成二级域的字符串、顶级域、查询类和查询类 型的方法,还包括:
[0014] 确定用于生成所述用于生成二级域的字符串的初始字符串的数量V,并确定生成 的初始字符串的长度Μ的最小值Mmin;
[0015] 从所述V个初始字符串中的一部分中选出一个字符串,并从所述V个初始字符串中 的另一部分中选出一个字符串,将运两个字符串组合成用于生成二级域的字符串。
[0016] 根据本发明的方法,优选地,所述的初始字符串的数量为
[0017] 其中,C是在每秒中所需要的不同DNS查询包的数量,T是需要在时间T内不允许有 重复的查询包,打表示用户所选择的查询类型的数量,Cd表示可用的顶级域的数量。
[0018] 根据本发明的方法,优选地,所述的初始字符串由数字和大小写字母构成。
[0019] 根据本发明的方法,优选地,初始字符串的长度Μ的最小值Mmin满足数字和字母的 组合数应该大于所需字符串的数量(?;。多r,
[0020] 其中,喘读示所述初始字符串中包括从'0-9'的10种数字中选取了Ln个的数字, 绍苗隶示所述初始字符串中包括从'a-z'和'A-Z'的52种大小写字母选取了Ln个的字母。
[0021] 根据本发明的方法,优选地,所述查询类型为在已有的各种查询类型中除去反向 查询W外的查询类型。
[0022] 根据本发明的方法,优选地,所述初始字符串由一半数字字符和一半大小写字母 字符母组成。
[0023 ]根据本发明的方法,优选地,将所述V个初始字符串平均分成两部分。
[0024] 与现有技术相比,本发明的优点在于:
[0025] 本发明根据DNS报文格式将DNS查询包分为固定部分和动态部分,由此分开实现生 成DNS查询包的固定部分和动态部分,简化生成查询包的操作。
[00%]并且本发明可W根据实际需求来确定用于生成DNS查询包的字符串的数量,即只 需开平方数量级的字符串,从而大大降低了对字符串数量的需求,在同等字符串数量的条 件下,可W生成更多数量的DNS查询包。
[0027] 本发明中采用预处理字符串并选择顶级域的域名所组成的随机域名,并将该随机 域名格式化为查询包所需的格式并设置查询类和查询类型。通过运样简单的操作,能够快 速生成不同的动态部分,从而快速地将DNS查询包的固定部分和动态部分合成DNS查询包。
【附图说明】
[0028] W下参照附图对本发明实施例作进一步说明,其中:
[0029] 图1是根据本发明的一个实施例的生成DNS查询包的方法的流程图;
[0030] 图2是采用本发明的方法生成的DNS查询包的仿真结果示意图;
[0031] 图3是采用传统方法生成的DNS查询包的仿真结果示意图;
[0032] 图4是对比采用本发明的方法与传统方法来生成DNS查询包的速度的示意图。
【具体实施方式】
[0033] 下面结合附图和【具体实施方式】对本发明作详细说明。
[0034] 在仔细研究现有技术的基础上,发明人了解到,根据DNS的协议报文RFC1035可知, 如表1所示,DNS查询报文仅包括标识、标志、问题数、资源记录数、授权资源记录数、额外资 源记录数和问题的字段,而不包括回答、授权和其他额外信息的字段。在不同的DNS查询包 间的主要区别在于采用了不同的问题字段。
[0035] 表1DNS查询的一般格式
[0039] 表2示出了DNS查询报文中问题字段所包含的内容,根据表2,问题字段包括查询 名、查询类型和查询类。其中,查询名是格式化的域名(例如,根据RFC1035对DNS查询包格式 的规定,域名的格式化是用数字表示其后面跟随的字符数;当最后一位为加寸则表示根标识 符,比如*¥¥.631山1.(:〇1]1,可^被格式化为3¥丽5631(1113(3〇1]1〇);查询类型表示要查询哪一类 信息;查询类表示互联网地址,其通常为1。
[0040] 参考表1和表2,发明人认为可W通过修改DNS查询报文的问题字段中的查询名、查 询类型和查询类的赋值,来快速地生成不同的查询包。由此,可W设置查询名来满足查询命 中或者未命中DNS服务器缓存的需要,并且还可W设置查询类型和查询类来满足对于查询 不同信息的需要。
[0041] 为了达到上述目标,发明人认为需要根据实际的需求来确定生成DNS查询包所需 要使用的字符串的数量。已知根据DNS查询包的格式,如果查询包的二级域、顶级域、查询类 型和查询类中至少有一处不同,那么运些查询包都属于是不同的查询包。由于顶级域、查询 类型和查询类是有限的,因此为了生成不同的查询包,需要生成大量的字符串来表示二级 域。出于使用少量字符串来生成大量的二级域的目的,发明人认为可W将字符串分为两组, 假设每组有N个字符串,如果分别从每组中随机取一个字符串组成一个新的字符串作为二 级域,那么就可W获得N2个不同的二级域。因此,如果一共需要N2个不同的二级域,那么只需 预先生成2 XN个不同字符串。由此可W达到通过生成少量的字符串来产生大量的不同的查 询包的效果。
[0042] 发明人还认为,为了简化生成查询包的操作,可W根据DNS报文格式,将DNS查询包 分为固定部分和动态部分。已知根据DNS报文格式,由于标识、标志、问题数资源记录数、授 权资源记录数和额外资源记录数的运6个字段的字节数是固定的,因此可W将它们作为固 定部分并生成一个可