SmartDNS对DoH协议RFC8484 GET方法的支持分析

SmartDNS对DoH协议RFC8484 GET方法的支持分析

【免费下载链接】smartdns A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。 【免费下载链接】smartdns 项目地址: https://gitcode.com/GitHub_Trending/smar/smartdns

在DNS over HTTPS(DoH)协议的实现中,RFC8484标准定义了两种查询方式:GET和POST方法。近期有用户对SmartDNS项目是否支持RFC8484 GET方法提出了疑问,并关注其对HTTP缓存机制的影响。本文将深入分析这一技术细节。

DoH协议方法概述

RFC8484标准中定义了两种DoH查询方法:

  1. GET方法:将DNS查询以base64编码形式作为URL参数传递
  2. POST方法:将原始DNS消息作为HTTP请求体发送

两种方法各有优缺点。GET方法可以利用HTTP缓存机制,但URL长度可能受限;POST方法没有长度限制,但缓存处理需要特殊考虑。

SmartDNS的实现现状

根据项目维护者的反馈,SmartDNS最初主要实现了POST方法的支持,这已经能够满足大多数主流浏览器的需求。微软Windows系统、Google Chrome、Microsoft Edge和Mozilla Firefox等主流平台都能良好兼容POST方法。

近期代码更新后,SmartDNS已增加了对GET查询方式的支持。这一改进使得SmartDNS的DoH实现更加完整,能够兼容更多样化的客户端需求。

HTTP缓存的影响分析

POST方法在HTTP缓存处理上确实存在一些特殊考虑:

  1. 传统HTTP缓存通常不会缓存POST请求
  2. 需要特殊头部或中间件支持才能实现缓存
  3. 可能增加服务器负载

而GET方法天然更适合HTTP缓存机制:

  1. 可以被浏览器和中间代理缓存
  2. 减少重复查询的服务器负载
  3. 提升响应速度

测试验证方法

用户可以通过以下curl命令测试GET方法支持:

curl -H 'accept: application/dns-message' -v 'https://doh.360.cn/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | hexdump

对于POST方法的测试:

echo -n 'q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | base64 -d | curl -i -v -H 'content-type: application/dns-message' --data-binary @- https://doh.360.cn/dns-query -o - | hexdump

结论

SmartDNS通过增加GET方法支持,使其DoH实现更加符合RFC8484标准,能够提供更好的兼容性和性能表现。对于关注HTTP缓存效率的场景,建议优先使用GET方法;而对于大型DNS查询或特殊需求,POST方法仍然是可靠的选择。这一改进体现了SmartDNS项目对协议标准的持续跟进和对用户体验的关注。

【免费下载链接】smartdns A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。 【免费下载链接】smartdns 项目地址: https://gitcode.com/GitHub_Trending/smar/smartdns

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值