设为首页收藏本站

安而遇随-随遇而安

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
安而遇随-随遇而安 首页 其他 转载 查看内容

RFC-2671 解析--- EDNS0

2017-2-2 02:23| 发布者: 随便、先森。| 查看: 694| 评论: 0|原作者: 涛|来自: 搜狐博客

摘要: 一、什么是EDNS0? EDNS0:Extension Mechanisms for DNS Version 0,是DNS在rfc1035基础上对DNS协议的扩展。二、EDNS0作用? 1. 扩展DNS使用UDP传输时的最大报文限制,可以超过512字节 2. 扩展RCODE,由4为增加 ...
一、什么是EDNS0?

    EDNS0:Extension Mechanisms for DNS Version 0,是DNS在rfc1035基础上对DNS协议的扩展。

二、EDNS0作用?

    1. 扩展DNS使用UDP传输时的最大报文限制,可以超过512字节

    2. 扩展RCODE,由4为增加到12位

    3. 建议利用域名标签类型的剩余两个(10和01)[RFC1035 4.1.4]

三、协议变化

    1. 增加OPT RR

    2. 交互流程

       (1) 客户端发起DNS请求,在Additional部分增加OPT RR

       (2) 服务器端解析并记录下客户端能够处理的最大UDP报文的大小

       (3) 服务器端生成相应报文,若大于最大值,则置truncated位,否则可发送大于512且小于最大值报文

四、OPT-RR 结构


五、 OPT-RR 数据结构

    typedef struct
    {
        uint16_t type;
uint16_t clas;
char name[DNS_MAX_DOMAIN_LEN];
DNS_TCN domain;
uint16_t udp_payload_size;
uint8_t hb_rcode;
uint8_t edns0_ver;
uint16_t z;
uint16_t data_len;
uint8_t data[0];
    }OPT_NODE;

六、C/S端升级

    1. 若客户端支持EDNS0,则可以发起EDNS0请求

       如:dig www.baidu.com +bufsize=4096

    2. 若服务器端支持EDNS0,则可以接受并处理EDNS0请求,否则返回 RCODE NOTIMPL,FORMERR或SERVFAIL

七、报文

    


DNS 
平时用Sniffer观察到的DNS报文都在使用53/UDP,什么时候会用到53/TCP?
    根据RFC1035,对于DNS服务器,递归解析时用53/UDP,区传输因需要可靠传输,必须使用53/TCP。DNS服务器的标准实现必须同时支持53/TCP和53/UDP。RFC 1035中还指出,53/UDP上的UDP数据区(不包括UDP首部)不得超过512字节,发送时如果超过512字节,将被截断成512字节,同时DNS协议Flags字段Truncated位置位。53/TCP上的数据区最前面是big-endian序的2字节长度域,不包括自身这2字节,指明了后续数据长度。
当DNS响应数据大于512字节的时候,数据只返回512字节,剩余的数据将被丢弃.这个时候名字解析器(DNS客户端或递归解析中的DNS服务器)通常使用TCP重发原来的查询请求,它将允许返回的响应超过512个字节.所以何时使用TCP是由名字解析器决定的,也就是说,名字解析器用TCP发送请求,名字服务器才会用TCP发送响应,正常情况下决不会出现请求抱文是UDP而响应报文是TCP的情况.

使用 DNS 的扩展名机制 (EDNS0)
DNS 的扩展机制允许 DNS 请求者公布其 UDP 数据包的大小,并且更便于传输大于 512 字节(对于 UDP 数据包大小的原始 DNS 限制,RFC 1035)的数据包。DNS 服务器通过 UDP 传输层接收请求时,它对来自 OPT 资源记录 (RR) 的请求者的 UDP 数据包大小进行标识,测量其响应,以包含请求者指定的最大 UDP 数据包大小中允许的多个资源记录。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

返回顶部