DNS (二)协议
报文字段含义:
标识字段 由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。
标志字段 协商具体的通信方式和反馈通信状态
随后的 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类型应答报文
最新文章
- Elasticsearch-HttpServerModule
- nim也玩一行流,nim版的list comprehension
- Java类型擦除机制
- lca 最近公共祖先
- 【转】你需要知道的Python用法
- T-SQL实例 函数结果设置为列别名
- hdu2488 dfs
- BZOJ 1096
- 【Linux】Linux 自己主动挂载NTFS格式移动硬盘
- ABAP字符串的加密与解密
- Web移动端适配总结
- VS2010+OpenMP的简单使用
- Docker镜像构建的两种方式(六)--技术流ken
- LOJ3053 十二省联考2019 希望 容斥、树形DP、长链剖分
- Python:Day43 抽屉
- java常用实用类
- [LeetCode]题100:Same Tree
- shell 修改工作路径
- POJ 1062 最短路Dijstra
- Spring AOP声明式事务异常回滚(转)
热门文章
- Extjs4.2布局——layout: accordion(Ext.layout.container.Accordion)
- 多线程 (三)iOS中的锁
- 手机金属外壳加工工艺:铸造、锻造、冲压、CNC
- std::remove
- *MySQL卸载之后无法重装,卡在Apply security settings:Error Nr.1045
- windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机
- 关于TableView中出现deallocated问题
- C++内存中的封装、继承、多态(下)
- JSON格式转换成XML格式
- 彻底搞清js中闭包(Closure)的概念