本文正在参加「金石计划 . 瓜分6万现金大奖」
序
最近在做 自研网关,必不可免的需要使用 网络协议的东西,这里 正好整理下
DNS 分类
LocalDNS 和 HTTP DNS
LocalDNS
这里讲解 从浏览器 输入网址 到 localDNS的过程
LocalDNS 问题列表
除了LocalDNS 还有HTTPDNS ,客户端怎么知道用哪个
默认 LocalDNS, 如果想用 HTTPDNS 需要对接,可以用 云服务提供的 也可以 自己找一个开源的项目 搞
客户端怎么知道 LocalDNS的ip
8.8.8.8 就是一个 DNS 节点,从DNS 获取 对应的节点ip 列表
LocalDNS 里面存储的是什么东西?
g-api.csdn.net
----------------------------------------
记录名称. . . . . . . : g-api.csdn.net
记录类型. . . . . . . : 1
生存时间. . . . . . . : 232
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 120.46.209.149
你说 我改操作系统的缓存 可能因为 浏览器 dns缓存还在 ,会不生效?
会,新增是需要等缓存过期 才生效,删除会立刻生效
LocalDNS 步骤
先是向游览器中找是否有此域名的缓存,如果有则解析结束,没有则继续查找操作系统缓存中是否有这个域名对应的dns结果。
DNS查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索
问题来了 , 浏览器 的缓存 存在哪了? 操作系统的缓存 又在哪呢?
以 chrome 为例
chrome://net-internals/#dns 这里可以看各域名的DNS 缓存时间
删除浏览器 dns 缓存
然后 重新访问 掘金网站 就会看到1
图中3个分别为 DNS查询、TCP三次握手、SSL连接
然后 再次刷新 看看是不是不重新访问dns了
嗯嗯 ,不访问了
操作系统缓存
机器对应的 hosts文件 (windows路径 C:\Windows\System32\drivers\etc)
操作
ipconfig /displaydns显示dns缓存
ipconfig /flushdns 刷新DNS记录
ipconfig /renew重请从DHCP服务器获得IP
hosts 和 dns的对应关系
操作系统 dns 缓存 添加一个juejin的解析
hosts 添加 127.0.0.1 juejin.cn
需要等到 浏览器 dns 缓存 过期才会刷新到404
执行 ipconfig /flushdns 也是不行的,因为这个时候 用的是 浏览器的dns缓存,需要clear 浏览器的缓存 才会生效
HttpDNS
HTTPDNS的原理
HTTPDNS是使用HTTP协议向DNS服务器的进行请求,代替传统的DNS协议使用UDP协议向DNS服务器的进行请求,绕开了运营商的Local DNS,简化了请求的复杂性,避免了使用运营商Local DNS造成的劫持和跨网问题。
解析详细过程:
用户输入网址如[www.baidu.com] 回车–>游览器解析网址,获取域名,解析域名。
① 先是向游览器中找是否有此域名的缓存,如果有则解析结束,没有则继续查找操作系统缓存中是否有这个域名对应的dns结果。
② 如果以上两则都未能命中,则游览器会向你部署HTTPDNS服务器发送HTTP请求(直接访问HTTPDNS的IP),HTTP服务器返回域名解析结果,然后浏览器缓存起来。
HTTP DNS 优势
-
域名防劫持
使用HTTP(HTTPS)协议进行域名解析,域名解析请求直接发送至HTTPDNS服务器,绕过运营商Local DNS,避免域名劫持问题。
-
调度精准
由于运营商策略的多样性,其Local DNS的解析结果可能不是最近、最优的节点,HTTPDNS能直接获取客户端IP地址,基于客户端IP获得最精准的解析结果,让客户端就近接入业务节点。
-
低解析延迟
配合端上策略(热点域名预解析、缓存DNS解析结果、解析结果懒更新)实现毫秒级低解析延迟的域名解析效果。
-
快速生效
配合阿里云的权威DNS服务云解析,您在权威DNS变更的解析结果将快速同步给HTTPDNS,覆盖原有缓存记录,帮助您实现秒级的域名解析切换。
-
扩展性强
软件定义解析(SDNS)提供更自主可控的流量调度能力。
-
全球可用
全球节点覆盖,支持对接Akamai、CloudFlare等国际权威DNS,实现全球精准解析。
-
稳定可靠
服务可用性不低于99.99%,可为您提供稳定可靠的服务保障。
-
高可用性
HTTPDNS从节点之间、节点内部两个维度提升服务的高可用性。
- HTTPDNS接入了阿里优质的BGP网络,与全国主流运营商都实现了BGP互联。同时HTTPDNS使用了Anycast IP网络,正常情况下可以实现对不同地域用户使用同一IP提供服务,在单个节点出现故障的情况下,无缝切换到其他节点,实现了高可用。
- 在节点内部,依托阿里云优质的网络环境和负载均衡技术,HTTPDNS服务端集群化部署,保障服务可用性。
HTTPDNS解决了LocalDNS的哪些问题
1、DNS劫持;
前面我们有讲到,运营商的dns服务器是核心(LocalDNS大多数为运营商DNS服务器),处在整个DNS解析的交互的中心,这里容易发生劫持。而HTTPDNS直接通过ip地址去访问HTTPDNS服务器,从根本上解决了这个问题。
2、平均访问延迟下降:
从前面可以看出,localDNS的解析过程十分复杂,需要递归好几次。
而HTTPDNS,由于是IP直接访问HTTPDNS服务器,则只需要一个来回就能拿到解析的结果。
3、用户连接失败率下降:
通过算法降低以往失败率过高的服务器排序,通过时间近期访问过的数据提高服务器排序,通过历史访问成功记录提高服务器排序。如果ip(a)访问错误,在下一次返回ip(b)或者ip(c) 排序后的记录。(LocalDNS很可能在一个ttl时间内(或多个ttl)都是返回记录)。
HTTP DNS的适用场景
1、对首屏时延要求比较高的APP或者网页;
2、希望降低访问延迟、减少跨网访问的资讯、游戏类APP;
3、希望降低连接失败率,提升业务成功率的通用APP;
4、域名屡次被劫持,希望用户访问顺畅无阻的APP;
使用 HTTP DNS
其实就是后台 启动一个 HTTP DNS 服务器
也可以使用 阿里云
页面调用
获取 对应的ip列表
阿里云价钱
后续
下一篇 会继续 一次http 网络请求的 流程,还有很多东西。。。