w h y y o u a r e h e r e ?

网络概论(二)


DNS
DNS (Domain Name System)原理入门。

什么是 DNS

由于 IP 不容易记忆,所以我们偏好让用户用域名(Domain Name)来访问服务器,但是数据包要传递必须用到 IP 。因此我们用 域名系统 来做 Domain Name 和 IP 的转换。

除了 好记忆 的原因,使用域名也比较有弹性,服务器的 IP 位置可能会变动(例如换不同服务商的机房就一定会变动IP地址),但是通过 DNS 就可以 保持域名不变

DNS 机制就是一个对照表,对照某域名查询它的 IP 地址是什么(你可以把它想象成一本巨大的电话本)。

在我们本机电脑上就有一个对照表的档案文件,就是 /etc/hosts,你可以编辑它,写下域名和 IP 地址的对应。

但是,本机不可能预先存好全世界域名的对照表,因此我们会用 DNS 协议来做即时线上查询。

域名(Domain Name)

我们先认识一下域名的组成:

一个域名组成是 sub-domain.second-level-domain(your-domain).top-level-domain

例如 test.51world.win 其中 .win 就是 top-level51worldsecond-level,而 testsub-domain。这个 sub-domain 可以是空的,因此 51world.win 是合法的域名(即本博客主页)。

全世界的 top-level-domain 是由 互联网号码分配局 IANA 所管理的,所有的 top-level-domain 的列表请参考 Root Zone Database,每个 top-level-domain 会分配给不同国家的非营利组织进行管理,例如管理 .cn 的单位是 中国互联网络信息中心(CNNIC)

一般个人或公司会向这些非营利组织进行购买和登记,例如 xxx.com 是登记在负责管理 .com 域名的 VeriSign Global Registry Services 组织。不过实际上我们不会直接跟 VeriSign Global Registry Services 购买,而是透过 域名注册商 进行购买。在这些域名注册商的网站上(如 NamecheapGodaddy阿里云-万网 等),你可以一次选购各种不同的域名。

买到自己的 second-level-domain 后,你就可以自行设定管理你的 sub-domain,例如 test1.51world.wintest2.51world.win 指向不同的 IP 地址,是不同的网站服务器。

DNS 如何查询

一般用户是如何进行 DNS 查询的呢?在操作系统中可以设置偏好的 DNS 服务器,通常会使用 ISP 默认提供的 DNS 服务器,也可以自己指定,例如:

  • 阿里 DNS http://www.alidns.com
  • 国内 114dns 的 114.114.114.114
  • Google 的 8.8.8.8

在 Mac 中的设定:

查询的流程:

先从客户端偏好的 DNS 开始查询;如果 DNS 找不到纪录,则该 DNS 会从根域名服务器(root nameserver)开始查询,直到找到负责该域名的 DNS 服务器为止 … 在第一次查询后,那台客户端偏好的 DNS 就会缓存起来。
举例:
查询 test.51world.win 时,如果客户端偏好的 DNS 没有纪录;
就会去问根域名服务器(root nameserver) .win 域名是谁管理的,它会回答出负责 .winnameserver
然后该 DNS 再去问 .winnameserver51world.win 是哪台 DNS 负责的;
再进一步,然后再去问那一台 test.51world.win 对应的 IP 是什么。

whois 指令

可以查询是谁注册了这个域名。不过,注册者可以选择关闭联络信息,所以不一定可以查到。


nslookup 指令

可以简单查询 DNS:

Non-authoritative answer 的意思是这个答案不是从负责 51world.win 域名的主机回传,而是直接从客户端偏好的 DNS 服务器 8.8.8.8 的缓存纪录回答的;
相反,Authoritative 的意思就是这个答案是从负责 51world.win 域名的 DNS 主机回传的。

dig 指令

也可查询 DNS,提供更详细的数据:

假设从根域名服务器开始查询:

DNS 记录分不同类型,如:
- A :一笔 IPv4 纪录,某个 subdomain 指向某一个 IPv4 地址
- AAAA :一笔 IPv6 纪录
- MX :邮件服务器(如 xxx.com 的邮件服务器和网站不是同一台服务器,很多公司会把邮件服务器改用 Google Apps,这在 DNS 设定中就可以指定 MX 记录:dig -t mx xxx.com)
- CNAME :别名,可以设定某个 subdomain 指向另一个地址(不一定是同一个主域名)

DNS 相关情境

了解 DNS 机制的话,就可以理解以下现象:

故障排除

有时网络故障,浏览器无法连接,但可以 ping ip address。这时候可以优先检查是否是 DNS 坏了,可以换一台电脑再试试看。

黄牛哄抬域名物价

其实购买一个域名一年并不贵。但是一些热门的网址,很多网络黄牛会预先注册保留起来。如果你要买则需要花更贵的价钱才能买到。

你也可以根据商标走法律程序,不过很多域名是跨国的,所以处理起来并不容易。

钓鱼网站

钓鱼网站,就是利用网址名字长得很像,然后 UI 画面也弄成几乎一样骗你输入帐号密码。

例如:你的 Gmail 收到重新设定密码的邮件,然后链接指向 g00gle.com/forget_password,画面长的跟 google 一模一样。没有注意网址的话,很可能就不小心输入自己的帐号密码。

域名忘记续约

购买域名需要定期续约,一年、三年、五年等。大公司可能因为交接失败,造成域名失效的现象层出不穷,例如:

DNS 污染

身为网站主,是无法控制用户偏好使用哪个 DNS 服务器的。在一个理想信任的网络环境中,如果用户的 DNS 不知道答案,它会一层一层去询问。但是在一个受管制的网络环境,DNS 可以被控制回答不正确的 IP ,进而限制一般用户无法顺利浏览,甚至回答钓鱼网站的 IP。这就是 DNS 污染。(据说苹果 iCloud 因为此原因导致各种被锁,让人火大)

Geo-based(基于地理位置) 或 Round-Robin(轮询调度)

查询 DNS 时,不一定总回答同一个 IP:

  • 有些网站会在不同国家有服务器,但希望网址是一样的。这时可以根据用户不同的地理位置,回答不同的 IP。(Geo-based)

  • 超高流量的网站,则可以回答不同台服务器的 IP ,来分散流量到不同服务器。(Round-Robin

拓展阅读


网络概论(一)网络 概念初识。
网络概论(二)DNS 原理入门。
网络概论(三)HTTP (Hypertext Transfer Protocol-超文本传输协议)入门。

< - 完 - >
- 坚持分享 鼓励创作 -