DNS 即域名系统(Domain Name Server),其主要用于将域名解析为对应的 IP 地址。
那么为什么会有域名到 IP 地址的解析这一需要呢?就需要从人的角度和计算机的角度去分析了。
- 人的角度:网络上的主机一般是通过 IP 地址唯一确定,但 IP 不便于人们记忆,如果每个人都需要通过 IP 来访问其他主机,那记忆量太大了,因此才借用域名来间接地标识一台主机。比如常见的域名有: www.baidu.com, 其 IP 地址为 202.108.22.5。
- 计算机的角度:人是方便记忆了,但是计算机的网络通信层(IP 层)只认 IP 地址。人想要访问其他主机必须通过计算机实现,因此光有域名还无法达到目的,于是计算机需要多干一件事,那就是根据人提供的域名去获得相应的 IP。
DNS 的来源上面已经解释了,DNS 劫持是指在劫持的网络范围内(类似于白名单)拦截域名解析的请求,分析请求的域名,把审查范围以外(类似于黑名单)的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。TCP 管发管到,UDP 管发不管到。因此,在安全性方面来说,TCP/IP更具有优越性,DNS 的域名解析基于 UDP 协议实现,极易发生 DNS 劫持。
传统 DNS 解析域名的最大弊端就是易被劫持,直接降低互联网用户的使用体验。比如你想访问 www.baidu.com,结果发生 DNS 劫持,得到了一个诈骗网站的 IP 或者空的地址,使你无法使用正常的服务(比如百度是搜索服务)。
HTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互,绕开了运营商的 Local DNS(本地 DNS 服务器),有效防止了域名劫持,提高域名解析效率。另外,由于 DNS 服务器端获取的是真实客户端 IP 而非 Local DNS 的 IP,能够精确定位客户端地理位置、运营商信息,从而有效改进调度精确性。
- 为什么要用 UDP 协议进行 DNS 域名解析?
UDP 协议通信速度更快。 - 为什么不直接用 TCP 协议,而要用 HTTP 协议?
HTTP协议基于 TCP 协议 - 为什么 HTTPDNS 能解决 DNS 劫持问题?
参考链接:
- https://baike.baidu.com/item/DNS%E5%8A%AB%E6%8C%81/6739044?fr=aladdin
- http://www.linkedkeeper.com/detail/blog.action?bid=171
- https://mp.weixin.qq.com/s?__biz=MzA3ODgyNzcwMw==&mid=201837080&idx=1&sn=b2a152b84df1c7dbd294ea66037cf262&scene=2&from=timeline&isappinstalled=0&utm_source=tuicool
- https://www.cnblogs.com/549294286/p/5172435.html
文章来源: DNS 劫持及解决方案之 HTTPDNS