报文字段含义:

标识字段 由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。
标志字段 协商具体的通信方式和反馈通信状态
随后的 4个16 bit字段说明最后 4个变长字段中包含的条目数

 DNS标志字段

QR是1bit字段:0表示查询报文,1表示响应报文。
opcode是一个4bit字段:通常值为0(标准查询) ,其他值为1(反向查询)和2(服务器状态请求)。
AA是1bit标志表示“授权回答(authoritative answer)”。该名字服务器是授权于该域的。
TC是1bit字段,表示“截断的(truncated)”。使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节
RD是1bit字段表示“期望递归(recursion desired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它   就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。
RA是1bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。大多数名字服务器都提供递归查询,除了某些根服务器。
Rcode是一个4bit的返回码字段。通常的值为0(没有差错)和3(名字差错)。

DNS查询报文内部:

查询名示例:

格式:计数+内容 以0结束
查询类型:A/CNAME/NS等
查询类:IN/CS等

说明:

计数字节的值必须是0 ~ 63的数,因为标识符的最大长度仅为63(在本节的后面我们将看到计数字节的最高两比特为1(oxc0),即值192~255,将用于表示压缩);

DNS查询类型:

查询类型除了包含资源记录类型之外,还包含以下的类型值:

DNS查询类:

DNS 应答报文:

域名可以使用压缩。长度以C0开头表示压缩形式,内容是报文一定偏移处的域名内容。
类型说明 RR的类型码。类通常为 1,指Internet数据。
生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为 2天。
资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的IP地址。

注:应答报文的回答、授权、额外信息字段就是以上的格式。也就是说这三个部分是有多条资源记录组成的,资源记录的数量是前面报文头部相应字段的值。

 A类型请求报文

A类型应答报文

最新文章

  1. Elasticsearch-HttpServerModule
  2. nim也玩一行流,nim版的list comprehension
  3. Java类型擦除机制
  4. lca 最近公共祖先
  5. 【转】你需要知道的Python用法
  6. T-SQL实例 函数结果设置为列别名
  7. hdu2488 dfs
  8. BZOJ 1096
  9. 【Linux】Linux 自己主动挂载NTFS格式移动硬盘
  10. ABAP字符串的加密与解密
  11. Web移动端适配总结
  12. VS2010+OpenMP的简单使用
  13. Docker镜像构建的两种方式(六)--技术流ken
  14. LOJ3053 十二省联考2019 希望 容斥、树形DP、长链剖分
  15. Python:Day43 抽屉
  16. java常用实用类
  17. [LeetCode]题100:Same Tree
  18. shell 修改工作路径
  19. POJ 1062 最短路Dijstra
  20. Spring AOP声明式事务异常回滚(转)

热门文章

  1. Extjs4.2布局——layout: accordion(Ext.layout.container.Accordion)
  2. 多线程 (三)iOS中的锁
  3. 手机金属外壳加工工艺:铸造、锻造、冲压、CNC
  4. std::remove
  5. *MySQL卸载之后无法重装,卡在Apply security settings:Error Nr.1045
  6. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机
  7. 关于TableView中出现deallocated问题
  8. C++内存中的封装、继承、多态(下)
  9. JSON格式转换成XML格式
  10. 彻底搞清js中闭包(Closure)的概念