应用层引言
- 应用层下面的各层提供了传输服务,但它们并不真正为用户工作。在本章中,我们将学习一些实际的网络应用。然而,即使在应用层也仍然需要协议的支持,以便各种应用程序能够工作。因此,在开始介绍这些应用之前,我们将先介绍其中的一个协议。这个协议就是DNS ,它负责处理Internet 命名问题。之后,我们将介绍3 个实际应用:电子邮件、万维网( World Wide Web)和多媒体。我们将以对内容分发应用的简单介绍来结束本章,包括对等网络的基本概念。
引言
- 虽然在理论上,所有程序通过使用它们存储的计算机网络地址(例如IP ),就可以访问Web 主页、邮箱和其他资源,但是这些地址很难让人记住。而且浏览一个公司在128.111.24.41 上的Web 主页,意味着如果该公司将主页移到了另一台机器上,且该机器具有了不同的IP 地址时,那么必须将该机器的IP 地址通知到每个人。因此,人们引入了可读性好的高层名字,以便将机器名字与机器地址分离开。在这种方式下,无论真正实用的IP 地址是什么,人们熟知的公司Web 服务器为 www.cs.washington.edu。然而,因为网络本身只能理解数字形式的地址,所以需要某种机制将名字转换成网络地址。下面,我们学习如何在Internet 上完成这种从名字到地址的映射。
- 早期的ARPANET,那时只有一个简单的文件,名叫hosts.bet,它列出了所有的计算机名字和它们的IP 地址。每天晚上,所有主机都从一个维护此文件的站点将该文件取回,然后在本地进行更新。对于一个拥有几百台大型分时机器的网络而言,这种方法工作得相当好。然而,当几百万台PC 连接到Internet 以后,使用网络的每个人都意识到这种方法将不能继续有效工作了。一方面,这个文件变得非常庞大。然而,更重要的是,除非集中管理机器名字,否则主机名冲突的现象将会频繁发生:而且在一个巨大的国际性网络中,由于负载和延迟,要实现这种集中式的管理简直难以想象。为了解决这些问题, 1983 年人们发明了域名系统( DNS, Domain Name System )。自发明以来,它一直是Internet 的关键组成部分。
- DNS 的本质是发明了一种层次的、基于域的命名方案,并且用一个分布式数据库系统加以实现。DNS 的主要用途是将主机名映射成IP 地址,但它也可以用于其他用途。RFC 1034、1035 、2181 给出了DNS 的定义,后来其他文档对它又做了进一步的阐述。简要地说, DNS 的使用方法如下所述。为了将一个名字映射成IP地址,应用程序调用一个名为解析器( resolver)的库程序,并将名字作为参数传递给此程序。传输层Internet文件服务器实例中的gethostbyname 就是一个解析器例子。解析器向本地DNS 服务器发送一个包含该名字的请求报文:本地DNS 服务器查询该名字,并且返回一个包含该名字对应胆地址的响应报文给解析器,然后解析器再将IP地址返回给调用方。查询报文和响应报文都作为UDP 数据包发送。有了IP地址以后,应用程序就可以与目标主机建立一个TCP 连接,或者给它发送UDP 数据包。
1、DNS名字空间
- 管理一个大型并且经常变化的名字集合不是个简单的问题。在邮政系统中,名字管理要求所有的信件必须(隐式地或显式地)指定国家、州或省、城市、街道地址以及收件人的名字。通过这种地址的层次结构,纽约州White Plains 市Main 大街上的路人甲与德克萨斯州奥斯汀市Main 大街上的路人甲就不会产生混淆。DNS 采用了同样的工作方式。对于Internet,命名层次结构的顶级由一个专门组织负责管理。该组织名为Internet 名字与数字地址分配机构(ICANN, Internet Corporation for Assigned Names and Numbers)创建于1998 年,它是Internet 成长为全球性并且受到经济关注的部分成熟标志。从概念上讲, Internet 被划分为超过250 个顶级域名( top-level domains ),其中每个域涵盖了许多主机。这些域又被进一步划分成子域,这些子域可被再次划分,依此类推。所有这些域可以表示为一棵树,如下图所示。树的叶子代表没有子域的域(当然要包含机器)。一个叶结点域可能包含一台主机,或者代表一个公司,该公司包含数以千计的主机。
- 顶级域名分为两种类型:通用的和国家或地区的。在下表中列出的通用域名包括从20 世纪80 年代开始的原始域名和向ICANN 申请引入的新域名。将来或许会增加其他的通用顶级域名。国家或地区域名包括每个国家或地区,国家或地区的域名由ISO 3166 文档定义。2010年推出了使用非拉丁字母的国际化国家或地区域名(比如说.中国)。这些域名使得说阿拉伯语、西里尔文、中文或其他语言国家的人以自己的母语来命名他们的主机。获得一个二级域名容易得多,比如 name-of-company.com。顶级域名由ICANN 委任的注册机构(regis位ar)负责运行。要获得一个域名,只要到相应的注册机构(在这种情况下是com ),检查所需的名字是否可用,并且不是别人的商标。如果没有问题,请求注册域名的一方向管理域名的注册方支付一小笔年费,即可得到心仪的域名。
- 然而,随着Internet 变得越来越商业化和越来越国际化,它也变得更具争议性,特别是在有关域名的事务上。这样的争议包括ICANN 本身。例如,×××域名创造了好几年,法院己经审理要解决它。自愿将成人内容放在自己的域名空间中到底是好事还是坏事(有些人不希望成人内容对Internet 上的所有人都开放,而其他人则想把成人内容放在一个域名中,以便让保姆过滤器很容易地找到并阻止儿童看到)?有些域名可以自我组织,而另一些则对谁可以得到一个该域名空间中的名字有限制,正如下表中所指出的那样。但是,什么样的限制才是适当的呢?我们用pro 域名作为例子说明。这是一个分配给合格的专业人员所用的名字。但问题是谁才是专业的呢?显然医生和律师是专业人士,但自由摄影师、钢琴教师、魔术师、管道工、理发师、灭虫者、纹身艺术家和雇佣军等算专业人士吗?这些职业有资格当选吗?按照谁的标准呢?(有些限制否并非很严格,个人有钱也可以申请诸如pro所谓的限制域名,注)
域 |
---|