深入探索mDNS与DNS - SD技术
1. mDNS响应机制与消息头特点
在网络通信中,为了提高效率,响应者倾向于将尽可能多的答案聚合到单个请求中。这样做可以最大程度地减少由于DNS和底层报头带来的开销。而且,单个多播mDNS消息可以包含针对多个查询者问题的答案。一般来说,响应者可能会将响应的传输延迟最多500毫秒,以收集足够的问题,确保数据包中包含多个答案。当然,这种聚合的代价是会增加500毫秒的延迟。
另外,当响应包含已知答案的请求时,如果相应资源记录(RR)的生命周期小于TTL值的一半,响应者可能会重新发送带有更新TTL字段的答案。如果一个设备即将发送答案,并且发现另一个设备生成的多播响应中已经包含了相同的答案,那么如果该答案的TTL字段符合其RR的生命周期,它可以避免发送该响应。
mDNS消息头遵循与图中所示DNS消息相同的格式。在mDNS的特定情况下,所有响应,包括来自物联网设备的主动响应,都必须被处理。通常会对所有传入的响应进行监测,而不考虑消息标识字段和问题部分的内容。实际上,在mDNS下,即使设备没有对这些RR有主动兴趣的客户端,它也可以缓存所有响应的内容。当然,mDNS客户端在缓存这些响应时必须遵守RR的生命周期。
在mDNS的上下文中,对字段的使用有一些特定要求:
| 字段 | 使用要求 |
| — | — |
| 消息标识字段 | 对于多播mDNS消息,无论消息是请求还是响应,该字段始终为0。只有在由QU请求触发的传统单播响应的情况下,该字段才用于跟踪事务。 |
| OPCODE | 传输时始终设置为查询,响应者会忽略任何其他值。 |
| AA位 | 传输时必须未设置,接收时忽略。 |
超级会员免费看
订阅专栏 解锁全文
4532

被折叠的 条评论
为什么被折叠?



