关于域名系统DNS解析IP地址的一些总结
关于域名系统DNS(Domain Name System)
从域名中解析出IP地址。
DNS主要由3部分组成:
① 名称解析器(resolver)
② 域名空间(domain name space)
③ 名称服务器(name server)
DNS服务器获取域名空间的部分信息的方法:
① 由管理员编辑一个原始区域文件;
② 从其他名称服务器那里复制区域文件;
③ 通过向其他DNS服务器查询来获取具有一定时效的缓存信息。
名称服务器的3种主要类型:
① 主(primary)名称服务器:拥有一个区域文件的原始版本的服务器。
② 次(secondary)名称服务器:从其他主名称服务器那里复制一个区域文件。是一个只读版本。次名称服务器通过区域传输(zone transfer)跟随主名称服务器上的区域文件进行变化。
③ 惟高速缓存(caching-only)名称服务器:没有区域文件。它的职责是帮助名称解析器完成名称解析,并缓存解析结果,便于以后使用。当惟高速缓存名称服务器第一次启动时,他没有存储任何DNS信息。它是在启动之后,通过缓存查询的结果来逐渐建立DNS信息。缓存表项的生存时间TTL由提供授权解析结果的名称服务器决定。该服务器将查询的生存时间和名称解析一起返回。
域名解析
TCP/IP 的域名系统是一个有效的、可靠的、通用的、分布式的 名称——地址 映射系统。
域名解析有两种方式:正向解析和反向解析。
① 正向解析:根据域名查询对其对应的IP地址或其他相关信息。
② 反向解析:根据主机的IP地址查询其对应的域名。
DNS在名称空间中设置了一个称谓in-addr.arpa的特殊域,专门用于反向解析。
为了能够使反向解析用与正向解析相同的方法进行解析,反向解析将IP地址的字节倒过来写,构成反向解析的“名称空间”。如:地址是202.119.80.126的主机的域名写成126.80.119.202.in-addr.arpa。
DNS服务器和客户端属于TCP/IP模型的应用层,DNS既可以使用TCP,也可以使用UDP,使用的是TCP/UDP的53号端口。
DNS接收两种类型的解析:递归解析和反复解析
① 递归解析(递归查询):
要求名称服务器系统一次性完成名称——地址变换。
递归查询强制指定的DNS服务器对请求做出响应(响应要么是一个包含相应解析结果的成功的响应,要么是一个失败的响应)。
本地的DNS服务器可能需要通过再查询一些其他的DNS服务器才能完成解析,当DNS服务器从其他服务器得到响应后,再向客户端发送回答。
② 反复解析(迭代查询):
要求客户端本身反复寻求名称服务器的服务来获得最终的解析结果。
过程:名称服务器收到请求后,若能够给出解析结果,则返回最终结果到客户端;如果本名称服务器无法给出解析结果,则返回给请求者它认为能够给出解析结果的服务器的IP地址。
请求者收到该IP地址后,将向该地址发送解析请求,直到获得最终的解析结果或失败的响应。
名称服务器在没有任何可以回答的信息时,将返回一个失败的响应。
怎样提高解析效率
可以采用两步名称解析机制和高速缓存技术解决这个问题。
① 两步名称解析机制
Ⅰ. 先通过本地名称服务器进行解析;
Ⅱ. 如果不行,再采用自顶向下的方法搜索。
优点:既提高了效率,又保证了域名管理的层次结构。
② 高速缓存
在名称服务器中使用高速缓存技术,存放最近解析过的 名称——地址 映射和描述解析该名称服务器位置的信息。
优点:可以避免每次解析非本地名称时都进行自顶向下的搜索,从而减少非本地名称解析带来的开销。
缺点:若授权名称服务器中的 名称——地址 映射已经发生了变化。而高速缓存未能作出相应的刷新,会有一个有效性的问题,缓存失效,从而导致解析错误。
有效性问题解决办法:
服务器向解析器报告缓存信息时,必须注明该信息是非授权的,同时还要指出能够给出授权解析结果的名称服务器的地址。
此外,高速缓存中的每一个映射表项都有一个生存时间TTL,一旦某个表的TTL时间到期,便将它从缓存中删除。
本文链接:http://www.cnblogs.com/xsilence/p/6034467.html
关于域名系统DNS解析IP地址的一些总结的更多相关文章
- 免费公共DNS服务器IP地址大全(2017年6月24日)
收集全球各个常用公共DNS服务器 IP地址,欢迎各位朋友评论补充! 国内常用公共DNS 114 DNS: (114.114.114.114: 114.114.115.115) 114DNS安全版 ...
- MSF魔鬼训练营-3.1.1信息收集-通过DNS和IP地址挖掘目标网络信息
情报搜集环境站渗透测试全过程的80%~90% 一.外围信息搜集(公开渠道信息搜集OSINT open source intelligence) 3.1.1信息收集-通过DNS和IP地址挖掘目标网 ...
- 公共 DNS server IP 地址
公共 DNS server IP 地址 名称 DNS server IP 地址 CNNIC SDNS 1.2.4.8 210.2.4.8 114 DNS 114.114.114.114 114.114 ...
- 常用的公共 DNS 服务器 IP 地址
转载自:小哈龙 2019-04-12 09:34:42 公共 DNS 服务器 IP 地址 名称 DNS 服务器 IP 地址 阿里 AliDNS 223.5.5.5 223.6.6.6 CNNIC SD ...
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
/** * JavaMail SMTP服务器发送邮件程序示例 * 扮演SMTP服务器角色与邮件客户端软件最大的区别就是: * SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名 ...
- Linux上DNS解析总是选择resolv.conf中第二位的DNS服务器IP地址
问题现象: 在Linux机器上,用户自建了一台DNS服务器.然后改动/etc/resolv.conf将其服务器IP地址添加到第一项.将阿里云的内网DNS放到第二位,然而在测试过程中发现telnet,p ...
- DNS、IP地址、子网掩码和默认网关
一.DNS服务器 DNS是指:域名服务器(Domain Name Server).在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转 ...
- Linux socket编程 DNS查询IP地址
本来是一次计算机网络的实验,但是还没有完全写好,DNS的响应请求报文的冗余信息太多了,不只有IP地址.所以这次的实验主要就是解析DNS报文.同时也需要正确的填充请求报文.如果代码有什么bug,欢迎指正 ...
- 通过阿里云域名动态解析 IP 地址
这两天在家里用树莓派折腾了一个家用服务器,主要用来做 mac 的 Time Machine ,还有就是当做下载机和 nas ,想着平时上班时间家里没人用网络,空着也是空着,就可以利用空闲带宽下个美剧啥 ...
随机推荐
- 用NPOI从DataBase到Excel
NPOI的C# Helper代码 public static void WriteExcel(DataTable dt, string filePath) { ) { HSSFWorkbook wk ...
- webapi filter过滤器中获得请求的方法详情(方法名,Attributes)
public class GlobalActionFilter : ActionFilterAttribute { private string _requestId; public override ...
- 怎么搭建EF的环境?(Entity Framework)
1.EF是什么? EF是.net封装的一个用于数据库交互的实体层框架,它的全称是Entity Framework. 2.EF搭建: 新建之后,我们就可以看到里面的内容: 我们可以分别看一下它里面有些什 ...
- Delphi 取得 iOS 辅助使用里的字型大小
说明:在 iOS 里有一个人性化的辅助设定,可以将字体放大,但这个设定对 Delphi 是不起作用的,还好 Delphi 提供了这个 iOS API 可以取得. 开发环境:Delphi 10 Seat ...
- Hibernate —— 概述与 HelloWorld
一.Hibernate 概述 1.Hibernate 是一个持久化框架 (1)从狭义的角度来讲,“持久化” 仅仅指把内存中的对象永久的保存到硬盘中的数据库中. (2)从广义的角度来讲,“持久化” 包括 ...
- 国内IT软件开发人员现状
首先在这里讨论的是国内的大陆地区.在今天这个中国IT环境下,开发人员出路何在?一个优秀开发人,应该有致力于编写优雅代码,让别人读得懂,具有可读性,可测试性的代码,不仅仅是可以运行的代 ...
- Ext.Net MVC 配置(2)
在VS2012中使用NuGet类库管理器配置EXT.NET MVC环境在“Ext.Net MVC 配置(1)”文章已经写到,方法很简单也很方便,但就是不知道它在安装这些库时对项目做了什么很不爽. 通过 ...
- CSS3过渡详解-遁地龙卷风
第二版 0.环境准备 (1)过渡需要浏览器的支持,使用这些属性要加上浏览器厂商的前缀,我用的chrome49已经不需要前缀了, -o- Opera -webkit- Safari.Chrome -mo ...
- C# 生成字符串的 CheckSum
C# 生成字符串的 CheckSum private static string CheckSum(string message) { char[] chars = message.ToCharArr ...
- MRC下多个对象的内存管理
//set方法传递进来对象的生命周期,要求是在当前对象销毁之前,它一直存在就好- (void)setCar:(Car *)car{ //1.判断set方法传递进来的值是否与成员变量中保存的是同一个对象 ...