【计算机网络】应用层——1.应用模型、域名系统DNS、文件传输协议FTP

1.网络应用模型

(1)客户/服务器模型

在客户/服务器(Client/Server, C/S) 模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下:

  1. 服务器处于接收请求的状态。
  2. 客户机发出服务请求,并等待接收结果。
  3. 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的操作系统。而服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要求。系统启动后即自动调用并一直不断地运行着,被动地等待并接收来自各地客户的请求。因此,服务器程序不需要知道客户程序的地址

客户/服务器模型最主要的特征是:客户是服务请求方,服务器是服务提供方。如Web应用程序,其中总是打开的Web服务器服务于运行在客户机上的浏览器的请求。当Web服务器接收到来自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。常见的使用客户/服务器模型的应用包括Web、文件传输协议(FTP)、 远程登录和电子邮件等。

客户/服务器模型的主要特点还有:

  1. 网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便。
  2. 客户机相互之间不直接通信。例如,在Web应用中两个浏览器并不直接通信。
  3. 可扩展性不佳。受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。

(2)P2P模型

不难看出,在C/S模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P 模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能, 其权利和义务都是大体对等的。
【计算机网络】应用层——1.应用模型、域名系统DNS、文件传输协议FTP
在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机称为对等方(Peer), 直接相互通信。实际上,P2P 模型从本质上来看仍然使用客户/服务器方式,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。
与C/S模型相比,P2P 模型的优点主要体现如下:

  1. 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率(例如,播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务)。
  2. 多个客户机之间可以直接共享文档。
  3. 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
  4. 网络健壮性强,单个结点的失效不会影响其他部分的结点。

P2P模型也有缺点。在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存,影响整机速度。

2. 域名系统(DNS)

域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址。
相对于IP地址,人们更喜欢使用具有特定含义的字符串来标识因特网上的计算机。DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。从概念上可将DNS分为3部分:层次域名空间、域名服务器和解析器

(1)层次域名空间

因特网采用层次树状结构的明明方法。使用这种方法,任何一个连接到因特网的主机或路由器都有一个唯一的层次结构名称,即域名(Domain Name)。**域(Domain)**是名字空间中一个可以被管理的划分。域可以划分为子域,子域还可以继续划分为子域的子域,这样就形成了*域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。例如www.baidu.com,由三个标号组成,标号com是*域名,标号baidu是二级域名,标号www是三级域名。

注意:
1)标号中的英文不区分大小写。
2)标号中除连字符(-)外不能使用其他的标点符号。
3)每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
4)级别最低的域名写在最左边,级别最高的*域名写在最右边。

*域名(Top Level Domain,TLD)分为如下三大类:
1)国家*域名(nTLD)。国家和某些地区的域名,如“.cn”表示中国,“.us”表示美国,“.uk”表示英国。
2)通用*域名(gTLD)。常见的有“.com”(公司)、“.net”(网络服务机构)、“.org”(非营利性组织)和“.gov”(国家或*部门)等。
3)基础结构域名。这种*域名只有一个,即arpa,用于反向域名解析,因此又称反向域名。

国家*域名**册的二级域名均由该国家自行确定。在域名系统中,每个域分别由不同的组织进行管理。每个组织都可以将它的域再分成一定数目的子域,并将这些子域委托给其他组织去管理。例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网(CERNET)来管理。

(2)域名服务器

因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以“域”为单位),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到I地址的映射。每个域名服务器不但能够进行一些域名到地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找其他域名服务器。
DNS使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS上。采用分布式设计的 DNS,是一个在因特网上实现分布式数据库的精彩范例。主要有4种类型的域名服务器。

  1. 根域名服务器
    根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的*域名服务器的IP地址。根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。需要注意的是,根域名服务器用来管辖*域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个*域名服务器进行查询。
  2. *域名服务器
    这些域名服务器负责管理在该*域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当查找的域名服务器的IP地址)。
  3. 授权域名服务器(权限域名服务器)
    每台主机都必须在授权域名服务器处登记。为了更加可靠地工作,一台主机最好至少有两个授权域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。
  4. 本地域名服务器
    本地域名服务器对域名系统非常重要。每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出 DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。我们在Windows中配置“本地连接”时填写的DNS地址就是本地DNS(域名服务器)的地址。

(3)域名解析过程

域名解析是指把域名映射成为IP地址或把地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。域名解析有两种方式:递归查询和递归与迭代相结合的查询。递归查询的过程如下图(a)所示,由于该方法给根域名服务造成的负载过大,所以在实际中几乎不使用。
常用递归与迭代相结合的查询方式如下图(b)所示,该方式分为两个部分。

  • 主机向本地域名服务器的查询采用的是递归查询
    也就是说,如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的[见(a)中的步骤③~⑥]。在步骤⑦中,本地域名服务器从根域名服务器得到了所需的I地址,最后在步骤⑧中,本地域名服务器把查询结果告诉主机m.xyz.com。

【计算机网络】应用层——1.应用模型、域名系统DNS、文件传输协议FTP

  • 本地域名服务器向根域名服务器的查询采用迭代查询
    当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个*域名服务器进行查询”。然后让本地域名服务器向这个*域名服务器进行后续的查询,如图6.6(b)所示。同样,*域名服务器收到查询报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。最后,知道所要解析的域名的IP地址后,把这个结果返回给发起查询的主机。下面举例说明域名解析的过程。
    假定某客户机想获知域名为y.abc.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:
    ①客户机向其本地域名服务器发出DNS请求报文。
    ②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。
    ③根域名服务器收到请求后,判断该域名属于.com域,将对应的*域名服务器dns.com的IP地址返回给本地域名服务器。
    ④本地域名服务器向*域名服务器dns.com’发出解析请求报文。
    ⑤*域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。
    ⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文。
    ⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
    ⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。

为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的I地址,而不需要再去向其他DNS服务器询问。因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。

3.文件传输协议(FTP)

(1)FTP的工作原理

文件传输协议(File Transfer Protocol,FTP)是因特网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。

FTP提供以下功能:
①提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
②以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
③以匿名FTP的方式提供公用文件共享的能力。

FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:
①打开熟知端口21(控制端口),使客户进程能够连接上。
②等待客户进程发连接请求。
③启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
④回到等待状态,继续接收其他客户进程的请求。
FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

(2)控制连接与数据连接

FTP在工作时使用两个并行的TCP连接(见图6.7):一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单和更容易实现。
【计算机网络】应用层——1.应用模型、域名系统DNS、文件传输协议FTP

  1. 控制连接
    服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,控制连接用来传输控制信息(如连接请求、传送请求等),并且控制信息都以7位.ASCII格式传送。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输的命令),因此控制连接在整个会话期间一直保持打开状态。
  2. 数据连接
    服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器。网络文件系统(NFS)允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。