DNS 一站到家之历史由来

DNS,又名 Domain Name System,又名域名系统,是域名和IP地址相互映射的一个分布式数据库。今天我们说一说它的历史由来。

Internet 简史

首先,先说一说 Internet 的起源。

雏形阶段:从某种意义上,Internet可以说是美苏冷战的产物。这样一个庞大的网络,它的由来,可以追溯到 1962 年。当时,美国国防部为了保证美国本土防卫力量和海外防御武装在受到前苏联第一次核打击以后仍然具有一定的生存和反击能力,认为有必要设计出一种分散的指挥系统:它由一个个分散的指挥点组成,当部分指挥点被摧毁后,其它点仍能正常工作,并且这些点之间,能够绕过那些已被摧毁的指挥点而继续保持联系。为了对这一构思进行验证,1969 年,美国国防部国防高级研究计划署(DoD/DARPA)资助建立了一个名为 ARPAnet(即―阿帕网‖)的网络,这个网络把位于洛杉矶的加利福尼亚大学、位于圣芭芭拉的加利福尼亚大学、斯坦福大学,以及位于盐湖城的犹它州州立大学的计算机主机联接起来,位于各个结点的大型计算机采用分组交换技术,通过专门的通信交换机(IMP)和专门的通信线路相互连接。这个阿帕网就是Internet最早的雏形。

到1972年时,ARPANET网上的网点数已经达到40个,这40个网点彼此之间可以发送小文本文件(当时称这种文件为电子邮件,也就是我们现在的E-mail)和利用文件传输协议发送大文本文件,包括数据文件(即现在Internet中的FTP),同时也发现了通过把一台电脑模拟成另一台远程电脑的一个终端而使用远程电脑上的资源的方法,这种方法被称为 Telnet。由此可看到,E-mail,FTP 和Telnet是 Internet 上较早出现的重要工具,特别是 E-mail 仍然是目前 Internet 上最主要的应用。

1972 年,全世界电脑业和通讯业的专家学者在美国华盛顿举行了第一届国际计算机通信会议,就在不同的计算机网络之间进行通信达成协议,会议决定成立Internet工作组,负责建立一种能保证计算机之间进行通信的标准规范(即―通信协议‖);1973 年,美国国防部也开始研究如何实现各种不同网络之间的互联问题。

至1974年,IP(Internet协议)和TCP(传输控制协议)问世,合称TCP/IP协议。这两个协议定义了一种在电脑网络间传送报文(文件或命令)的方法。随后,美国国防部决定向全世界无条件地免费提供TCP/IP,即向全世界公布解决电脑网络之间通信的核心技术,TCP/IP 协议核心技术的公开最终导致了 Internet 的大发展。

到 1980 年,世界上既有使用 TCP/IP 协议的美国军方的ARPA网,也有很多使用其它通信协议的各种网络。为了将这些网络连接起来,美国人温顿·瑟夫(Vinton Cerf)提出一个想法:在每个网络内部各自使用自己的通讯协议,在和其它网络通信时使用 TCP/IP 协议。这个设想最终导致了 Internet 的诞生,并确立了 TCP/IP 协议在网络互联方面不可动摇的地位。

70 年代末到 80 年代初,可以说是网络的春秋战国时代,各种各样的网络应运而生。 八十年代初,DARPANet 取得了巨大成功,但没有获得美国联邦机构合同的学校仍不能使用。为解决这一问题,美国国家科学基金会(NSF)开始着手建立提供给各大学计算机系使用的计算机科学网(CSNet)。CSNet 是在其他基础网络之上加统一的协议层,形成逻辑上的网络,它使用其他网络提供的通信能力,在用户观点下也是一个独立的网络。CSNet 采用集中控制方式,所有信息交换都经过 CSNet-Relay(一台中继计算机)进行。

1982 年,美国北卡罗莱纳州立大学的斯蒂文·贝拉文(Steve Bellovin)创立了著名的集电极通信网络——网络新闻组(Usenet),它允许该网络中任何用户把信息(消息或文章)发送给网上的其他用户,大家可以在网络上就自己所关心的问题和其他人进行讨论;1983 年在纽约城市大学也出现了一个以讨论问题为目的的网络——BITNet,在这个网络中,不同的话题被分为不同的组,用户可以根据自己的需求,通过电脑订阅,这个网络后来被称之为 Mailing List(电子邮件群);1983年,在美国旧金山还诞生了另一个网络 FidoNet(费多网或Fido BBS)即公告牌系统。它的优点在于用户只要有一部电脑、一个调制解调器和一根电话线就可以互相发送电子邮件并讨论问题,这就是后来的 Internet BBS。

以上这些网络都相继并入Internet而成为它的一个组成部分,因而Internet成为全世界各种网络的大集合。

发展阶段:Internet 的第一次快速发展源于美国国家科学基金会(National ScienceFoundation简称 NSF)的介入,即建立 NSFNET。

八十年代初,美国一大批科学家呼吁实现全美的计算机和网络资源共享,以改进教育和科研领域的基础设施建设,抵御欧洲和日本先进教育和科技进步的挑战和竞争。

80年代中期,美国国家科学基金会(NSF)为鼓励大学和研究机构共享他们非常昂贵的四台计算机主机,希望各大学、研究所的计算机与这四台巨型计算机联接起来。最初NSF曾试图使用 DARPANet 作 NSFNET 的通信干线,但由于 DARPANet 的军用性质,并且受控于政府机构,这个决策没有成功。于是他们决定自己出资,利用 ARPANET 发展出来的 TCP/IP 通讯协议,建立名为 NSFNET 的广域网。

1986 年 NSF 投资在美国普林斯顿大学、匹兹堡大学、加州大学圣地亚哥分校、依利诺斯大学和康纳尔大学建立五个超级计算中心,并通过 56Kbps 的通信线路连接形成NSFNET的雏形。1987 年 NSF 公开招标对于 NSFNET 的升级、营运和管理,结果 IBM、MCI 和由多家大学组成的非盈利性机构 Merit 获得 NSF 的合同。1989 年 7 月,NSFNET 的通信线路速度升级到 T1(1.5Mbps),并且连接 13 个骨干结点,采用MCI提供的通信线路和 IBM 提供的路由设备,Merit 则负责 NSFNET 的营运和管理。由于NSF的鼓励和资助,很多大学、政府资助甚至私营的研究机构纷纷把自己的局域网并入 NSFNET 中,从 1986 年至 1991 年,NSFNET 的子网从 100 个迅速增加到 3000 多个。NSFNET 的正式营运以及实现与其他已有和新建网络的连接开始真正成为 Internet 的基础。

Internet 在 80 年代的扩张不单带来量的改变,同时亦带来某些质的变化。由于多种学术团体、企业研究机构,甚至个人用户的进入,Internet 的使用者不再限于纯计算机专业人员。新的使用者发觉计算机相互间的通讯对他们来讲更有吸引力。于是,他们逐步把 Internet 当作一种交流与通信的工具,而不仅仅只是共享 NSF 巨型计算机的运算能力。

商用阶段:进入 90 年代初期,Internet 事实上已成为一个―网际网‖:各个子网分别负责自己的架设和运作费用,而这些子网又通过 NSFNET 互联起来。NSFNET 连接全美上千万台计算机,拥有几千万用户,是 Internet 最主要的成员网。随着计算机网络在全球的拓展和扩散,美洲以外的网络也逐渐接入 NSFNET 主干或其子网。

Internet 和 internet 的区别:Internet 是由许多小的网络(子网)互联而成的一个逻辑网,每个子网中连接着若干台计算机(主机)。而 internet,则是由多个使用同一网络互联协议的小型网络组成的任何网络。

域名系统的历史

DNS 是跟随着 Internet 的发展而生的。

在 20 世纪 70 年代的时候。ARPAnet 是一个只有几百台主机的小型社区。通过一个 HOSTS.TXT 这个文件就可以很好的维护主机名到地址的解析。如今我们熟悉的 UNIX 主机表(/etc/hosts)就是由 HOSTS.TXT 演变而来的。

当时的 HOSTS.TXT 是由一个 SRI 的网络信息中心维护的,通过单独的主机 SRI-NIC 分发。我们需要定期从他们的服务器上获取最新的 HOSTS.TXT 文件。当然在你解析有变化的时候,你需要通过邮件通知 NIC 请求更新你的地址。

但随着 ARPAnet 上主机数量的不断增加,维护该文件变得愈发的困难,产生了如下问题:

  • 流量和负载,在分发 HOSTS.TXT 文件的过程中产生的网络流量和处理器负载,分发变得艰难。
  • 名称冲突,NIC 只能保证分配地址的唯一性,没有管理主机名称的权利。无法阻止有人添加一台重复的主机。
  • 一致性,由于主机数量的不断增加以及起庞大的基数,可能在你拉取 HOSTS 文件的同时,又有一台新的主机加入或由的主机地址已经发生改变。

为了解决这个问题,南加州大学信息科学研究所(USC’s Information Sciences Institute)的 Paul Mockapetris 负责设计这个新系统的体系结构。1984年,他发布了 RFCs882 和 883,用以被描述 DNS。这些 RFC 后来被 RFC 10341035 所取代,也就是现在的 DNS 规范。当然,现在该规范已经被许多其他的 RFC 所补充,包括:DNS 潜在的安全问题、实现问题、管理缺陷、名称服务器的动态更新机制记忆保证区域数据的安全性,等等。

RFC 是请求评议文件(Request for Comments documents)的简称,这是 Internet 上引进新技术的相对非正式过程的一部分。通常 RFC 是为技术的实现者准备的。

DNS 简述

实际上 DNS 是一个分布式的数据库。这允许对整体数据库的各个部分进行本地控制,并且各个部分采用的是客户端/服务器(client/server)模式。通过复制和缓存等机制,使得其拥有了健壮性和充足的性能。

名称服务器(ns,nameserver)就是该机制中的服务器端。名称服务器包含了数据库中某些部分的信息,并使得这些信息对被称为解析器的(resolver)的客户端可用。 而 DNS 数据库的结构类似与 UNIX 文件系统的结构,呈倒置树形。最上方,我们称之为 root 节点,用空标签“ ”,一般用 . 标示。之后就如树的枝桠一样扇开。如下图: dns_db

域的概念:域就如文件系统中的目录,我们可以将根(节点)域划出 comcn 等子域。又可以进一步将 com 划分出更多的子域,如: deepzz.com 中的 deepzz 域。当然还可以往下划分…

我们平时说到的域名就是将各个域用 . 连接起来,如 blog.deepzz.com. (最后的 . 是默认存在的,代表 root 节点(根域))。和文件系统中的绝对路径类似,如:/usr/local/bin,只不过是域名是回溯的,要倒着来。如下图: dns_back

在 DNS 中每个域都可以被分解成若干个子域,这些子域可以派分给不同的组织。比方说,一个叫 EDUCAUSE 的组织管理着 edu 域,但是却委托加州大学伯克利分校管理 berkeley.edu 子域。加州大学伯克利分校又可以新的区域派分给其它管理者(未画出)。如下图: dns_back

在网络上的每台主机都有一个域名,它指向该主机的相关信息(见下图)。这些信息中可能包含 IP 地址、邮件路由信息等。此外,主机也可以拥有一个或多个域名别名(domain name aliases),在域名记录中叫 cname,这些域名别名是从某个域名(别名)指向另一个域名的指针。下图中的 mailhub.nv... 就是 rincon.ba.ca... 的别名。 dns_ptr

那为什么要采用如此复杂的结构呢?这就是为了解决 HOSTS.TXT 文件所存在的问题。例如,采用层次结构的域名是为了消除名称冲突的问题。如下图,通过划分区域 hichoc。分别各有一台名为 puella 的主机,但它们不会冲突。 dns_conflict

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 228 天前,文中所描述的信息可能已发生改变,请谨慎使用。

专题「DNS 一站到家」的其它文章 »

Comments