• DNS学习


    DNS (Domain Name System 的缩写)域名系统,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53,它的的作用非常简单,就是根据域名查出IP地址。简单来讲就是一本巨大的电话本。

    举例来说,如果你要访问域名www.baidu.com,首先要通过DNS查出它的IP地址是14.215.177.38。

    IP的查询其实是分级查询的。

    一、首先是获知DNS的服务器的IP,就是要先上网,它才可能通过DNS去获悉该域名网址的IP。

    DNS服务器的IP地址,有可能是动态的,每次上网时由网关分配,这叫做DHCP机制;也有可能是事先指定的固定地址。Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf文件。

    二、根据域名的层级来具体分级查询

    以下都以www.baidu.com为例来介绍域名的层级

    其实我们常规看到的网址都是简化多的,每个域名后面会有一个根域名,百度的域名其实就是www.baidu.com.root,简写为www.baidu.com.。因为,根域名.root对于所有域名都是一样的,所以平时是省略的。

    根域名的下一级叫做"顶级域名"(top-level domain,缩写为TLD),比如.com、.cn这些;

    再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.baidu.com里面的.baidu;这一级域名是用户可以注册的;

    再下一级是主机名(host),比如www.baidu.com里面的www,又称为"三级域名";

    域名的层级结构如下:

    三级域名.次级域名.定级域名.根域名

    (host.sld.tld.root)

    DNS根据上面的域名层级开始进行分级查询的

    每一级域名都有自己的NS记录,NS记录指向该级域名的域名服务器。这些服务器知道下一级域名的各种记录,一般查询IP的缓存为600s,就是600s内不会去重新查找该域名IP。

    从根域名开始查询过程大概如下:

    1. 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
    2. 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
    3. 从"次级域名服务器"查出"主机名"的IP地址

    还有个问题就是DNS是怎么知道根域名服务器的IP地址的,结果就是根域名服务器"的NS记录和IP地址一般是不会变化的,所以内置在DNS服务器里面,一般来说每1000小时才查询一次根域名服务器的列表,世界上一共有十三组根域名服务器,从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET

    三、DNS的记录类型

    域名与IP之间的对应关系,称为"记录"(record)。根据使用场景,"记录"可以分成不同的类型(type)。

    1. A:地址记录(Address),返回域名指向的IP地址。
    2. NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
    3. MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
    4. CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。
    5. PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。

    一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。

    以上信息从阮一峰博客处学习

  • 相关阅读:
    在Objective-C声明Block的几种方式
    属性初始化
    OC协议
    堆排序的OC实现
    iOS 应用性能测试的相关方法、工具及技巧
    墙裂推荐 iOS 资源大全
    剖析@weakify 和 @strongify
    iOS开发大神必备的Xcode插件
    聊聊 KVC 和 KVO 的高阶应用
    TableView的优化
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/9873148.html
Copyright © 2020-2023  润新知