最近有个小伙伴向我提问,域名解析是怎样的流程的,我心想这个问题不是好简单的什么A解析设置,访问时候先到哪里找的过程吗?但他提了一个问题,我买了个域名之后,是如何登记到某个地方的,又怎样去到根域名服务器第一个问题,购买域名信息登记,如何登记到某个地方的一个公共机构?第二个问题,是如何解析到根域名服务器, 现在这么多域名它是怎样存储的,又是怎样被快速解析的第三个问题,DNS 如何优化第二个问题好解析,对于第一个问题,也是可以随便说,到某某供应商那里,进行登记人家就会提交到某个机构进行登记,这样水过去,但心想这样水我自己也不行,为了求证,我需要解答第一个问题我们应该进行提问,我是如何成为域名提供商的,这个好办google一下得到一个解析域名注册商(英语:domain name registrar)是一个商业实体或组织,它们由互联网名称与数字地址分配机构(ICANN)或者一个国家性的国家代码顶级域名(ccTLD)域名注册局委派,以在指定的域名注册数据库中管理互联网域名,向公众提供此类服务这里分两个部分,一个是ICANN机构,一个是国家性质的顶级域名,如我国的CN域名 一类是一般性顶级域名(gTLD),比如.com、.net、.edu、.org、.xxx另一类是国别顶级域名(ccTLD),代表不同的国家和地区,比如.cn(中国简单总结为通用的域名 .com/.net 的管理机构是ICANN, 通过verisign进行注册,注册流程如下https://www.verisign.com/zh_CN/channel-resources/become-a-registrar/verisign-domain-registrar/index.xhtmlhttps://www.icann.org/resources/pages/accreditation-2012-02-25-zh申请资质 申请成为国际域名注册商,需要先向ICANN提出申请,等待申请通过后,再向Verisign申请认证 申请材料 1、资金存款证明及公司人员说明(ICANN网站提供的申请表)2、500万美金以上额度的商业保险3、业务发展计划书4、公司商业执照5、近3个月的财务报表CN域名的管理机构是CNNIC,CNNIC授权注册商http://www.cnnic.cn/jczyfw/CNym/CNymzc/201206/t20120612_25112.htm申请成为CN域名注册管理机构的,应当向信息产业部提交下列材料:(一)有关资金和人员的说明材料;CNNICCNNIC(二)对境内的顶级域名服务器实施有效管理的证明材料;(三)证明申请人信誉的材料;(四)业务发展计划及相关技术方案;(五)域名注册服务监督机制和网络与信息安全技术保障措施;(六)拟与域名注册服务机构签署的协议范本;(七)法定代表人签署的遵守国家有关法律、政策和我国域名体系的承诺书Ip地址也是在这里申请http://www.cnnic.cn/jczyfw/ipas/ipasCNNICfplm/好了,假设成为了域名注册商,人家需要进行向你申请域名你是怎样进行查询是否能用他们会提供一些协议接口进行对接域名查询,域名锁定,域名资料提交申请,按照下面链接说明https://datatracker.ietf.org/doc/html/rfc5730#section-2.9.3.1https://www.verisign.com/zh_CN/channel-resources/domain-registry-products/epp-sdks/index.xhtmlhttps://who.is/ 查询域名注册信息域名定价这个没有找到,本注册域名不是一个赚钱的东西,交易才赚钱,另外都是配套一些服务器网站服务等 注册域名后只是告诉你已经拥有这个域名,但人家还不能访问,这个时候就需要一个叫做DNS域名解析的服务进行你的域名与IP地址进行解析访问对应的服务了第二个问题,是如何解析到根域名服务器, 现在这么多域名它是怎样存储的,又是怎样被快速解析的域名层次解析域名组成www.google.cnwww 是三级域名google 是 二级域名cn 是顶级域名,一级域名www. google . com .hkHk 是顶级域名,一级域名Com 二级域名google 三级域名www 是四级顶级域名如下https://baike.baidu.com/item/%E9%A1%B6%E7%BA%A7%E5%9F%9F%E5%90%8D解析流程解析过程是自顶向下进行解析,解析服务器是就近原则,如本机先获取,再去本地域名,在市,一层层区域向上找,直到找到根域名服务为了减少根的解析量问题,会设置一个DNS域名空间的层次结构,叫做区域zone① 主机先查询优先使用自己缓存或者绑定了host,如果没有则向下去指定的DNS服务查询② 查找主机指定的DNS解析服务地址,可通过nslookup进行域名解析查询③ 如果都没有,则查询则去域名的根域查询,这个域名根域为CN,则去CN服务器查询DNS的查询方式 一种是,递归查询,如果请求的DNS服务器没有找到解析,就会继续去找这个DNS指定的下一级DNS解析服务器,客户主机一直等待 另外一种,迭代查询,如果DNS服务器查不到,就会返回一个可能知道域名解析服务器的地址,然后客户端在向这个域名主机发起查询本地域名服务,如局域网,进行递归查询,如果没有,就向根域进行查询时候就进行迭代查询为什么DNS会返回多个IP地址如图,一个域名返回多个ip,这个是DNS负载均衡,叫做轮询,DNS服务器能够对地址请求的响应来提供多个冗余的IP地址,但每次访问的顺序与ip都可能不一样,也不知道对方服务是否有访问问题,解决这个需要DNS服务器定期轮询镜像服务器可用性和负载系数,没有这些数据则删除这种方式设置可以针对地域进行不同IP的设置返回DNS协议结构 【Mac头】【ip头】【UPD头】【DNS内容】其中DNS请求内容为dig 命令内容Transation ID 查询IDFlags :QR RR RAQuestion: 查询域名数Answer RRs 回应节点数Authority RRs 权威节点数Additional RRs 权威节点详细解析数DNS 返回内容Transation ID 查询IDFlags :QR RR RAQuestion: 查询域名数Answer RRs 回应节点数Authority RRs 权威节点数Additional RRs 权威节点详细解析数上面数字填充外,还包含具体的域名解析,域名解析服务器地址内容http://www.firewall.cx/networking-topics/protocols/domain-name-system-dns/161-protocols-dns-response.htmlDNS 查找算法DNS 记录同步是一个最终一致性的分布式系统,不是只有13台根服务器,他们有镜像分布在不同的地方 一个服务器不可能会存储这么多数据,这个时候,就需要分布式存储,设计的算法有hashtable找节点,平衡二叉树找记录当查找的时候,会进行就近原则查询,先查本地,在查顶级域一路查询总结,域名购买后,在域名管理后台上添加对应的IP,然后这个域名就会拆开结构分别到对应的域名区域进行记录登记DNS性能优化应该 DNS 传播时间的因素有哪些?您的 TTL(生存时间)设置,较短的 TTL 可能会提高传播速度。但是,这也会增加查询域名服务器的次数,从而降低网站的性能您的 ISP(互联网服务提供商),ISP 通过在本地存储数据而非从 DNS 服务器检索新数据来缓存 DNS 记录。这可以提高 Web 浏览速度并减少流量,但可能会延长传播时间您的域名注册局,NS(域名服务器)记录发布到他们的根区。大多数注册局都会及时更新其区域,但是有些注册局可能需要花费几个小时甚至几天的时间。https://sg.godaddy.com/zh/help/what-factors-affect-dns-propagation-time-1746 优化前,我们需要先知道如何衡量对于 前端能够使用 https://www.webpagetest.org/ 进行分析解决方案分析一个链接需要经过,DNS 查询、建立 TCP 连接、数据传输、断开连接前端浏览器 添加 DNS Prefetch,在 HTTP 建立之前,将 DNS 查询的结果缓存到系统/浏览器中,提升网页的加载效率<link rel="dns-prefetch" href="https://example.com/">https://caniuse.com/link-rel-dns-prefetchhttps://github.com/amandakelake/blog/issues/50移动端或PC端使用 HTTPDNS 也就是DNS over httpsHTTPDNS 利用 HTTP 协议与 DNS 服务器交互,代替了传统的基于 UDP 协议的 DNS 交互原理客户端,请求 HTTPDNS api + 域名作为参数, HTTPDNS api 查询权威DNS或者自己的绑定映射,返回给客户端对应的IP解决问题域名防劫持(HTTPS),域名解析请求直接发送至HTTPDNS服务器,绕过运营商Local DNS,避免域名劫持问题调度精准,由于运营商策略的多样性,其 Local DNS 的解析结果可能不是最近、最优的节点,HTTPDNS 能直接获取客户端 IP ,基于客户端 IP 获得最精准的解析结果,让客户端就近接入业务节点实时生效,快速更新DNS映射ip的变更HTTPS 也防止 HTTP的队头阻塞问题:当客户端使用HTTPDNS解析域名时,请求URL中的host会被替换成HTTPDNS解析出来的IP,导致服务器获取到的域名为解析后的IP,无法找到匹配的证书,只能返回默认的证书或者不返回,所以会出现SSL/TLS握手不成功的错误解决 :在createSocket时替换为HTTPDNS的IP,并进行SNI/HostNameVerify配置,SNI指定具体的域名证书进行通信https://help.aliyun.com/document_detail/30143.htmlhttps://help.aliyun.com/document_detail/30102.html?spm=a2c4g.11186623.6.542.7129572cjCvf6QiOS HTTPS SNI 业务场景“IP直连”方案说明https://help.aliyun.com/knowledge_detail/60147.htmlDNS TTL(DNS缓存时间)TTL值大,修改解析后等待生效的时间就会越长,TTL值小,域名解析的稳定性和解析速度就会受到影响如果你不是经常换ip的话设置长一些一天也可以,如果你需要迁移的话就设置短一些5分钟左右常见DNS命令nslookup命令用法输入 nslookup 进入命令交互 Set type=mx 查看 域名邮件 Set type=ns 查看域名解析服务器 或 nslookup -query=ns 域名 Set type=soa 查看起始授权机构记录,多NS记录中那一台是主服务器 nslookup -query=any 域名 查看所有域名下的解析信息https://geek-university.com/linux/nslookup-command/dig 语法dig google.com nsdig google.com soadig google.com mx 查看邮件服务解析到哪个服务器dig google.com +trace 查看经过根服务器各个区域的域名解析服务器解析的速度返回解析参考http://luodw.cc/2015/12/27/dns03/
; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39680
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 8
qr 查询标志
rd 希望使用递归查
ra 代表服务器支持递归
QUERY 查询多少次
ANSWER 返回结果数
AUTHORITY 权威域名服务器多少个
ADDITIONAL 权威域名服务器具体信息数
;; QUESTION SECTION: 查询内容
;google.com. IN A
;; ANSWER SECTION: 返回结果
google.com. 600 IN A 8.7.198.46
;; AUTHORITY SECTION: 权威域名服务器
google.com. 47614 IN NS ns3.google.com.
google.com. 47614 IN NS ns2.google.com.
google.com. 47614 IN NS ns1.google.com.
google.com. 47614 IN NS ns4.google.com.
;; ADDITIONAL SECTION: 权威域名服务器具体信息
ns2.google.com. 154788 IN A 216.239.34.10
ns3.google.com. 166727 IN A 216.239.36.10
ns1.google.com. 330818 IN A 216.239.32.10
ns4.google.com. 169904 IN A 216.239.38.10
ns2.google.com. 171516 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 171516 IN AAAA 2001:4860:4802:36::a
ns1.google.com. 324727 IN AAAA 2001:4860:4802:32::a
ns4.google.com. 344783 IN AAAA 2001:4860:4802:38::a
;; Query time: 45 msec 查询多少个
;; SERVER: 192.168.3.1#53(192.168.3.1) 本地域名解析服务器
;; WHEN: Fri Jul 09 21:39:05 CST 2021
;; MSG SIZE rcvd: 292 清理DNS缓存windowsipconfig /flushdnslinux dns 服务多,大概如下 ps aux | grep xx 查询下service dnsmasq restartservice nscd restartservice named restartsudo systemd-resolve –flush-caches.Macsudo dscacheutil -flushcache案例沪江从DNS到httpdns的演进https://zhuanlan.zhihu.com/p/52361092【鹅厂网事】全局精确流量调度新思路-HttpDNS服务详解https://mp.weixin.qq.com/s?__biz=MzA3ODgyNzcwMw==&mid=201837080&idx=1&sn=b2a152b84df1c7dbd294ea66037cf262&scene=2&from=timeline&isappinstalled=0#rd美图App的移动端DNS优化实践:HTTPS请求耗时减小近半https://cloud.tencent.com/developer/article/1377693百度APP移动端网络深度优化实践分享(一):DNS优化篇http://www.52im.net/thread-2472-1-1.html参考资料顶级域名数据库与域名解析https://www.iana.org/domains/root/db/aaa.htmlhttps://www.iana.org/domains/root/db域名根服务器https://www.iana.org/domains/root/servershttp://www.ruanyifeng.com/blog/2018/05/root-domain.htmlhttps://mp.weixin.qq.com/s/eaD1Hedtl_3atbLsbanTqwDNS 轮询https://aws.amazon.com/cn/premiumsupport/knowledge-center/multivalue-versus-simple-policies/https://care.qumulo.com/hc/en-us/articles/115007926128-Configure-DNS-Round-Robin-on-a-Windows-Server-for-Qumulo-Corehttps://www.cloudflare.com/zh-cn/learning/dns/glossary/round-robin-dns/https://skyao.io/learning-dns/dns/tool/