计算机网络应用层
域名系统DNS
域名系统 DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。域名系统其实就是名字系统。
早在ARPANET时代,整个网络上只有数百台计算机,那时使用一个叫做hosts的文件,列出所有主机名字和相应的IP地址。只要用户输入一台主机名字,计算机就可很快地把这台主机名字转换成机器能够识别的二进制IP地址。
为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?这是因为IP地址的长度是固定的32位(如果是IPv6地址,那就是128位,也是定长的),而域名的长度并不是固定的,机器处理起来比较困难。
早在1983年互联网就开始采用层次树状结构的命名方法,并使用分布式的域名系统 DNS。DNS的互联网标准是RFC 1034,1035。
域名到IP地址的解析是由分布在互联网上的许多域名服务器程序 (可简称为域名服务器)共同完成的。域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器 。
域名到IP地址的解析过程的要点如下:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序 (resolver),并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。
互联网的域名结构
互联网采用了层次树状结构的命名方法。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字 ,即域名 (domain name)。这里,“域 ”(domain)是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。
从语法上讲,每一个域名都由标号 (label)序列组成,而各标号之间用点隔开(请注意,是小数点“.”,不是中文的句号“。”)。
例如下面的域名
mail.cctv.com
就是中央电视台用于收发电子邮件的计算机(即邮件服务器)的域名,它由三个标号组成,其中标号com是顶级域名,标号cctv是二级域名,标号mail是三级域名。
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符 (但为了记忆方便,最好不要超过12个字符),也不区分大小写字母 (例如,CCTV或cctv在域名中是等效的)。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域名总共不超过255个字符 。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。
需要注意的是,域名只是个逻辑概念 ,并不代表计算机所在的物理地点。变长的域名和使用有助记忆的字符串,是为了便于人使用。而IP地址是定长的32位二进制数字则非常便于机器进行处理。这里需要注意,域名中的“点”和点分十进制IP地址中的“点”并无一一对应的关系。点分十进制IP地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。
域名服务器
假定域名为m.xyz.com的主机想知道另一台主机(域名为y.abc.com)的IP地址。例如,主机m.xyz.com打算发送邮件给主机y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是几个查询步骤:
- 主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询。
- 本地域名服务器采用迭代查询。它先向一个根域名服务器查询。
- 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
- 本地域名服务器向顶级域名服务器dns.com进行查询。
- 顶级域名服务器dns.com告诉本地域名服务器,下一次应查询的权限域名服务器dns.abc.com的IP地址。
- 本地域名服务器向权限域名服务器dns.abc.com进行查询。
- 权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
- 本地域名服务器最后把查询结果告诉主机m.xyz.com。
我们注意到,这8个步骤总共要使用8个UDP用户数据报的报文。本地域名服务器经过三次迭代查询后,从权限域名服务器dns.abc.com得到了主机y.abc.com的IP地址,最后把结果返回给发起查询的主机m.xyz.com。
文件传送协议
文件传送协议FTP(File Transfer Protocol)[RFC 959]是互联网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。RFC 959很早就成为了互联网的正式标准。
在网络出现以前,人们在不同的计算机之间数据交换的时候,惟一可以借助是诸如磁带、磁盘之类的磁介质。如果是长距离交换,则还需要将这个磁介质通过邮寄等方式来传送。
FTP是文件传输协议File Transfer Protocol的缩写形式,它曾经是Internet中一种重要的交流形式。 但是随着WWW的普及,FTP现在的主要作用就是让用户连接上一个远程计算机上,并查看远程计算机有哪些资源文件,然后把文件从远程计算机拷到本地计算机,或把本地计算机中的文件传送到远程计算机中去。
文件传输是信息共享的主要手段之一。 在Internet上实现文件传输并不是一件容易的事,因为Internet是一个非常复杂的计算机环境,连接在Internet上的计算机有成千上万台,而这些计算机可能运行不同的操作系统,于是如何在各种操作系统之间实现文件的交流就成为问题的关键。 FTP协议很好地解决了跨越不同网络和操作系统平台的通信问题,它可以将文件从一台主机实时、可靠地传送到另一台主机,并且减少甚至消除了不同操作系统对文件处理带来的不兼容性。
FTP也是一个客户机/服务器系统。 用户通过一个支持FTP协议的客户机程序连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。 客户机程序代表用户接收到这个文件,将其存放在用户目录中。
在FTP的使用当中经常会遇到两个概念:下载(Download)和上传(Upload)。 下载文件就是从远程主机拷贝文件至自己的计算机上; 上传文件就是将文件从自己的计算机中拷贝至远程主机上。
现在因特网开发者们开发出了许多功能非常强大、界面非常友好的专用FTP客户软件, 如CuteFTP、FlashGet、NetAnt等。 与WWW相比,FTP服务没有华丽的界面,但对于初学者而言,要比万维网更难掌握。
FTP的工作过程
FTP是TCP/IP的一种具体应用,它工作在TCP/IP模型的应用层,使用基于面向连接的TCP传输。这样,FTP客户在和服务器通信之前必须要建立连接,为数据的传输提供了可靠的保证。当然,它在实现上要考虑比较多的问题,因此通信的开销也会增加。
首先,FTP服务器为了增强连接能力,使用FTP进行文件传送时需要两类进程:主进程和从属进程
- 主进程只有一个,负责接受来自客户进程的请求;
- 从属进程不止一个,负责处理被服务器接受的请求 等待客户进程发出连接请求,没有请求则一直等待 收到请求启动从属(数据传送)进程,处理客户进程发来的请求(从属进程处理完请求之后即可终止,从属进程在处理工程中有可能创建子进程) 回到1,继续等待其他客户请求 其中,主进程与从属进程的工作是同时进行的。 FTP的客户和服务器之间的操作主要有以下三种:从客户向服务器发送文件;从服务器向客户发送文件;从服务器向客户发送文件目录列表。
值得注意的是,FTP的文件操作只传送文件的一个拷贝,也就是说,传送操作之后,原先存放文件的地方文件仍然存在;而且即使某个被下载或上传的文件内容被改变了,它在其他地方的副本也不会同步更新。
万维网概述
万维网 WWW(World Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所 ,英文简称为Web。
万维网是一个分布式的超媒体 (hypermedia)系统,它是超文本 (hypertext)系统的扩充。所谓超文本是指包含指向其他文档的链接的文本(text)。也就是说,一个超文本由多个信息源链接成,而这些信息源可以分布在世界各地,并且数目也是不受限制的。利用一个链接可使用户找到远在异地的另一个文档,而这又可链接到其他的文档(依此类推)。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
为了解决第一个问题,万维网使用统一资源定位符 URL(Uniform Resource Locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符URL。为了解决上述的第二个问题,就要使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议 HTTP(HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。为了解决上述的第三个问题,万维网使用超文本标记语言 HTML(HyperText Markup Language),使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来。最后,用户可使用搜索工具在万维网上方便地查找所需的信息。
URL的格式
统一资源定位符 URL是用来表示从互联网上得到的资源位置和访问这些资源的方法。URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。由此可见,URL实际上就是在互联网上的资源的地址。只有知道了这个资源在互联网上的什么地方,才能对它进行操作。显然,互联网上的所有资源,都有一个唯一确定的URL。