计算机网络——应用层

一、网络应用模型

(一)客户/服务端(C/S)模型

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

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

服务器上长期运行成接收请求的服务程序,可同时接收多个客户的请求。客户程序必须知道服务器程序的地址,由于服务器程序被动地接收请求,因此不需要知道客户端程序的地址。

客户/服务端模型最主要的特征是:客户是服务请求方,而服务器是服务提供方。这样的常见应用包括Web、文件传输协议(FTP)、远程登陆和电子邮件等。

客户/服务端模型的主要特点还包括:

  1. 网络中各计算机的地位不平等,服务器可通过对用户权限的限制来达到管理客户机的目的。整个网络的管理工作由少数服务器负责,因此网络的管理非常集中和方便。
  2. 客户机之间不直接进行通信。
  3. 可扩展性不佳。所有信息都需要服务器进行处理,受服务器硬件和网络带宽的限制,服务器支持的最大客户数有限。

(二)对等(P2P)模型

在C/S模型中,服务器性能的好坏直接决定了整个系统的性能,当大量用户同时发起请求时,服务器就必然成为系统的瓶颈。P2P模型的思想是整个网络中的传输内容不再保存在中心服务器上,每个节点都同时具有下载、上传的功能,其权利和义务都是大体平等的。

在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机——成称为对等方(Peer),直接相互通信。实际上,P2P模型从本质上来看仍然使用客户/服务器模型,每个节点既作为客户访问其它节点的资源,又作为服务器提供资源给其它节点访问。

与C/S模型相比,P2P模型具有以下优点:

  1. 减轻服务器压力,消除对服务器的绝对依赖,提高整体效率。
  2. 多个客户机之间可以直接共享文档。
  3. 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。
  4. 网络健壮性强,单个节点的失效不会影响其它的节点的运行。

P2P也有一些缺点:

  1. 对任意计算机来说,在获取服务的同时还要为其它节点提供服务,这无疑消耗了内存和资源。
  2. 对互联网服务提供方(ISP)来说,大量的P2P连接占用了大量的流量,使互联网变得非常拥堵。

二、域名系统(DNS)

域名系统(Domain Name System, DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名转换为便于机器处理的IP地址,即使用具有特定含义的字符串用来标记互联网上的计算机。

DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53端口。

从概念上可将DNS分为三部分:层次域名空间、域名服务器和解析器。

(一)层次域名空间

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

以www.bing.com为例,com是顶级域名,bing是二级域名,而www是三级域名。

域名标号需要满足以下条件:

  1. 标号中的英文不区分大小写
  2. 除连字符("-)外不使用其他标点符号
  3. 每个标号不超过63的字符,完整域名不超过255字符
  4. 级别低的域名写在左边,顶级域名写在最右边

顶级域名(Top Level Domain)分为以下三类:

  1. 国家(地区)顶级域名(nTLD),如.cn表示中国
  2. 通用顶级域名(gTLD),如.com(公司)、.net(网络服务机构)、.org(非营利性组织)、.edu(教育机构)、.gov(政府部门)
  3. 基础结构域名(arpa)。用于反向域名解析,即IP地址方向解析为域名。

在域名系统中,各级域名由其上一级的域名管理机构管理,顶级域名由因特网名称与数字地址分配机构(ICANN)管理。国家顶级域名下注册的二级域名均由该国家自行确定,每个组织都可以将它的域再分成一定数量的子域,并将这些子域委托给其他机构去管理。

(二)域名服务器

域名到IP地址的解析是有运行在域名服务器上的程序来完成的,一个服务器所负责管辖的(或有权限的)范围称为区(小于或等于域),一个区中所有的节点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射。每个域名服务器不仅能够进行一些域名到IP地址的解析,而且必须具有连向其他域名服务器的信息。当自己不能进行域名解析时,能够知道到什么地方寻找其他的域名服务器。

1. 根域名服务器

根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。根域名服务器是最重要的域名服务器,不管是哪个本地域名服务器,要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。

互联网上有13个根域名服务器,尽管这13个根域名服务器每个都视为独立的服务器,但实际上是冗余服务器的集群,以提供安全性和可靠性。

根域名服务器用来管辖顶级域,通常不会直接返回IP地址,而是告知应去哪个顶级域名服务器去查询。

2. 顶级域名服务器

这些域名服务器负责管理在该顶级域名服务器注册的所有的二级域名。受到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是告诉下一步应该查询的域名服务器的IP地址)。

3. 权限域名服务器(授权域名服务器)

每台主机都必须在权限域名服务器处登记。为了更加可靠的工作,一台主机最好至少有两个权限域名服务器。实际上,许多域名服务器都同时充当本地域名服务器和权限域名服务器。权限域名服务器总能将其管辖的主机名转换为该主机的IP地址。

4. 本地域名服务器

每个ISP或一所大学甚至更小的部门,都可以拥有一个本地域名服务器。当以太主机发出DNS查询请求时,这个查询请求报文就发送给该主机的一个本地域名服务器。这就是网络接口中配置的DNS地址。

(三)域名解析过程

域名解析是指将域名转化为IP地址的过程。当客户端需要域名解析时,通过主机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。

域名解析有两种方式:递归查询和迭代查询

  1. 主机像本地域名服务器的查询都采用递归查询
  2. 本地域名服务器向其他域名服务器的查询采用递归查询或迭代查询,通常是迭代查询

1. 递归查询

递归查询即主机向本地域名服务器查询,若本地域名服务器不知道IP地址,则会自行向根域名服务器进行查询,一次类推,最后查询完成后逐层返回。

2. 迭代查询

迭代查询即本地域名服务器不知道IP地址之后,向根域名服务器进行查询,根域名服务器返回下一级域名服务器的地址,本地域名服务器根据返回的IP地址进一步查询,依次类推,不断自行访问各级查询服务器,直至得到解析结果。

两者不同之处在于,递归查询各级域名服务器亲自查询,而迭代查询则是返回一个下一级域名服务器的地址,由本地域名服务器自行查询。

因此,本地域名服务器会完成主机的查询任务,返回最终的IP地址,是递归查询。而本地域名服务器查询的过程中采用的是迭代查询的方式。

在域名服务器工作过程中,为了减少DNS报文的数量,减轻域名服务器和互联网的负担,通常会采用高速缓存临时保存最近查询过的域名的相关映射信息,但由于映射关系不是长期不变的,因此本地缓存中的数据经常丢弃与更新。在主机中同样存在自己最近使用的域名的高速缓存。

三、文件传输协议(FTP)

(一)FTP协议的工作原理

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

FTP提供以下功能:

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

FTP采用客户/服务器的工作方式,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:

  1. 打开熟知的21(控制端口),开放对客户进程的连接
  2. 等待客户端发起连接请求
  3. 等待从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止
  4. 回到等待状态,继续接受其他客户进程的请求。主进程与从属进程是并发执行的。

FTP服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

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

FTP在工作时使用两个并行的TCP连接,一个是控制连接(服务器端口号是21),一个是数据连接(服务器端口号是20)。使用两个不同的端口号可以使协议更容易实现。

1. 控制连接

服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,用来传输控制信息(如连接请求、传送请求等)。FTP客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制进程并不用来传送文件。在传输文件时还可以使用控制连接(如客户在传输中途发一个终止传输的命令),因此控制连接在整个会话期间一直保持打开状态。

2. 数据连接

服务器端的控制进程在接收到FTO客户发送来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务端的数据传送进程,数据传送进程实际完成文件的传送,在传输完毕后关闭“数据传输连接”并结束运行。

数据传送有两种传输模式:

  1. 主动模式PORT:客户端连接到服务器的21端口,登陆成功后要读取数据时,客户端随机开放一个端口,并发送命令告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口建立连接,发送数据。
  2. 被动模式PASV:客户端发送PASV命令给服务器后,服务器随机开放一个空闲端口并告知客户端,客户端主动连接服务器空闲的端口。

可见,两种数据传送模式的选择权在客户端。PORT是服务器连接到客户端开放的端口,而PASV是客户端连接到服务器开放的端口。

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

四、电子邮件

(一)电子邮件系统的组成结构

电子邮件是一种异步通讯方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。

一个电子邮件系统应具有以下三个最重要的部件,即用户代理(User Agent)、邮件服务器电子邮件使用的协议(如SMTP、POP3(或IMAM)等)。

  1. 用户代理(UA):用户与电子邮件系统的接口。用户代理向用户提供一个很友好的接口来发送和运行邮件,用户代理至少应当具有撰写、显示和邮件处理的功能。通常情况下,用户代理就是一个运行在PC上的程序(电子邮件客户端软件)。
  2. 邮件服务器:它的功能是发送和接收邮件,同时还要向发件人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器以客户/服务器模式工作,但它必须能够同时充当客户和服务器。例如当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器。
  3. 邮件发送协议和读取协议:邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP。邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。SMTP用的是推(Push)的通信方式,而POP3用的是拉(Pull)的通信方式。

邮件的发送与接收过程可简化为如下图:

邮件收发过程简化如下:

  1. 发件人撰写和编辑电子邮件。
  2. 点击发送按钮后,用户代理用SMTP把邮件传送给发送端邮件服务器。
  3. 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
  4. 发送端邮件服务器使用SMTP将将缓存队列的邮件依次直接发送到目标邮件服务器。
  5. 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收件人的用户邮箱,等待收件人在方便时进行读取。
  6. 收件人使用自己的用户代理,使用POP3或IMAP协议将自己的邮件从接收端邮件服务器的用户邮箱中取回。

(二)电子邮件的结构与MIME

1. 电子邮件的格式

一封电子邮件分为信封内容两大部分,而邮件内容又分为首部主体两部分。RFC 822规定了邮件的首部格式,而邮件的主体部分可自由撰写。用户写好首部后,邮件系统自动见信封所需信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。

邮件内容的首部包含一些首部行,每个首部行有一个关键字后跟冒号和值组成。有些关键字是必须的,有些则是可选的,最重要的关键字是ToSubject

  1. To是必填的关键字,后面填入一个或多个收件人的电子邮件。电子邮件的格式为:收件人邮箱名@邮箱所在主机的域名。
  2. Sub是可选关键字,是邮件的主题。

2. 多用途因特网邮件扩展(MIME)

由于SMTP智能传送7位ASCII码文本邮件,许多其他非英语国家的文字(如中文、俄文、甚至带重音符号的法文和德文)就无法传送,也无法传送可执行文件及其他二进制对象,所以提出了多用途因特网邮件扩展(Multipurpose Internet Main Extensions, MIME)。

MIME并没有取代或改动SMTP,而是作为一种转换器,在发送端进行发送时,MIME将非ASCII码数据转换为ASCII码数据,之后便可以使用SMTP进行传送。接收端进行接收时也要使用MIME对接收到的ASCII码数据进行逆转换,以便得到包含有非ASCII码数据的邮件。

MIME主要包括以下三部分内容:

  1. 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送编码和内容类型。
  2. 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  3. 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

(三)SMTP协议与POP3协议

1. SMTP

简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是一种提供可靠有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交互信息。因为SMTP采用C/S架构,因此负责发送邮件的SMTP进程是SMTP客户,而负责接受邮件的进程是SMTP服务器。SMTP使用的TCP连接,端口号为25

SMTP通信有以下三个阶段:

(1)连接建立

发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就与接收方邮件服务器的SMTP服务器建立TCP连接,SMTP服务器使用的熟知端口号为25。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。

SMTP不使用中间的邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远,不管在传送过程中要经过多少个路由器。当接收方邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接。

(2)邮件传递

连接建立后,就可开始传送邮件。邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。如MAILFROM:[email protected]。若SMTP服务器已准备好接收邮件,则回答250OK。下面跟着一个或多个RCPT命令,格式为RCPT TO:<收件人地址>。每发送一个RCPT命令,都应有相应的信息从SMTP服务器返回,如250OK或550 No such user here(无此用户)。

RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。

获得OK的回答后,客户端就使用DATA命令,表示要开始传送邮件的内容。正常情况下,SMTP 服务器返回的信息是354 Start mail input; end with <CRLF>.<CRLF>。<CRLF>表示回车换行。此时SMTP客户就可开始传送邮件内容,并用<CRLF>.<CRLF>表示邮件内容的结束。

(3)连接释放

邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP服务器同意释放TCP连接。邮件传送的全过程就此结束。

2. POP3和IMAP

邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议,现在使用的版本是POP3。POP也采用客户/服务器模式,在传输层使用TCP,端口号为110

接收方的用户代理必须运行POP客户程序,而接收方的邮件服务器中则运行POP服务器程序。POP有两种工作方式:“下载并保留”和“下载并删除”。在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除。

另一个邮件读取协议是因特网报文存取协议(IMAP),它比POP复杂得多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。IMAP的另一特性是允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部分MIME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。

此外,随着万维网的流行,目前出现了很多基于万维网的电子邮件,如Hotmail、Gmail等。这种电子邮件的特点是,用户浏览器与Hotmail或Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP。

五、WWW

(一)WWW的概念与组成结构

万维网(World Wide Web,简称WWW)是一个分布式的信息存储和传输系统,它提供了一种通过互联网共享和访问各种信息的方式。WWW是基于客户端-服务器架构设计的,用户通过浏览器(客户端)访问远程服务器上存储的资源。资源通过一种称为超文本(Hypertext)的格式来组织,利用链接在不同页面和资源间进行跳转,从而实现信息的动态访问。

万维网的内核部分是由3个标准构成的:

1. 统一资源定位符 (URL)

统一资源定位符(URL,Uniform Resource Locator)是万维网上每个资源的地址标识符。它是一个文本字符串,能够唯一地标识互联网上的每个资源。URL不仅仅是一个指向资源的“链接”,它还包含了访问资源的协议、所在服务器的地址以及资源在该服务器中的具体位置。URL的基本格式通常为:

1
协议://域名/路径/资源

例如:

1
https://www.example.com/index.html

在这个例子中,https 是协议,www.example.com 是服务器域名,/index.html 是资源的路径。

2. 超文本传输协议 (HTTP)

超文本传输协议(HTTP,HyperText Transfer Protocol)是WWW中用于客户端和服务器之间传输超文本数据的协议。HTTP协议定义了如何请求和发送网页内容。它是一个基于请求和响应的协议,通常基于TCP/IP协议栈工作。HTTP协议非常简单,采用“客户端请求——服务器响应”的模型:

  • 客户端(如浏览器)发送HTTP请求到服务器。
  • 服务器返回HTTP响应,并包含请求的资源(如HTML文件、图片等)。

3. 超文本标记语言 (HTML)

超文本标记语言(HTML,HyperText Markup Language)是构建网页内容的标准语言,它使用标签来描述网页的结构。HTML允许页面设计者定义文本、图像、链接、表单等元素,并通过超链接将这些元素连接到其他页面或资源。

万维网的工作流程

万维网的工作流程可以被简化为一个客户端与服务器之间的请求和响应过程。当用户通过浏览器(客户端)访问某个资源时,实际上触发了一个复杂的流程,该流程包括了几个关键步骤,确保用户能够快速、准确地获取所需信息。

  1. 用户发起请求
    当用户在浏览器中输入URL并按下回车时,浏览器会首先解析这个URL,提取出协议(如HTTP或HTTPS)、域名(如www.example.com)以及资源路径(如/index.html)。此时,浏览器会生成一个请求并通过网络向目标服务器发送。
  2. DNS解析
    浏览器在发送请求之前,需要通过**域名系统(DNS)**将URL中的域名解析为相应的IP地址。DNS是一种分布式的数据库系统,它通过查找域名与IP地址之间的映射关系,帮助浏览器找到目标服务器的位置。
  3. 建立连接
    一旦浏览器知道了目标服务器的IP地址,它就可以通过TCP/IP协议与服务器建立连接。对于HTTPS请求,这个过程还会涉及到TLS/SSL握手,确保数据传输过程的安全性。
  4. 发送HTTP请求
    建立连接后,浏览器将发送一个HTTP请求到服务器。这个请求包含了用户希望访问的资源路径、请求类型(GET或POST等)、浏览器信息、语言偏好等。这个过程是基于客户端和服务器之间的HTTP协议进行的。
  5. 服务器处理请求并返回响应
    服务器接收到请求后,会根据请求中的资源路径查找相应的资源(如HTML文件、图片或其他文件)。如果找到了资源,服务器将构建一个HTTP响应,通常会包含资源的内容、状态码(如200表示成功)以及其他信息(如响应头)。如果资源不存在,服务器可能会返回404错误。
  6. 数据传输与显示
    服务器通过HTTP协议将响应发送回浏览器。浏览器收到响应后,开始解析HTML、CSS和JavaScript等内容,构建网页的结构和样式,并将页面呈现给用户。如果页面包含图片、视频等多媒体资源,浏览器会继续发起请求,获取这些资源,直到页面完整加载。
  7. 后续请求与交互
    在网页加载完成后,用户可能会与页面进行交互,例如点击链接、提交表单等。这些交互会再次触发HTTP请求,浏览器会根据新的请求进行相应的操作,更新页面或获取新的资源。整个过程可以重复进行,从而让用户与网站保持动态交互。

(二)HTTP协议

HTTP(Hypertext Transfer Protocol)是WWW中使用的主要协议,用于在Web服务器和浏览器之间传输超文本。HTTP定义了客户端(用户代理)发送请求到服务器及服务器返回响应的方式。


计算机网络——应用层
https://blog.cxhap.top/2024/08/16/计算机网络——应用层/
作者
DingWH03
发布于
2024年8月16日
许可协议