DNS基础概要
dns服务系统由客户端和服务器组成,提供域名到ip地址的解析,或者提供ip地址到域名的逆向解析。
1、DNS域名空间
每个dns域名由分级的label构成,如www.sina.com.cn,由www、sina、com、cn四个label构成,label不区分大小写,每个label长度限制为63个字符,域名总长度限制不超过253个字符。域名按照从左往右方向解析,越往右级别越高。按照rfc规范,每个域名最右边都有一个点,如严格来讲前面新浪的域名应该写成www.sina.com.cn.,注意最后的一个点,表示根域名,这在定义服务器的zone文件时需要特别注意,避免遗漏最后的点。而在实际使用中,为了方便,最后的点通常不用写。
这里顺便提下,通常所说的域名和全域名FQDN(也叫完全合格域名)的区别。通常情况下,形如www.sina.com.cn的域名,我们称最左边的www的主机名,主机名右边的sina.com.cn为域名,表示了该主机的域名路径。而主机名加上域名则称为FQDN域名。全域名的好处是可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。
域名空间中,所有的域名以点(.)为树根形成了一颗层次化的倒置树,如下:

互联网上能够访问的域名是需要申请注册的。如果你想自己管理域名并能被互联网访问,你首先得花钱向专门的域名提供商申请注册,并提供你的域名服务器ip給上一级域名机构进行授权。当然,自己实验用的域名可以随便用,也不会授权,即使和互联网上的域名重复,也不会对互联网上真正的域名产生影响,互联网也访问不到你的域名。
2、DNS服务器
dns服务器在软件实现上,用ASN.1表示域名数据结构,用X.500进行编码,将域名和IP地址相互映射形成一个分布式DAP类型数据库,使得查询效率非常高。
在windows操作系统上的DNS服务器部署比较简单,而且出错时会提示,通常windows server带有DNS服务。而在linux系统上部署DNS服务器,比较麻烦些,需要安装、配置、启动和测试排错,这里也主要讨论linux下DNS相关的内容。
dns服务端软件用得最多的就是知名的bind系统,该系统是现今互联网上最常使用的DNS服务器软件。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护,一般部署在大型网络中提供服务。而近几年出现的dnsmasq应用,将dns和dhcp功能集成在一起,小巧灵活,多用于规模较小的公司,或者已成为家用路由器的首选。
2.1、DNS服务器类型
通常,dns服务器按角色分为两类:
一、主从服务器。一个域的DNS服务系统由主Primary DNS Server(Master)和Seconday DNS Server(Slave) 从两台服务器两台服务器组成, 主服务器保存该域的zone配置文件,该域所有的配置、更改只能在主服务器上进行 ,而从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上同步(copy)zone配置文件,从服务器不进行信息修改,所有的修改变化由主服务器同步
二、cache服务器。也就是Caching only Server DNS缓存服务器,该服务器上不存在任何zone文件,仅仅依靠缓存为客户端提供服务,用来加速查询。
2.2、DNS服务器资源记录类型
在DNS服务器上,DNS的各种信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅仅能够保存域名到IP地址的映射信息,还能够保存很多其他信息
资源记录格式为:“NAME CLASS TYPE RDATA",不同的记录有不同的属性,有些属性可以省略,通常我们按照type来称呼记录,如SOA记录、A记录、4A记录等,格式如下:
www IN A 130.255.1.1
ftpserver IN AAAA 2001::1
mail1 IN A 130.255.1.254
server1 IN CNAME www
3、DNS客户端
通常用户不会直接使用dns客户端,在系统中,dns客户端作为一个系统底层服务供上层应用程序、服务、进程使用发起dns域名查询,这些应用如ping应用、浏览器、邮件服务器等,在一些支持dns的路由器、交换机等嵌入式设备中,dns作为客户端模块为系统或其它模块提供域名查询功能。而诸如nslookup、host、dig命令,则是作为dns专用客户端查询工具,具有很多辅助选项和功能,能够对dns服务器各种功能进行比较全面的测试和故障排错。
在Linux系统中,客户端域名通常基于文件(/etc/hosts、/etc/networks)和DNS服务器 (/etc/resolv.conf) 进行解析。可以通过配置文件/etc/nsswitch.conf控制查询先后顺序,通常情况下如hosts:files dns
DNS基础概要的更多相关文章
- 【Linux】DNS基础(一)
DNS基础 DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 ...
- threejs 基础概要
threejs 基础概要 点击查看官方文档 下面是翻译的内容(稍作修改) 先了解一下Three.js应用程序的结构.Three.js应用程序需要创建一堆对象并将它们连接在一起.下图表示一个小three ...
- DNS基础及域名系统架构
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- DNS基础
什么是DNS? DNS--Domain name system,域名系统,简单来说就是域名和IP地址间的映射关系.当你在浏览器的地址栏输入网址(或域名,如 www,baidu.com)的时候,在网络中 ...
- DNS 基础
DNS Domain Name System:域名系统,主要用来将域名解析为IP.DNS以及相关系统存在,主要有两个原因: 可以让人容易记住名字,而不是记住IP: 它允许服务器改变IP,但是采用同样的 ...
- 1.DNS基础及域名系统架构
一.域名: IP地址往往难以记忆,所以我们一般使用域名进行管理 www.LinuxCast.net 1.严格的域名最后还有一个".",但一般省略不写 2.域名分为三个部分,用&qu ...
- 被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用
被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准參考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网 ...
- 网络安全(一)主动进攻之DNS基础和ettercap实现DNS流量劫持
alittlemc,个人原创,个人理解和观点.若有错误.不理解请与我联系,谢谢! 介绍了DNS的解析过程. DNS劫持的思路和实践. DNS 域名 以为live.bilibili.com为例子,从后到 ...
- python学习笔记--基础概要
1.python的int类型没有大小限制(或者说只受机器内存限制),str类型用单引号或者双引号都行,只要对称就可以了.(注意固定性) 2.使用[]表示存取字符串等序列的某一项(索引从0开始) 3.类 ...
随机推荐
- Shell脚本命令常用技巧
如果一个命令只有一次输出,但想持续观察输出变化,使用watch -d -n1 'df -h'可行,df -h输出一次硬盘使用情况,用上面指令可以持续观察.-d表示相邻输出如果有差异要高亮标记,-n1表 ...
- js第二次作业——2019.10.16
第一题:完成省城市的三级联动(包括湖南省),附代码和效果图. 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 </head> ...
- 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
文章目录 怎么跟你说 Service的出现,就是 解决ip不固定的问题 ,怎么解决呢 ? 听小刘慢慢道来 当Pod宕机后重新生成时,其IP等状态信息可能会变动,Service会根据Pod的Label对 ...
- PSO 粒子群算法
注:本人参考http://www.cnblogs.com/tiandsp/category/348031.html来实现的 算法步骤: 1.首先确定粒子个数与迭代次数. 2.对每个粒子随机初始化位置与 ...
- C# 多态virtual标记重写 以及EF6 查询性能AsNoTracking
首先你如果不用baivirtual重写的话,系统默认会为du你加new关键字,他zhi的作用是覆盖,而virtual的关键作用在dao于实现多态 virtual 代表在继承了这个类的子类里面可以使用o ...
- [数据库]000 - 🍳Sysbench 数据库压力测试工具
000 - Sysbench 数据库压力测试工具 sysbench 是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有 ...
- 使用swagger上传文件
经常使用swagger,可以通过设置[ProducesResponseType]标记接口的返回信息:swagger也能通过接口的参数列表,自动获得发送的数据结构信息. 不过有一个例外,就是上传文件的时 ...
- [LeetCode]144. Binary Tree Preorder Traversal二叉树前序遍历
关于二叉树的遍历请看: http://www.cnblogs.com/stAr-1/p/7058262.html /* 考察基本功的一道题,迭代实现二叉树前序遍历 */ public List< ...
- Mac电脑jsp连接mysql
四个步骤教你如何用jsp代码连接mysql 第一步:下载jdbc驱动 进入mysql官网:https://dev.mysql.com/downloads/connector/ 找到Connect/J ...
- Spring boot 启动错误处理:Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular...
错误原因 在pom中引入了mybatis-spring-boot-starter ,Spring boot默认会加载org.springframework.boot.autoconfigure.jdb ...