dns:域名的旅行


近日,某外国公司在中国建了一个新的根域名镜像服务器,引起了某些人的“担忧”。

    百度“根域名镜像服务器”的结果,第一条就是“根域名镜像服务器并不能摆脱美国监控”。
但事实果真如此吗?
    又或者有人说,中国境内的根域名解析服务器能够提升.com域名的访问速度?
    更有甚者,有人说,依靠一台根域名服务器就可以让“中国网民的访问习惯和访问信息以及网站的解析信息将完全暴露于美国公司的监视之下”。但,这可行吗?
——
带着诸多疑问,我们跟随着手机党常用域名之一的3g.qq.com来做一次域名解析之旅,看看我们离根域名服务器到底有多“遥远”。
——
(未完)『在那一瞬间』
     完成一次DNS解析要多久?约0.05秒。
    有人说,就在这0.05秒的时间内,我们不得不随着3g.qq.com横渡太平洋,来到大洋彼岸的美国。因为:那里有13台根域名服务器中的10台。
    天啊!也许对根域名服务器们来说,这将是一场毁灭性的灾难。“我们不得不处理每一次域名解析请求。全世界那么多人,那么多次的域名解析服务,都要经过我们。哦,不!这是一种不负责的行为!!”
    是的,它是不负责的,不管是对用户,还是对根域名服务器。在Internet设计之初,我们就不应该让这么大规模的“全民DDoS攻击”在根域名服务器上发生。我们不应该允许所有的请求都涌向根域名服务器。
    所以,在Internet中的真实情况是:根域名服务器很空闲。它们绝对比你那地方移动的域名服务器还要空闲。因为,它们正在做的事情,也许和我们想像的完全不同。
——
『我们只告诉你应该去哪里』
    这是对根域名服务器工作的最简单描述。
    我们能从根域名服务器那里查到什么?举个例子吧,你发给根域名服务器一个请求,要它解析hu60.cn,于是你得到了以下两个“奇怪”的结果:
f1g1ns1.dnspod.net
f1g1ns2.dnspod.net
    似乎不是我们所要的:hu60.cn所对应的IP地址啊。难道出问题了?
    不,没有。根域名服务器从来都不会直接告诉你域名的IP地址。你硬向人家要,人家只会说:“我没有这些信息。不过呢,你可以去这里问题:f1g1ns1.dnspod……,这个域名由它们负责解析”。
    是的,根域名服务器只会告诉你应该去哪里。而想要“监视”的人能够得到的,也仅仅是域名被访问的次数而已。而更重要的是,连这一点点的信息都是超级不准确的!因为,有缓存。
——
『被缓存的世界』
    缓存是什么,很简单。如果你在浏览器里面后退一步时,不需要从网上重新下载,而是直接载入上次访问的结果,那么这就是缓存。域名解析的缓存也是一样的。
    缓存的好处有很多,它使访问速度加快;它提高了服务器的承载能力;它甚至减少了网络堵塞……而现在,它有了一个新的好处:防止被统计。
    可怜的根域名服务器,想看看今天有多少人访问了qq.com。结果…结果…结果居然:100多次。晕!腾讯啥时候这么冷门了??
    而这时,腾讯的服务器们却纷纷抱歉:天哪,每秒钟都有几万人进入!我们啥时候能休息啊。
    到底是什么力量使差距变得如此之大呢?那么我们就来看看,在我们访问腾讯网时,根域名服务器到底做了什么:
    我们输入3g.qq.com,浏览器先检查手机里面是否有它的缓存。如果有,而且缓存没过期,就直接找到缓存里的IP地址,域名解析完成。域名在手机里的缓存时间约10分钟到1小时。
    如果没有缓存,或者缓存过期了,手机就会联系移动的域名解析服务器,让它把3g.qq.com的IP告诉自己,然后自己在缓存起来,方便下次用。
    移动的域名解析服务器会查找自己的域名解析缓存,如果发现了3g.qq.com,而且它没过期,就直接告诉给我们的手机,域名解析完成。(这个缓存的时间也是约10分钟到1小时)
    否则,它会查询另一个缓存:DNS服务器缓存(有效期为24到72小时)。它会在里面查找负责解析qq.com的域名服务器(因为3g.qq.com也归qq.com管),如果查到了(将会是NS1.QQ.COM等四台),它会选择其中一台,向它询问3g.qq.com的IP,然后发给手机并且自己也缓存一份。
    如果没找到,它才会极不情愿地跑去美国,向根域名服务器询问qq.com的解析由哪些服务器负责。然后,再进行上面的步骤。
——
    可见,由于有一份24到72小时的缓存存在,在此期间仅有第一次访问时才需要查询根域名服务器。
    也就是说,所谓“中国境内的根域名镜像服务器可以使.com域名访问提速”,也仅仅只在 你们那个地区 一天到三天之内 第一次访问某个域名 的时候才能看到效果。
    而这种“百年难遇”的速度提升,对我们来说,似乎意义不大啊。也许,它唯一能带来的,就是:如果海底光缆再断一次,.com/.net/.org等域名仍然能正常访问。
    而它能够给美国人带去的,也许只有以下这些:
有哪些域名在中国被访问;移动、联通、电信等所有运营商加一共有哪些域名解析服务器。
    而其他的,涉及到最终用户的所有信息,对它们都是不可见的。
    它们唯一能做的“坏事”,也许就是偷偷地删除或者改掉某些域名的域名服务器记录,这样,24到72小时之后,随着缓存纷纷过期,一些网站,就悲剧了。
——
一个奇怪的设想:DNS解析死循环
qq.com的域名服务器是ns1.qq.com,ns2.qq.com,ns3.qq.com,ns4.qq.com
假设这5个域名的IP我们都不知道。
为了解析qq.com,我们查询根域名服务器,得到ns1.qq.com等。
现在我们要向ns1.qq.com发送查询请求,但是……我们不知道它的IP,我们得解析它。但是,负责解析它的域名服务器就是它自己……
于是,死循环了。
我现在还不知道这种情况是怎样被解决的。也许,根域名服务器提供给我们的是域名服务器的IP吧。
可是,它又是怎么知道这些IP的?最初设置的?
我不知道。

评论

  1. 2025年前
    -0001-11-30 0:00:00

    很详细的文章,我现在认识了域名解析过程了,谢谢分享!

  2. 虎友
    2025年前
    -0001-11-30 0:00:00

    @李明:他是copy的。没有注明版权而已。

  3. 虎友
    2025年前
    -0001-11-30 0:00:00

    你这个也是copy老虎的。为毛不注明版权。。

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇