DNS/mDNS/DoH/DoT 等DNS协议概括

DNS

端口53 最常用的DNS协议,明文传输(大部分情况使用UDP,少数情况为TCP)
用于域名-IP地址解析
用编程语言表示功能为:
ip_addr DNS(domain)
返回类型 函数名(入参)

123.58.180.8 DNS(163.com)

可通过 cmd 命令向当前网卡配置的 DNS 服务器查询

安全性:垃圾级别,参见:用winpcap实现局域网DNS欺骗之一(基础知识)

DNSCrypt

DNS加密版本

mDNS

端口5353 DNS 的多播版
不需要服务器,客户机域名以.local结尾。每一台客户端都自动向局域网广播 mDNS 数据包,支持 mDNS 的目标客户端即可处理并返回 ip 地址。
这对于基于DHCP自动分配IP地址的局域网设备是非常高效有用的,毕竟原始的 DNS 协议可没有打算支持局域网。

其中苹果的Bonjour就是mDNS的一个实现,此外Android 4.1之后也加入了对mDNS协议的支持。
Windows默认不开启,开启方法(二选一):

  1. 原生开启支持 https://superuser.com/questions/1330027/how-to-enable-mdns-on-windows-10-build-17134
  2. 通过第三方软件支持 Bonjour Print Services
    mDNS-思否
  3. raspberrypi.local 为什么可以ping通以及ssh登录?它是如何被解析的?又如何改变?

DNS 透传版

由 DNS 衍生出的透传版本,大部分都是加密的,实质是把 DNS 数据放在对应的加密网络协议包里透传:

事实上你想 Dns-Over-QQ Dns-Over-Email 都可以,但以下是有事实标准或 RFC 文档标准的

[DoQ] DNS over QUIC 端口x无统一规定标准端口
[DoH] DNS over HTTPS 端口443
[DoT] DNS over TLS 端口853
参考:https://developers.google.cn/speed/public-dns/docs/secure-transports

参考资料

各协议所在位置图解,TCP和UDP处于平等地位。

另有基于 UDP 改进的传输层协议 QUIC,自带加密和可靠性,但由于基于现有 UDP 改进,因此需占用 UDP 端口。另外 QUIC 也作为 HTTP3 版本所要求使用的传输层协议。

注:TCP和UDP端口并不冲突,因为计算机网络包五元组{源IP,目标IP,源端口,目标端口,传输层协议类型}只要有一个不同就不冲突。

网络包数据帧图,参见:通信数据挖掘学习笔记(一)——网络协议 + 报文抓包-VoidOc-zhihu

QUIC协议-cnblogs千里之外
HTTP/3 原理实战-腾讯-zhihu

posted @ 2021-01-24 23:29  蓝天上的云℡  阅读(2968)  评论(0编辑  收藏  举报