域名解析 - 见解
时间:2023-02-08 17:54:01 | 来源:建站知识
时间:2023-02-08 17:54:01 来源:建站知识
最近有个小伙伴向我提问,域名解析是怎样的流程的,我心想这个问题不是好简单的什么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.cn
www 是三级域名
google 是 二级域名
cn 是顶级域名,一级域名
www. google . com .hk
Hk 是顶级域名,一级域名
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 查询ID
Flags :QR RR RA
Question: 查询域名数
Answer RRs 回应节点数
Authority RRs 权威节点数
Additional RRs 权威节点详细解析数
DNS 返回内容
Transation ID 查询ID
Flags :QR RR RA
Question: 查询域名数
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 ns
dig google.com soa
dig 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缓存
windows
ipconfig /flushdns
linux dns 服务多,大概如下 ps aux | grep xx 查询下
service dnsmasq restart
service nscd restart
service named restart
sudo systemd-resolve --flush-caches.
Mac
sudo 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/