其中每个回复的记录格式:

1 1 1 1 1 1

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

| |

/ /

/ NAME /

| |

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

| TYPE |

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

| CLASS |

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

| TTL |

| |

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

| RDLENGTH |

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|

/ RDATA /

/ /

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

NAME:回复查询的域名,不定长。

TYPE:回复的类型。2字节,与查询同义。指示RDATA中的资源记录类型。

CLASS:回复的类。2字节,与查询同义。指示RDATA中的资源记录类。

TTL:生存时间。4字节,指示RDATA中的资源记录在缓存的生存时间。

RDLENGTH:长度。2字节,指示RDATA块的长度。

RDATA:资源记录。不定义,依TYPE的不同,此记录的格示不同,通常一个MX记录是由一个2字节的指示该邮件交换器的优先级值及不定长的邮件交换器名组成的。

这边述说一下名称的组合形式。名称由多个标识序列组成,每一个标识序列的首字节说明该标识符的长度,接着用是ASCII码表示字符,多个序列之后由字节0表示名字结束。其中某一个标识序列的首字符的长度若是0xC0的话,表示下一字节指示不是标识符序列,而是指示接下部分在本接收包内的偏移位置。

比如 bbs.zzsy.com 以.分开bbs、zzsy、com三个部分。每个部分的长度为3、4、3

在DNS报文中的形式就如 3 b b s 4 z z s y 3 c o m 0

假如在包内的第12个字节位置存在有 4 z z s y 3 c o m 0 这样的名称了。

那此时有可能为:3 b b s 4 z z s y 0xC0 0x0C 这样的形式。

三、DNS协议实例讲解

说了这么多理论屁话,可能头都有两个大了吧。还是用一个实例的方法来说明吧。

我选用著名的网络截包及协议分析工具IRIS 4.05,您可以从我的站点上下载:

http://itboy.cn/data/Iris405Full.rar

运行Iris,点击菜单的Filters 选 Port标签页 运用 53 端口后点确定。

点击Iris工具栏上的绿色运行图标进行监听。

在windows中运行nslookup程序。

输入以下命令:

set type=mx

然后返回nslookup程序。

再输入命令:

yahoo.com.cn

会得到

yahoo.com.cn MX preference = 20, mail exchanger = mx5.mail.yahoo.com

yahoo.com.cn MX preference = 10, mail exchanger = mta-v1.mail.

● DNS报文格式:

该报文由12字节的首部和4个长度可变的字段组成。

标识字段由客户程序设置并有服务器返回结果。


相关内容