DNS理解
前言
英译汉的时候会掩盖很多本质,导致很多问题稀里糊涂,问的人不知道怎么说,回答的人也是答非所问。
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理解的更多相关文章
- [C#]网络编程系列专题二:HTTP协议详解
转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...
- 转:【专题二】HTTP协议详解
我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...
- 专题二:HTTP协议详解
我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- 理解DNS
理解DNS 写在前面: 目前,我们大部分的网络通信都是基于TCP/IP协议的,而TCP/IP又基于IP地址作为唯一标识进行通信,随着需要记忆的IP地址数量的增多,肯定会超出我们的记忆能力范围,但如果使 ...
- 理解OpenShift(2):网络之 DNS(域名服务)
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- 简单理解DNS解析流程(一)
0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如 ...
- 深入理解 DNS
深入理解 DNS 简介 DNS(Domain Name System)域名系统,它是一个将域名和 IP 地址相互映射的一个分布式数据库,把容易记忆的主机名转换成主机 IP 地址. DNS使用 TCP ...
- 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS
本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...
随机推荐
- 基于Spark的用户分析系统
https://blog.csdn.net/ytbigdata/article/details/47154529
- Http协议!(转)
背景 我们在测试中,经常与http协议, URL打交道,不时会修改URL的参数来达到不同的测试目的或者转到不同的页面,那么,你对HTTP协议了解多少呢?今天我们来总结下. #1 HTTP协议简介 HT ...
- iOS-NSTimer计时器
(3) 计时器NSTimer + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget sel ...
- Azure DevOps的variable group实现array和hashtable参数的传递
Azure Devops中的variable group建议或者只能(?)添加string类型的value.基于此我们想在variable group实现array或者hashtable的传递的核心思 ...
- .Net Core 常用开发工具
组件名 描述 可选版本 推荐版本 Visual Studio Community 社区免费版 For Visual Studio 2017 For Visual Studio 2019 Visual ...
- 为什么每次登录要手动 source /etc/profile ...
由于执行顺序如下,故追个查看以下文件,看看是不是 JAVA_HOME, PATH 等环境变量在后面的文件中被重写覆盖了. 1. /etc/profile2. /etc/environment3. ~/ ...
- vue中添加less配置,用于计算div高度
需求:左边垂直的菜单栏高度设置为 100% - 导航栏的高度(3.6rem) 首先,从vue-cli脚手架里的安装的webpack模板中并没有less的依赖配置,得自己手动添加安装 安装命令::npm ...
- Mac OS X下把 /etc/sudoers 写错了怎么办?(转载https://blog.csdn.net/robertsong2004/article/details/53725285)
重要的事情先说一下,首先为了回避这个问题,一定要用 visudo 来改 /etc/sudoers 文件. 问题描述: 1. 用 sudo vi 直接改 /etc/sudoers 并覆盖原文件. 2. ...
- 如何使用Curator监听zookeeper事件变化
掌握zookeeper事件监听机制,非常重要,可以说是跨入了进阶的门槛,只有掌握了如何监听某个节点或路径,我们才能在节点变化后,做一些我们想做的事,包括: 1,配置文件同步 2,主从切换 3,分布式队 ...
- go for range 可以方便的对slice 切片或者 map 进行迭代循环
package main import ( "fmt" "math/rand" "time" ) func main ...