1. dns决定终点
introdution
dns协议把域名替换成IP, 但根据使用场景的不同, 一个域名可以被翻译成好几个IP, 用于不同目的, 比如你用浏览器打开baidu.com
, 跟你给liangxiaohan@baidu.com
发邮件的时候, 虽然都是想翻译baidu.com
, 但你拿到的IP肯定是不同的. 常见的目的&IP翻译方法有:
浏览器访问域名的时候要把域名替换成IP方便HTTP封包, 这种域名变IP的行为叫一条A记录.
如果你给这个域名下的邮箱发邮件, 负责接收这个邮件的服务器IP叫一个MX记录
如果某个域名实际承载方是一个别的域名, 那么你这个域名就是它的域名的别名, 这叫一个CNAME记录
你的域名由一个DNS服务器负责解析, 这个DNS服务器的IP是你这个域名的NS记录
解析过程
电脑浏览器/系统都不知道这个域名的IP是多少
电脑问你的nameserver(就是/etc/resolve.conf)
nameserver也不知道, 他觉得很丢脸, 于是决定帮你查回来挽回尊严
nameserver先去DNS根服务器给你查.com解析服务器的IP
com解析服务器给他, baidu.com的解析服务器IP
baidu.com的解析服务器IP告诉他www.baidu.com的IP
他这时候再回复电脑www.baidu.com的IP
雨后小故事
我们现在有两个nameserver, 192.168.0.1 与 192.168.1.1: 我随便敲了个不存在的域名, 想看nameserver不知道的情况下它是怎么做的. ok
前面我们像nameserver(53端口)提问, 但他装死不回
不回你的原因是他不知道, 他跑出去查去了, 查不到结果之前是不会回你的
查回来了, 回复你了xiaohan123.com的域名对应的IP, 同时我们也能看到光是回复这一条就消耗了1.2秒, 还加上之前那些没回复的, 访问冷门域名还真是浪费不少时间
一些小问题
[默认使用UDP]
DNS协议是我见过的第一个默认使用UDP协议的, 因为一来一回也不用什么安全手段保证包不丢失. 上面的图你也看到了, 只要你不回我就一直发, 图个快就完事儿了, DNS最怕的是慢, 上面的冷门域名我们花了一秒多才搞定, 这在网页浏览里是难以想象的. 有人说DNS在长期收不到回复的时候会使用TCP重发, (咱们就不搞玄学了, 说实话我没见过)
[TTL的设置]
TTL的问题, 是另一个有意思的事情, 每一条A/MX/CNAME记录都带一个TTL, 表名这条记录在你身上的缓存时间(因为每个人都会缓存一下), 这个时间怎么设置好呢?
如果你的网站已经成熟, 很少会产生IP变动的情况, 那就设置成最长的24小时, 减少DNS查询
如果你的网站IP快速变动, 比如阿里云的DNS解析, 域名经常换来换去的, 设置的短一点能最快的让域名解析生效
Last updated
Was this helpful?