前言

英译汉的时候会掩盖很多本质,导致很多问题稀里糊涂,问的人不知道怎么说,回答的人也是答非所问。

DNS是Domain Name System缩写,不是Domain Name Server,或者Domain Name Software。有的时候还有个名词叫 Name Server,汉语就不翻译了,越翻译越混乱。下面2篇文章介绍了这两者区别。

What is the difference, if any, between DNS server and name server?

The Difference Between DNS and Name Servers

Are Domain Name Server and Name Server the same thing?

在学习dig和nslookup的时候遇到了DNS record types(域名系统记录类型),再次记录一下,后续再更新

DNS系统中,常见的资源记录类型有

    • 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
    • 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
    • IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
    • 服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
    • NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

鸟哥私房菜

域名系统 (Domain Name System, DNS)一种因特网的通讯协议名称,提供这种服务的软件有很多,比如(Berkeley Internet Name Domain, BIND)。

FQDN

 类比

hostname相当于 “张三“,全国叫张三的几千万,怎么区分?

domain main相当于加上户籍地址,将张三进一步细化。

FQDN = hostname + domain  name,相当于四川省.成都市.成华区.建设北路2段4号张三

现实情况

在互联网上很多主机hostname都叫www,但是他们的domain name都不一样,例如 www.google.com.tw, www.seednet.net, www.hinet.net 等等,他们的domain name分别是.google.com.tw, .seednet.net, .hinet.net 等等。

学数据结构的时候,二叉树事递归定义的。DNS与二叉树类似,上一层的FQDN相当于下一层的domain name。

注:图片引自http://linux.vbird.org/linux_server/0350dns.php,只为说明DNS分层递归定义情况。如有问题请告知,及时删除。

注:小数点.不一定区分hostname与domain name

TLDs(Top Level Domains)

注:图片引自http://linux.vbird.org/linux_server/0350dns.php,只为说明DNS分层递归定义情况。如有问题请告知,及时删除。

 root DNS server用.表示

顶层域名 = 通用顶层域名 + 国家码顶层域名

通用顶层域名:包括.com  .org  .gov  .edu  .net  .mil  .jobs  .info  .asia等等

国家码顶层域名:包括.uk  .jp等等

https://www.slashroot.in/what-dns-zone-file-complete-tutorial-zone-file-and-its-contents

https://www.slashroot.in/how-dns-works

DNS分层查询

DNS是分层的,每一层DNS server认为他下边的client (这些client其实也都是DNS server)都是hostname,他只需要维护 hostname<—>IP address的映射即可。域名解析的过程 和 快递流程是一样的,其解析过程是从大范围到小范围,对应域名上是自右向左。快递首先回查ccTLDs,属于中国。然后查看属于哪个省,一看四川。再看属于哪个市,继而哪个区,那个街道,那个小区,哪号楼,那个房间。。。

上图中的DNS server在Linux里面指的是/etc/resolv.conf 里面配置的DNS server。一旦解析域名成功,DNS server会缓存一份,以防止其他主机有类似请求。缓存是有时效的,超过指定时间缓存作废,在执行一边DNS解析过程(即经过 . 在向下一层查询的过程)。

客户机只要只想互联网上任何一个DNS服务器就能解析全球的域名。

DNS理解的更多相关文章

  1. [C#]网络编程系列专题二:HTTP协议详解

    转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...

  2. 转:【专题二】HTTP协议详解

    我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...

  3. 专题二:HTTP协议详解

    我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...

  4. dig理解DNS的解析过程 - 阿权的书房

    关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...

  5. 理解DNS

    理解DNS 写在前面: 目前,我们大部分的网络通信都是基于TCP/IP协议的,而TCP/IP又基于IP地址作为唯一标识进行通信,随着需要记忆的IP地址数量的增多,肯定会超出我们的记忆能力范围,但如果使 ...

  6. 理解OpenShift(2):网络之 DNS(域名服务)

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  7. 简单理解DNS解析流程(一)

    0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如 ...

  8. 深入理解 DNS

    深入理解 DNS 简介 DNS(Domain Name System)域名系统,它是一个将域名和 IP 地址相互映射的一个分布式数据库,把容易记忆的主机名转换成主机 IP 地址. DNS使用 TCP ...

  9. 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS

    本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...

随机推荐

  1. 【Leetcode_easy】706. Design HashMap

    problem 706. Design HashMap solution1: class MyHashMap { public: /** Initialize your data structure ...

  2. Python netaddr CIDR转换

    功能 http://netaddr.readthedocs.io/en/latest/tutorial_03.html 将CIDR地址与IP范围相互转化 Convert CIDR to IP rang ...

  3. iOS-类似微信摇一摇

    首先,一直以为摇一摇的功能实现好高大上,结果百度了.我自己也模仿写了一个demo.主要代码如下: 新建一个项目,名字为AnimationShake. 主要代码: - (void)motionBegan ...

  4. wordpress通过$wpdb获取一个分类下所有的文章

    在wordpress程序根目录下新建一个php文件,粘贴下面的代码 如下面的代码注释,修改$CID这个分类id,就可以获取这个分类下的文章了.这个查询需要联合三个表wp_posts.wp_term_r ...

  5. Work? working!

    0.总要想想为什要做这个(目的是什么,优缺点,必要性,不用行不行,产品定位,如何保证最后的稳定性) 1.如何逐步排查问题所在(做实验+分析排查:不同的实验手段) 2.如何利用网络(搜索问题的所在,确定 ...

  6. python for循环 - python基础入门(11)

    在python开发中,除了前篇文章介绍的while循环还有一个for循环也经常使用,两者使用都是大同小异,for循环的使用相对于while循环更加灵活,下面我们一起来了解下具体区别. 一.for 循环 ...

  7. 27.Spark中transformation的介绍

    Spark支持两种RDD操作:transformation和action.transformation操作会针对已有的RDD创建一个新的RDD: 而action则主要是对RDD进行最后的操作,比如遍历 ...

  8. Linux下/etc/login.defs文件

    /etc/login.defs文件定义了与/etc/password和/etc/shadow配套的用户限制设定.这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误. 如果/etc ...

  9. hdu 4504 dp问题 转化能力不够 对状态的转移也是不够

    威威猫系列故事——篮球梦 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  10. 前端开发 Vue -1windows环境搭建Vue Node开发环境

    解决几个疑问: 想学习下vue.js,我理解的它是一个前端的框架,主要作用是对数据的处理,和juqery类似,所以不太理解为什么要在nodejs中npm install vue呢?在html文件中引入 ...