DNS推送通知

2020-06-24 21:16:59

区域的SRV记录,则这是错误配置,因为该服务器被通告为支持该区域的DNS推送通知,但服务器本身当前未配置为执行该任务。由于可以随时修复错误配置,因此重试延迟不应设置得太高。默认情况下,建议值为5分钟。对于RCODE=11(DSOTYPENI)(发生在实施DSO但不实施DNS推送通知的服务器上),服务器不太可能在接下来的几分钟内开始支持DNS推送通知,因此重试延迟应为一个小时。对于其他RCODE值,服务器应根据该错误情况设置重试延迟。默认情况下,建议值为5分钟。对于RCODE=9(NOTAUTH),时间延迟适用于对落入同一区域的其他名称的请求。属于其他区域的名称请求不会受到延迟的影响。对于所有其他RCODE,时间延迟适用于对此服务器的所有后续请求。在发送错误响应之后,服务器可以允许会话保持打开,或者可以在其之后执行DSO重试延迟操作(使用重试延迟主TLV),指示客户端关闭会话,如DSO规范[RFC8490]中所述。客户端必须正确处理这两种情况。请注意,DSO重试延迟操作(使用重试延迟主TLV)不同于上述重试延迟附加TLV。DNS推送通知更新成功建立订阅后,服务器会根据需要生成推送消息发送给客户端。在建立订阅的时刻回答集已经非空的情况下,将在订阅响应之后立即发送初始推送消息。然后,在随后的推送消息中将对应答集的后续改变传送到客户端。客户端不得发送推送消息。如果客户端确实发送了PUSH消息,或者发送的PUSH消息设置了QR位,表明这是响应,这是一个致命错误,接收方必须立即强制中止连接。6.3.1.。PUSH消息PUSH单向消息以标准DSO 12字节报头[RFC8490]开头,后跟PUSH主TLV。推送消息如图3所示,根据DSO单向消息的定义,消息ID字段必须为零。推送消息没有客户端响应。其他报头字段必须按照DSO规范[RFC8490]中的说明进行设置。DNS OPCODE字段包含DNS状态操作的OPCODE值(6)。四个计数字段必须为零,相应的四个部分必须为空(即不存在)。DSO类型为PUSH(0x0041)。DSO-Length是紧随其后的DSO-Data的长度,它指定正在传送的更改。DSO数据包含一个或多个更改通知。推送消息必须至少包含一个更改通知。如果收到不包含更改通知的推送消息,这是一个致命错误,客户端必须立即强制中止连接。改变通知记录的格式类似于DNS资源记录通常如何在DNS消息中表示,如图3所示,并且如下所述解释。TTL字段保存无符号32位整数[RFC2181]。如果TTL在0到2,147,483,647秒(0到2^(31)-1或0x7FFFFFFF)范围内,则会添加具有给定名称、类型、类和RDATA的新DNS资源记录。类型和类别不能为255(ANY)。如果type或class为255(ANY),则这是一个致命错误,客户端必须立即强制中止连接。TTL为0意味着只要订阅处于活动状态,此记录就应该保留,并且应该在取消订阅的那一刻立即丢弃。如果TTL的值为0xFFFFFFFF,则删除具有给定名称、类型、类和RDATA的DNS资源记录。类型和类别不能为255(ANY)。如果type或class为255(ANY),则这是一个致命错误,客户端必须立即强制中止连接。如果TTL的值为0xFFFFFFFFE,则这是集体删除通知。对于集体删除通知,RDLEN必须为零,因此,RDATA必须为空。如果收到更改通知,其中TTL=0xFFFFFFFE且RDLEN不为零,则这是一个致命错误,客户端必须立即强制中止连接。集体删除通知有三种类型。对于集体删除通知:*如果class不是255(Any)并且type不是255(Any),那么对于给定的名称,这将删除指定类中指定类型的所有记录。*如果class不是255(Any),type是255(Any),则对于给定的名称,这将删除t中所有类型的所有记录