IP是定位主机标识的因素。就像一个人的住址一样,你能找到这个人就靠具体到门牌号的地址。

主机名是什么呢,就是我不想每次跟你交流的时候都说“柳岩XX小区XX号XX楼是个很不错的地方”,而是代替着说“柳岩家
是个很不错的地方”这是主机名的作用,替代了一大堆10.110.20.20这种ip地址,而用baidu.com,jingdong.com之类的


可是如果我们输入了主机名www.yahoo.com,计算机怎么办,他又不知道ip是多少,报文扔给谁?所以需要个服务器存着所有的主机名对应的ip,计算机先去问它再拿到ip地址,再访问搞事情。

所以引出了DNS(域名系统):

一个由分层的DNS服务器实现的分布式数据库。一个使得主机能够查询分布式数据库的应用层协议。DNS是运行在UDP支山歌的,DNS协议是应用层协议。




DNS有三种分类,分别对应不同的层次:



1.跟DNS服务器:百度百科如下

        根服务器主要用来管理互联网
<https://baike.baidu.com/item/%E4%BA%92%E8%81%94%E7%BD%91/199186>
的主目录,全世界只有13台(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国
<https://baike.baidu.com/item/%E7%BE%8E%E5%9B%BD/125486>。其余12个均为辅根服务器,其中9个在美国,欧洲
<https://baike.baidu.com/item/%E6%AC%A7%E6%B4%B2/145550>2个,位于英国
<https://baike.baidu.com/item/%E8%8B%B1%E5%9B%BD/144602>和瑞典
<https://baike.baidu.com/item/%E7%91%9E%E5%85%B8>,亚洲1个位于日本
<https://baike.baidu.com/item/%E6%97%A5%E6%9C%AC/111617>。 [1]  <>


所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN <https://baike.baidu.com/item/ICANN>
统一管理,负责全球互联网域名根服务器、域名体系和IP地址 <https://baike.baidu.com/item/IP%E5%9C%B0%E5%9D%80>
等的管理,这13台根服务器可以指挥Firefox或Internet Explorer这样的Web浏览器
<https://baike.baidu.com/item/Web%E6%B5%8F%E8%A7%88%E5%99%A8>
和电子邮件程序控制互联网通信,由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com
<https://baike.baidu.com/item/.com>、.xyz <https://baike.baidu.com/item/.xyz>、
.net <https://baike.baidu.com/item/.net>、.top
<https://baike.baidu.com/item/.top>等)和一些国家的指定符(如法国的.fr
<https://baike.baidu.com/item/.fr>、挪威的.no等),美国政府对其管理拥有很大发言权。 [1]  <> 根域名服务器
<https://baike.baidu.com/item/%E5%9F%9F%E5%90%8D%E6%9C%8D%E5%8A%A1%E5%99%A8>
是架构因特网所必须的基础设施。在国外,许多计算机科学家将根域名服务器称作“真理”(TRUTH),足见其重要性。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
2.顶级域DNS服务器:也叫做TLD服务器,负责顶级域名com、org、net、edu、gov以及所有国家的顶级域名uk、fr、ca、ch等

3.权威DNS服务器:

       
在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的DNS记录,这些记录就是主机名字映射ip地址。这些记录要么这个组织搞个权威DNS服务器记录起来,要么找服务提供商给钱存一下。多数大学和大公司都是自己实现维护的权威DNS服务器的






在服务器的层次结构中还有一类DNS服务器叫本地DNS服务器,严格说他不算是服务层次结构里的,但很重要,一个住宅区对应一个ISP,某个机构也会有ISP,这些ISP主机与本地DNS服务器很近,下边说一下一次域名解析的过程:

主机cis.poly.edu   想知道   gaia.cs.umass.edu的ip地址

1)首先cis.poly.edu向本地DNS服务器发送DNS查询报文

2)本地DNS服务器报文转发给根DNS服务器

3)根DNS服务器收到后,根据edu前缀,向本地DNS服务器返回负责edu的TLD的IP地址列表

4)本地DNS服务器收到后,向这些TLD之一发送查询报文

5)TLD看到了本地DNS服务器的信息,注意到umass.edu前缀,用权威DNS服务器ip地址响应

6)本地DNS服务器收到权威DNS服务器的地址,立刻重发查询报文

7)权威DNS服务器收到后,识别gaia.cs.umass.edu,把ip返回给本地DNS服务器

8)本地DNS服务器最后把ip给发送出这个查询请求的主机cis.poly.edu

为了获得一台主机名的映射,共发送了8份DNS报文:4份查询报文,4份回答报文

当然上边这个过程并不是最复杂的,还有一层权威服务器下包含很多权威服务器的这种情况

DNS查询分成了两种方式,递归查询和迭代查询,递归查询是指cis.poly.edu向本地DNS服务器的,其他的由本地CDN代替发起的查询叫迭代查询。





DNS缓存:总不能每次都查上边那8个步骤,所以就有了缓存。---在一个请求链中,当某DNS服务器接收到一个DNS回答时,能够将该回答中的信息缓存在本地存储器中。但是由于主机和主机名与IP地址间的映射不是永久的,DNS服务器在一段时间后将丢弃缓存信息。




DNS能够提供查询当然也有数据库存着IP这些数据,叫做资源记录(RR)。资源记录是一个包含4个字段的记录:

Name,Value,Type,TTL

TTL:代表该记录生存时间

1)Type=A,Name=主机名,Value=主机名对应的IP地址

2)Type=NS,Name=域(例如foo.com),Value=是知道如何获得该域中主机IP地址的权威DNS服务器的主机名

3)Type=CNAME,Name=主机别名,Value=对应的规范主机名

4)Type=MX,Name=主机别名,Value=别名是Name的邮件服务器的规范主机名

像TLD服务器对接下边的权威服务器,返回的时候会给两个记录

一个是(umass.edu,dns.umass.edu,NS)表示这个域对应的权威DNS主机名

另一个是(dns.umass.edu,128.119.40.111,A)提供了这个权威DNS的IP地址




DNS报文有两种:查询报文,回答报文,有相同的格式

1)12个字节的首部区域

2)问题区域

3)回答区域

4)权威区域

5)附加区域

nslookup可以模拟发送一个查询DNS的报文

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信