最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念。

常用概念:

TTL:

TTL为Time to live的缩写,网络相关地方存在于两个地方,一个是IP协议里,一个是DNS服务器上。

TTL in IP

IP协议里表示存活的时间,比如说TTL为126表示,这个IP包最大的存活时间为126秒。但是!IP包每经过一个路由器都会减一,也就是说一个IP包有可能因为两种情况而超时。一个是时间超时,一个是经过的路由太多(每经过一个路由叫做hop,中文貌似叫跳)。

这个值是发送数据包的那方设置的,也就是说我们每个人的系统里都有这么一个默认的TTL数。我们可以通过ping命令来做一下实验。

>ping 127.0.0.1

正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128 127.0.0.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms

可以看到我目前系统的TTL默认数为128

那我们ping一下一个网址

>ping www.zhengyi.me

正在 Ping urls61.xundns.cn [174.139.132.211] 具有 32 字节的数据:
来自 174.139.132.211 的回复: 字节=32 时间=350ms TTL=115
来自 174.139.132.211 的回复: 字节=32 时间=359ms TTL=115
来自 174.139.132.211 的回复: 字节=32 时间=369ms TTL=115
来自 174.139.132.211 的回复: 字节=32 时间=354ms TTL=115 174.139.132.211 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 350ms,最长 = 369ms,平均 = 358ms

我们发现这个TTL不是128,说明这个数据包经过了一些hop以后才到达最终的服务器。(128-115=13)。用tracert命令跟踪了一下具体有那几次转发,结果是经过了13个路由到达了最终目的地,正好符合我的猜想。

但是,真的如此么?其实不然,这个TTL是从服务器往我电脑上发包,到达我系统时剩余的TTL,至于为什么这么巧,因为对方系统的TTL设置和我系统是一样的。如何证明我是对的?

那我们ping一下自己家的路由器看看。

>ping 192.168.1.1

正在 Ping 192.168.1.1 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=64
来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=64 192.168.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 1ms,最长 = 2ms,平均 = 1ms

只剩下64了,说明俺家路由器的TTL是64。

不同的操作系统默认的TTL是不同的,Linux系统的TTL值为64或255,Windows NT系统为128,Windows 98系统为32,UNIX为255。

TTL在DNS中的含义

TTL为Time To Live缩写(生存时间),也就是域名记录的有效更新时间,简单的说它表示DNS记录在DNS服务器上缓存的时间。

举个例子,我在浏览器中输入www.zhengyi.me,于是浏览器就向我当前网络连接的DNS服务器发一个询问,然后这个DNS服务器也找不到于是又向它的上一级DNS服务器发询问,就这么一层一层发送直到根域名服务器(实际情况还要复杂一点,不是根域名服务器就知道的一切)此DNS服务器如果知道则返回IP,如果不知道则返回一个它认为知道的服务器地址,浏览器就依次类推去询问,最后终于得到这个网址对应的IP,于是又一级一级返回。但是这个返回结果中有一个TTL的东西来告诉这个服务器应该缓存这个结果多久,比如说400,就是意味着接下来的400秒钟如果有人再次来询问就直接返回这个结果。超过400秒则重新去询问。

这个对于网站的访问速度会有一点点的影响,在配置的时候也需要根据实际情况。DNS.LA有一个推荐的配置:https://www.dns.la/support/art_324.aspx

A Record

A代表Address,A记录将你的域名映射到某个IP地址上。通过这个配置可以将不同的子域名转到不同的地址上去。而且同一个域名也是有办法配成多个IP的,这样DNS服务器会在被询问的时候挨个的返回不同的IP,这也是一种负载均衡的办法。

比如配置

www.zhengyi.me     -->  10.124.12.123
dream.zhengyi.me --> 10.124.52.120

用nslooukup或Linux下的host可以查看一个域名对应的主机,我们试试看Google.com的。可以看到Google就搞了好多不同的主机,当然还有更多。

>nslookup google.com
服务器: hangzhou.zjhzptt.net.cn
Address: 202.101.172.35 非权威应答:
名称: google.com
Addresses: 173.194.127.32
173.194.127.40
173.194.127.46
173.194.127.39
173.194.127.36
173.194.127.38
173.194.127.41
173.194.127.34
173.194.127.35
173.194.127.33
173.194.127.37

CNAME Record

Canonical Name的缩写,叫做别名记录或者规范名字。这个允许我们将多个子域名指向随意的的主机上。那个和A记录有啥区别的,这个别名记录映射的是另一个域名而不是IP。那么为什么有了A记录还需要这个东西呢?

加入我们有两个子域名,www.zhengyi.me和dream.zhengyi.me,但我们只有一台主机。我们可以通过A记录配置成这样,

www.zhengyi.me     -->  10.124.124.124
dream.zhengyi.me --> 10.124.124.124

但是万一我们需要更改主机的时候就需要将两个都修改掉,那么会需要更多的时间去生效,所以就可以这么设置。这样子就需要更改一个A记录而不需要改所有的记录。

www.zhengyi.me     -->  10.124.124.124
dream.zhengyi.me --> www.zhengyi.me

MX Record

Mail Exchange的缩写。作用是将自己域名下的邮件服务器配置到自己的邮件服务器上去。我们发邮件到i@zhengyi.me的时候就会查询回来这个主机。配一个自己的域名的邮箱看起来感觉还是挺爽的。。。

未完待续。。。

DNS拾遗(一)的更多相关文章

  1. DNS拾遗(二)

    MX Record补充 MX记录有优先级的概念,数字越小表示优先级越高.所以一个域可以配置多个不同优先级的MX记录,如果邮件通过第一优先级记录无法递送,则采用第二优先级,以此类推. TXT Recor ...

  2. 转:DNS拾遗

    最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...

  3. 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置

    网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...

  4. Liunx下配置DNS服务

    当Ping 主机名时可以映射出该主机的IP地址,反之亦然.配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改HOSTS文件即可实现IP与主机名的相互解析.而在Linux下的DNS是用bin ...

  5. ★Kali信息收集~4.DNS系列

    ★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询  host -t ns 域名 A记录和MX记录查询  host 域名(host - ...

  6. Node.js:DNS模块的使用

    Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...

  7. Java DNS查询内部实现

    源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的.比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddre ...

  8. DNS报文格式(RFC1035)

    一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions)      2.1 格式          后面分析报文的时候详细解释.   ...

  9. Redis命令拾遗二(散列类型)

    本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明原文地址 :博客园蜗牛NoSql系列地址  http://www.cnblogs.com/tdws/tag/NoSql/ Redis命令拾 ...

随机推荐

  1. jQuery与其他JS库共存

    * 事件 * jQuery与其他JS库共存 * 调用jQuery.noConflict()方法 * 表示jQuery将"$"符号的使用权交出 * 通过两种方式将"$&qu ...

  2. (python)对象的引用

    对比下列两个例子: 例子1: a=10 b=a a=a+2 print "a=",a,"b=",b 结果:a= 12 b= 10 a+2后,b仍然是10 例子2 ...

  3. Android中的接口回调技术

    Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James ...

  4. linux下搭建nagios

    配置环境:1)CentOS 6.5 作为监控主机,IP:10.0.0.30(根据自己公司需要改变) 2)客户机: windows server  2008R2 , windows 7, windows ...

  5. thinkphp3.2.3批量执行sql语句(带事务)

    /** * 事务封装方法 * @access public 将此方法放入框架model.class.php中 * @param array $sqls 要执行的sql数组或语句 * @param ar ...

  6. struts2是如何加载相关的package元素节点信息的

    这不是一篇纯技术文章,而是一篇分享我个人在前后端分离路上收获的点点滴滴的文章,以此来为准备尝试前后端分离或者想了解前后端分离的童鞋做一个大体的讲解. 上一家公司是家小公司,做了一年的全栈开发,对前端的 ...

  7. where和having子句的区别

    having子句可以让我们筛选成组后的各种数据,having子句在查询过程中慢于聚合语句 having的用法 having子句可以让我们筛选成组后的各种数据,having子句在查询过程中慢于聚合语句( ...

  8. 使用doxygen制作C代码文档

    使用doxygen制作C代码文档 C 代码注释风格约定 行间注释 /*! * * 这里是注释 * */ 行内注释 <code here> /*! 这里是注释 */ doxygen 风格的宏 ...

  9. 基于Moodle的IT课程辅助教育平台搭建

    基于Moodle的IT课程辅助教育平台搭建 Moodle是一个开源课程管理系统(CMS),也被称为学习管理系统(LMS)或虚拟学习环境(VLE).它已成为深受世界各地教育工作者喜爱的一种为学生建立网上 ...

  10. 在自定义TableViewCell类里面添加按钮事件触发不了的一些实践

    我的自定义cell上面有5个控件,分别是一个背景的UIImageView,一个专辑的UIImageView(上面加了一个播放的button),一个专辑名字的UIImageView(上面加了显示标题的U ...