最近帮朋友注册域名配置主机,碰到一些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. Java自定义表单、自定义字段

    最近想实现用户自定义数据库中的字段,我想大部分人第一想到的就是EAV(Entity-Attribute-Value),这种方式对于写一个小的毕业设计应该还可以使用,当然也有很多CMS系统采用这种方式, ...

  2. C# 动态加载程序集dll (实现接口)

    一.程序集(接口程序集):LyhInterface.Dll namespace LyhInterface { public interface ILyhInterface { void Run(); ...

  3. NABCD

    1) N (Need 需求) 随着科学技术的进步和计算机行业的迅速发展,人们的工作效率得到大大提高.计算机信息处理系统的引进已彻底改变了许多系统的经营管理. 图书管理系统是学校管理机制中的重要组成部分 ...

  4. IOS 6和 IOS7适配的一些问题

    由于在做一个ios的通用设计平台,那么客户端解析的时候就涉及到一些ios不同版本,不同分辨率的适配问题 首先碰到的就是navigation bar中的item的背景色的问题 在ios7中设置setti ...

  5. 猜数字 事先给定一个数字,然后让用户猜3次,猜不中就输了,猜中就赢了。 每次猜错,给出提示,less or big

    c = 0a = 10while c <3:    b = int(raw_input("请输入数字"))    if b == a:        print " ...

  6. [转]MySQL批量更新死锁案例分析

    文章出处:http://blog.csdn.net/aesop_wubo/article/details/8286215 问题描述 在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常, ...

  7. vs2010的“应用程序向导”新建MFC程序报错“当前页面的脚本发送错误”

    原创文章,欢迎阅读,禁止转载. 问题现象不知道从什么时候开始,我的vs2010不能新建MFC程序了,报错如图:... 解决方法根据提示排查,发现是应用程序向导的相关html被损坏了.从同事电脑上把   ...

  8. Fix git 提交代码错误

    今天用git clone下代码,修改,push提交,发现以下错误 [root@localhost gocache]# git push origin master error: The request ...

  9. IIS 部署 node.js ---- 基础安装部署

    一些可能有用的相关文章: https://blogs.msdn.microsoft.com/scott_hanselman/2011/11/28/window-iisnode-js/ http://b ...

  10. mysql 函数(二)

    1.space(N) 输出空格 SELECT SPACE(5); -> '     ' 2.replace(str,from_str,to_str) 讲str中的from_str 替换成to_s ...