编辑
2022-06-15
sh
00

目录

DNS原理分析及日常知识
DNS介绍
流程图
1. DNS:全称为Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp。
2. DNS原理
3. DNS解析
扩展知识
1. 查询域名
2. 购买域名
3. 相关软件
4. 缓存功能
5. CDN (Content Delivery Network)内容分发网络,工作原理
6. GSLB:Global Server Load Balance全局负载均衡

DNS原理分析及日常知识

最近在测试k8s,涉及到coredns组件。pod通过coredns连接其他的虚拟机和物理机,回顾一下DNS

DNS介绍

流程图

image.png

1. DNS:全称为Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp。

  • 根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
  • 雪人计划于2016年年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6根服务器架设,其中1台主根和3台辅根部署在中国,事实上形成了13台原有根加25台IPv6根的新格局
  • 一级域名:Top Level Domain: tld三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域com, edu, mil, gov, net, org, int,arpa
  • 二级域名:ztunan.top
  • 三级域名:vanblog.ztunan.top
  • 最多可达到127级域名
  • ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

2. DNS原理

  • Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
  • DNS查询类型: 分为递归查询和迭代查询

递归查询:

是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。 一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服 务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交 给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询 递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道->他 代为帮客户端去查找-->最后再返回最终结果

迭代查询:

是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的 地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。 一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回 权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询, 直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次 查询

迭代算法︰客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并 推荐客户端应该找谁-->客户端自己去找它

DNS缓存

DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意 位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。

3. DNS解析

  1. 正向:FQDN( Fully Qualified Domain Name) --> IP。一般我们都叫域名解析,全程叫FQDN
  2. 反向: IP --> FQDN
  3. 解析记录
  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
  • A:internet Address,作用,FQDN --> IP。通常是IPv4公网地址
  • AAAA:FQDN --> IPv6
  • PTR:PoinTeR,IP --> FQDN
  • NS:Name Server,专用于标明当前区域的DNS服务器
  • CNAME : Canonical Name,别名记录,像百度等大型网站使用的就是CNAME
  • MX:Mail eXchanger,邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等。有使用过域名的应该知道一般TXT用于初始化验证
  • *:通配符,添加一条这个记录会将所有不存在的域名都解析到对应的IP地址上,不过一般都在后端的Nginx等web软件上实现。
  • @:通常我们访问网站的时候不想输入www,比如jd.com。但是它却能自动跳转到www.jd.com网站上就是因为DNS解析记录添加了一条@记录,指向它的服务器,这样就算不输入www也能访问域名。

扩展知识

1. 查询域名

  • 一般可以在Window上使用万维网、阿里云等网站都可以查看。
  • 在linux下使用dig www.baidu.com 或者whois www.baidu.com 也可以查看。

2. 购买域名

  • 国内云厂商很多,一搜就都搜出来了,注册个好的域名可以赚一大笔money,比如小米的域名就花了360万美金,京东原理的域名叫360buy.com,购买域名花了3000万RMB

3. 相关软件

  • 一般在互联网公司都使用bind软件,因为是个开源软件,而且支持主备,但缺点也有很多,比如漏洞、统计分析、存活探测等就不具备。下次再通过一篇文章展开讲解bind软件。

4. 缓存功能

  • 一般在linux系统中要安装缓存软件,比如Dscd,Nscd 是一个Linux系统的名称服务缓存守护进程,它不仅可以缓存DNS解析结果,还可以缓存其他名称服务如密码和组信息。Nscd 提供了一个通用的缓存框架,但在某些情况下可能会因为一些问题而不稳定。

5. CDN (Content Delivery Network)内容分发网络,工作原理

  • 用户向浏览器输入www.a.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求
  • 网站的DNS域名解析器设置了CNAME,指向了www.a.tbcdn.com,请求指向了CDN网络中的智能DNS负载均衡系统
  • 智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;
  • 用户向该IP节点(CDN服务器)发出请求
  • 由于是第一次访问,CDN服务器会通过Cache内部专用DNS解析得到此域名的原web站点IP,向原站点服务器发起请求,并在CDN服务器上缓存内容
  • 请求结果发给用户
  • 服务商:阿里,腾讯,蓝汛,网宿,帝联等
  • 我们在访问网站的时候发现有的网站慢,有的网站快,除去网络、带宽等等一系列因素后还是发现有的快,有的慢,这就是CDN的功能,检测到最近的节点IP返回给用户,比如京东,之前京东在全国大量部署镜像服务器和CDN加速,不得不承认,这一手牌确实打得好,从0到市场占有率超过30%。

6. GSLB:Global Server Load Balance全局负载均衡

  • GSLB 是对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务,实现异地服务器群服务质量的保证
  • GSLB主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)
  • GSLB分为基于DNS实现、基于重定向实现、基于路由协议实现,其中最通用的是基于DNS解析方式
  • 例如在北京访问京东就是一个IP地址,在山西访问就是另一个IP地址。都是靠GSLB调度的。
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:笑一个吧~

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 本文为博主「笑一个吧~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 许可协议。转载请注明出处!