计算机网络知识点汇总(考研用)——第六章:应用层

it2023-02-14  103

计算机网络知识点汇总(考研用)——第六章:应用层

 本文参考于《2021年计算机网络考研复习指导》(王道考研),《计算机网络》 思维导图:

文章目录

计算机网络知识点汇总(考研用)——第六章:应用层6.应用层6.1 网络应用模型 6.1.1 客户/服务器模型 6.1.2 P2P模型 6.2 域名系统(DNS) 6.2.1 层次域名空间 6.2.2 域名服务器  1.根域名服务器  2.顶级域名服务器  3.授权域名服务器(权限域名服务器)  4.本地域名服务器  6.2.3 域名解析过程 6.3 文件传输协议(FTP) 6.3.1 FTP的工作原理 6.3.2 控制连接与数据连接  1.控制连接  2.数据连接 6.4 电子邮件 6.4.1 电子邮件系统的组成结构 6.4.2 电子邮件格式与MIME  1.电子邮件格式  2.多用途网际邮件扩充(MIME)  6.4.3 SMTP和POP3  1.SMTP  2.POP3 6.5 万维网(WWW) 6.5.1 WWW的概念与组成结构 6.5.2 超文本传输协议(HTTP)  1.HTTP的操作过程  2.HTTP的特点  3.HTTP的报文结构

6.应用层

6.1 网络应用模型

 6.1.1 客户/服务器模型

  在客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。其工作流程如下:   (1)服务器处于接收请求的状态   (2)客户机发出服务请求,并等待接收结果   (3)服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机

  客户程序必须知道服务器程序的地址,客户机上一般不需要特殊的硬件和复杂的OS,而服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要求。系统启动后即自动调用并一直不断地运行着,被动地等待并接收来自各地客户的请求。 因此,服务器程序不需要知道客户程序的地址。   客户/服务器模型最主要的特征是:客户是服务请求方,服务器是服务提供方。如Web应用程序,其中总是打开的Web服务器服务于运行在客户机上的浏览器的请求。当Web服务器接收到来自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。常见的使用客户/服务器模型的应用包括Web、文件传输协议FTP、远程登录和电子邮件等。   客户/服务器模型的主要特点还有:   (1)网络中各计算机的地位不平等,服务器可以通过对用户权限的限制来达到管理客户机的目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。整个网络的管理工作由少数服务器担当,因此网络的管理非常集中和方便。   (2)客户机相互之间不直接通信   例如,在Web应用中两个浏览器并不直接通信   (3)可拓展性不佳   受服务器硬件和网络带宽的限制,服务器支持的客户机数有限

 6.1.2 P2P模型

  在C/S模型中,服务器性能的好坏决定了整个系统的性能,当大量用户请求服务时,服务器就必然成为系统的瓶颈。P2P模型的思想是整个网络中的传输内容不再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。   在P2P模型中,各计算机没有固定的客户和服务器划分。相反,任意一对计算机——称为对等方(Peer),直接相互通信。实际上,P2P模型从本质上来看仍然使用客户/服务器方式,每个结点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。   与C/S模型相比,P2P模型的优点主要为:   (1)减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结点上,因此大大提高了系统效率和资源利用率(例如,播放流媒体时对服务器的压力过大,而通过P2P模型,可以利用大量的客户机来提供服务)   (2)多个客户机之间可以直接共享文档   (3)可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求   (4)网络健壮性强,单个结点的失效不会影响其他部分的结点

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


  例题:下列关于客户/服务器模型的说法中,不正确的是()   A.服务器专用于完成某些服务,而客户机则作为这些服务的使用者   B.客户机通常位于前端,服务器通常位于后端   C.客户机和服务器通过网络实现协同计算任务   D.客户机是面向任务的,服务器是面向用户的

  答案:D;


6.2 域名系统(DNS)

  域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.cskaoyan.com)转换为便于机器处理的IP地址。 DNS系统采用客户/服务器模型,其协议运行在UDP之上, 使用53号端口

 6.2.1 层次域名空间

  因特网采用层次树状结构命名方法。采用这种命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称,即域名(Domain Name)。域(Domain)是名字空间中一个可被管理的划分。域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。每个域名都由标号序列组成,而各标号之间用点(“.”)隔开。如www.cskaoyan.com(三级域名.二级域名.顶级域名)   级别最低的域名写在最左边,级别最高的顶级域名写在最右边   顶级域名(Top Level Domain,TLD)分为如下三大类:   (1)国家顶级域名(nTLD)   国家和某些地区的域名,如“.cn”表示中国   (2)通用顶级域名(gTLD)   如“.com”(公司)、“.net”(网络服务机构)、“.org”、“.gov”   (3)基础结构域名   这种顶级域名只有一个,即arpa,用于反向域名解析,因此又称反向域名

 6.2.2 域名服务器

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

  1.根域名服务器

  根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。 根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。因特网上有13个根域名服务器,尽管我们将这13个根域名服务器中的每个都视为单个服务器,但每个“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。根域名服务器用来管辖顶级域(如.com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪个顶级域名服务器进行查询。

  2.顶级域名服务器

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

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

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

  4.本地域名服务器

  每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,都可以拥有一个本地域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。

  DNS的层次结构如下:

 6.2.3 域名解析过程

  域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。域名解析有两种方式:递归查询和递归与迭代相结合的查询。递归查询的过程如下图,由于该方法给根域名服务器造成的负载过大,所以在实际中几乎不使用。   常用递归与迭代相结合的查询方式,如图:   该方式分为两个部分:   (1)主机向本地域名服务器的查询采用的是递归查询   如果本地主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。在这种情况下,本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归地在其他几个域名服务器之间进行的(见(a)图中的步骤3~6)。在(a)图中的步骤7中,本地域名服务器从根域名服务器得到了所需的IP地址,最后在步骤8中,本地域名服务器把查询结果告诉主机m.xyz.com   (2)本地域名服务器向根域名服务器的查询采用迭代查询   当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪个顶级域名服务器进行查询”。然后让本地域名服务器向这个顶级域名服务器进行后续的查询。 同样,顶级域名服务器收到查询报文后,要么给出所要查询的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服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。 因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息。


  为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(如每个项目只存放两天)。当权限域名服务器回答一个查询请求时,在响应中指明绑定有效存在的时间值。增加此时间值可减少网络开销,减少此时间值可以提高域名转换的准确性。



  例题:域名和()具有一一对应的关系   A.IP地址  B.MAC地址  C.主机  D.以上都不是

  答案:D;如果一台主机通过两块网卡连接到两个网络(如服务器双线接入),那么就具有两个IP地址,每个网卡对应一个MAC地址,显然这两个IP地址可以映射到同一个域名上。此外,多台主机也可以映射到同一个域名上(如负载均衡),一台主机也可以映射到多个域名上(如虚拟主机)。

  例题:以下说法错误的是()   A.Internet上提供客户访问的主机一定要有域名   B.同一域名在不同时间可能解析出不同的IP地址   C.多个域名可以指向同一台主机IP地址   D.IP子网中的主机可以由不同的域名服务器来维护其映射

  答案:A;

  例题:一台主机要解析www.cskaoyan.com的IP地址,如果这台主机配置的域名服务器为202.120.66.68,因特网顶级域名服务器为11.2.8.6,而存储www.cskaoyan.com的IP地址对应关系的域名服务器为202.113.16.10,那么这台主机解析该域名通常首先查询()   A.202.120.66.68域名服务器   B.11.2.8.6域名服务器   C.202.113.16.10域名服务器   D.可以从这三个域名服务器中任选一个

  答案:A;

  例题:假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为www.abc.xyz.com的网站时,本地域名服务器在完成该域名解析的过程中,可能发出DNS查询的最少和最多次数分别是()   A.0,3  B.1,3  C.0,4  D.1,4

  答案:C;

  例题:一台具有单个DNS名称的机器可以有多个IP地址吗?为什么?

  答案:可以,IP地址由网络号和主机号两部分构成。如果一台机器有两个以太网卡,那么它可以同时连到两个不同的网络上(网络号不能相同,否则会发生冲突);如果是这样,那么它需要两个IP地址

  例题:一台计算机可以有两个属于不同顶级域的DNS名字吗?如果可以,试举例说明

  答案:可以,例如www.cskaoyan.com和www.cskaoyan.cn属于不同的顶级域,但它们可以有同样的IP地址。用户输入这两个不同的DNS名字,访问的都是同一台服务器

  例题:DNS使用UDP而非TCP,如果一个DNS分组丢失,没有自动恢复,那么这会引起问题吗?如果会,应该如何解决?

  答案:DNS使用传输层的UDP而非TCP,因为它不需要使用TCP在发生传输错误时执行的自动重传功能。实际上,对于DNS服务器的访问,多次DNS请求都返回相同的结果,即做多次和做一次的效果一样。因此DNS操作可以重复执行。当一个进程做一次DNS请求时,它启动一个定时器。如果定时器计满而未收到回复,那么它就再请求一次。

  例题:为什么要引入域名的概念?距离说明域名转换过程。域名服务器中的高速缓存的作用是什么?

  答案:IP地址难以记忆,引入域名是为了便于人们记忆和识别。域名解析可以把域名转换成IP地址。域名转换过程是向本地域名服务器申请解析,如果本地域名服务器查不到,那么向根域名服务器进行查询。如果根域名服务器中也查不到,那么向根域名服务器中保存的相应授权域名服务器进行查询。为减少因特网上的DNS查询报文数量,使用高速缓存。当一个DNS服务器接收到DNS查询结果时,它能将该DNS信息缓存在高速缓存中。这样,当另一个相同的域名查询到达该DNS服务器时,该服务器就能够直接提供所要求的IP地址,而不需要再去向其他DNS服务器询问。

6.3 文件传输协议(FTP)

 6.3.1 FTP的工作原理

  FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。   FTP提供以下功能:   ①提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力   ②以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力   ③以匿名FTP的方式提供公用文件共享的能力

  FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。 一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:   ①打开熟知端口21(控制端口),使客户进程能够连接上   ②等待客户进程发连接请求   ③启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止   ④回到等待状态,继续接收其他客户进程的请求

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

 6.3.2 控制连接与数据连接

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

  1.控制连接

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

  2.数据连接

  服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。数据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。   因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(Out-of-band)传送的。使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器。 网络文件系统(NFS)允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件。


  例题:匿名FTP访问通常使用()作为用户名   A.guest  B.E-mail地址  C.anonymous  D.主机id

  答案:C;针对文件传输FTP,系统管理员建立了一个特殊的用户ID,名为anonymous,即匿名用户。Internet上的任何人在任何地方都可以使用该用户ID,只是在要求提供用户ID时必须输入anonymous,该用户ID的密码可以是任何字符串

  例题:文件传输协议的主要工作过程是怎样的?主进程和从属进程各起什么作用?

  答案:FTP的主要工作过程如下:在进行文件传输时,FTP客户所发出的传送请求通过控制连接发送给服务器端的控制进程,并在整个会话期间一直保持打开,但控制连接不用来传送文件。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后,就创建数据传送进程和数据连接,数据连接用来连接到客户端和服务器端的数据传输进程,数据传送进程实际完成对文件的传送,在传送完毕后关闭“数据传送连接”,并结束运行   FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求;若干从属进程,负责处理单个请求

  例题:为什么FTP要使用两个独立的连接,即控制连接和数据连接

  答案:在FTP的实现中,客户与服务器之间采用了两条传输连接,其中控制连接用于传输各种FTP命令,而数据连接用于文件的传送。之所以这样设计,是因为使用两条独立的连接可使FTP变得更加简单、更容易实现、更有效率。同时在文件传输过程中,还可以利用控制连接控制传输过程,如客户可以请求终止、暂停传输等。

  例题:主机想下载文件ftp://ftp.abc.edu.cn/file,大致描述下载过程中主机和服务器的交互过程

  答案:1.建立一个TCP连接到服务器ftp.abc.edu.cn的21号端口,然后发送登录账号和密码   2.服务器返回登录成功信息后,主机A打开一个随机端口,并将该端口号发送给服务器   3.主机A发送读取文件命令,内容为get file,服务器使用20端口建立一个TCP连接到主机A的随机打开的端口   4.服务器把文件内容通过第二个连接发送给主机A,传输完毕后连接关闭


6.4 电子邮件

 6.4.1 电子邮件系统的组成结构

  电子邮件是一种异步通信方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取。   一个电子邮件系统应具有下图所示的三个最主要的组成构件,即用户代理(User Agent)、邮件服务器和电子邮件使用的协议,如SMTP、POP3(或IMAP)等。   用户代理(UA):用户与电子邮件系统的接口。用户代理使用户能够通过一个很友好的接口发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的能力。通常情况下,用户代理就是一个运行在PC上的程序,常见的有Outlook、Foxmail等   邮件服务器:组成电子邮件系统的核心。邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器采用客户/服务器方式工作,但它能够同时充当客户和服务器。例如,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,而B是SMTP服务器;反之,当B向A发送邮件时,B就是SMTP客户,而A就是SMTP服务器。   邮件发送协议和读取协议:邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,通常使用的是SMTP;邮件读取协议用于用户代理从邮件服务器读取邮件,如POP3。 SMTP采用的是“推”(Push)的通信方式,即在用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”送到SMTP服务器端。而POP3采用的是“拉”(Pull)的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。

  下面简单介绍电子邮件的收发过程:   ①发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送方邮件服务器   ②发送方邮件服务器将邮件放入邮件缓存队列中,等待发送   ③运行在发送方邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP连接   ④TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接   ⑤运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取   ⑥收信人打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收方邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)

 6.4.2 电子邮件格式与MIME

  1.电子邮件格式

  一个电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分。RFC 822规定了邮件的首部格式,而邮件的主体部分则让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。   邮件内容的首部包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。有些关键字是必需的,有些则是可选的。最重要的关键字是To:和Subject:。   To是必需的关键字,后面填入一个或多个收件人的电子邮件地址。电子邮件地址的规定格式为:收件人邮箱名@邮箱所在主机的域名,如abc@cskaoyan.com,其中收信人邮箱名即用户名,abc在cskaoyan.com这个邮件服务器上必须是唯一的。这也就保证了abc@cskaoyan.com这个邮件地址在整个因特网上是唯一的。   Subject是可选关键字,是邮件的主题,反映了邮件的主要内容   当然,还有一个必填的关键字是From,但它通常由邮件系统自动填入。首部和主体之间用一个空行进行分割。典型的邮件内容如下:

  2.多用途网际邮件扩充(MIME)

  由于SMTP只能传送一定长度的ASCII码,许多其他非英语国家的文字就无法传送,且无法传送可执行文件及其他二进制对象,因此提出了多用途网络邮件扩充(Multipurpose Internet Mail Extensions,MIME)   MIME并未改动SMTP或取代它。MIME的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在现有的电子邮件程序和协议下传送。MIME与SMTP的关系如图:   MIME主要包括以下三部分内容:   ①5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、内容传送编码和内容类型   ②定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化   ③定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变

 6.4.3 SMTP和POP3

  1.SMTP

  简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。由于SMTP使用客户/服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP使用的是TCP连接,端口号为25。 SMTP通信有以下三个阶段:   (1)连接建立   发件人的邮件发送到发送方邮件服务器的邮件缓存中后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口号(25)与接收方邮件服务器的SMTP服务器建立TCP连接。连接建立后,接收方SMTP服务器发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。   SMTP不使用中间邮件服务器。TCP连接总是在发送方和接收方这两个邮件服务器之间直接建立,而不管它们相隔多远。接收方的邮件服务器因故障暂时不能建立连接时,发送方的邮件服务器只能等待一段时间后再次尝试连接。   (2)邮件传送   连接建立后,就可开始传送邮件。邮件的传送从MAIL命令开始,MAIL命令后面有发件人的地址。如MAIL FROM:hoopdog@hust.edu.cn。若SMTP服务器已准备好接收邮件,则回答250 OK。接着SMTP客户端发送一个或多个RCPT(收件人recipient的缩写)命令,格式为RCPT TO:<收件人地址>。每发送一个RCPT命令,都应有相应的信息从SMTP服务器返回,如250OK或550 No such user here(无此用户)   RCPT命令的作用是,先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。   获得OK的回答后,客户端就使用DATA命令,表示要开始传输邮件的内容。正常情况下,SMTP服务器回复信息是354 Start mail input;end with < CRIF >.< CRIF >。< CRIF >表示回车换行。此时SMTP客户端就可开始传送邮件内容,并用< CRIF >.< CRIF >(两个回车,中间一个点)表示邮件内容的结束。   (3)连接释放   邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是221(服务关闭),表示SMTP同意释放TCP连接。邮件传送的全部过程就此结束。

  2.POP3

  邮局协议(Post Office Protocol,POP)是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第三个版本POP3。POP3采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件。   POP也使用客户/服务器的工作方式,在传输层使用TCP,端口号为110。接收方的用户代理上必须运行POP客户程序,而接收方的邮件服务器上则运行POP服务器程序。POP有两种工作方式:“下载并保留”和“下载并删除”。 在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除”方式时,邮件一旦被读取,就在邮件服务器上被删除,用户不能再次从服务器上读取。   另一个邮件接收协议是因特网报文存取协议(IMAP),它比POP复杂得多,IMAP为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件的命令,为此IMAP服务器维护了会话用户的状态信息。IMAP的另一特性是允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或一个多部分MIME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。

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


  例题:下列关于SMTP的叙述中,正确的是()   1.只支持传输7比特ASCII码内容   2.支持在邮件服务器之间发送邮件   3.支持从用户代理向邮件服务器发送邮件   4.支持从邮件服务器向用户代理发送邮件

  答案:1,2,3;

  例题:下列关于POP3协议的说法,()是错误的   A.由客户端而非服务器选择接收后是否将邮件保存在服务器上   B.登录到服务器后,发送的密码是加密的   C.协议是基于ASCII码的,不能发送二进制数据   D.一个账号在服务器上只能有一个邮件接收目录

  答案:B;POP3协议在传输层是使用明文来传输密码的,并不对密码进行加密。POP3协议基于ASCII码,如果要传输非ASCII码的数据,那么要使用MIME将数据转换成ASCII码形式

  例题:电子邮件系统使用TCP传送邮件,为什么有时会遇到邮件发送失败的情况?为什么有时对方会收不到发送的邮件

  答案:有时对方的邮件服务器不工作,邮件就发送不出去。对方的邮件服务器出故障也会使邮件丢失。有时网络非常拥塞,路由器丢弃大量的IP数据报,导致通信中断

  例题:MIME与SMTP的关系是怎样的

  答案:由于SMTP存在着一些缺点和不足,通过MIME并非改变或取代SMTP。MIME继续使用RFC 822格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在已有的电子邮件和协议下传送


6.5 万维网(WWW)

 6.5.1 WWW的概念与组成结构

  万维网(World Wide Web,WWW)是一个资料空间,在这个空间中:一样有用的事物称为一种“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而后者通过单击链接来获取资源。   万维网使用链接的方法能让用户非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。超文本标记语言(HyperText Markup Language,HTML)使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面。   万维网的内核部分是由三个标准构成的:   (1)统一资源定位符(URL)   负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。   (2)超文本传输协议(HTTP)   一个应用层协议,它使用TCP连接进行可靠的传输, HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议   (3)超文本标记语言(HTML)   一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述

  URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁表示。URL相当于一个文件名在网络范围的扩展。   URL的一般形式是:<协议>://<主机>:<端口>/<路径>   常见的<协议>有http、ftp等;<主机>是存放资源的主机在因特网中的域名,也可以是IP地址;<端口>和<路径>有时可以省略。   万维网以客户/服务器方式工作。浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机则运行服务器程序,这台计算机称万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。工作流程如下:   (1)Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求   (2)Web服务器把URL转换为文件路径,并返回信息给Web浏览器   (3)通信完成,关闭连接

 6.5.2 超文本传输协议(HTTP)

  HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。 从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础

  1.HTTP的操作过程

  从协议执行过程来说,浏览器要访问WWW服务器时,首先要完成对WWW服务器的域名解析。一旦获得了服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。      万维网的大致工作过程如上图所示。每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立连接。TCP连接建立后,浏览器就向服务器发送请求获取某个Web页面的HTTP请求。服务器收到HTTP请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。最后,TCP连接释放。   在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文:请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web服务器对Web客户端请求的回答)   用户单击鼠标后发生的事件按顺序如下(以访问清华大学的网站为例):   (1)浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/chn/index.htm)   (2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址   (3)域名系统DNS解析出清华大学服务器的IP地址   (4)浏览器与该服务器建立TCP连接(默认端口号为80)   (5)浏览器发出HTTP请求:GET /chn/index.htm   (6)服务器通过HTTP响应把文件index.htm发送给浏览器   (7)TCP连接释放   (8)浏览器解释文件index.htm,并将Web页显示给用户

  2.HTTP的特点

  HTTP是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次   HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。在实际应用中,通常使用Cookie加数据库的方式来跟踪用户的活动。Cookie是一个存储在用户主机中的文本文件,里面含有一串“识别码”,如“123456”,用于Web服务识别用户。Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户之前浏览过的商品向其推荐新产品等。   HTTP采用TCP作为传输层协议,保证了数据的可靠传输。 HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP本身是无连接的。 也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。   HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)   对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接,如下图所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。也就是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)   所谓持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求与响应报文。

  持久连接又分为非流水线和流水线两种方式。对于非流水线方式,客户在收到前一个响应后才能发出下一个请求。HTTP/1.1的默认方式是使用流水线的持久连接。这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式那样,每个引用都必须有1个RTT延迟。

  3.HTTP的报文结构

  HTTP是面向文本的(Text-Oriented),因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:   请求报文:从客户向服务器发送的请求报文   响应报文:从服务器到客户的回答   HTTP请求报文和响应报文都由三个部分组成。这两种报文格式的区别是开始行不同。   开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。 开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。请求报文的“请求行”有三个内容:方法、请求资源的URL及HTTP的版本。其中,方法是对所请求对象进行的操作,这些方法实际上也就是一些命令。下表给出了HTTP请求报文中常用的几个方法:   首部行:用来说明浏览器、服务器或报文主体的一些信息。在每个首部行都有首部字段名和它的值,每行在结束的地方都要有“回车”和“换行”。整个首部结束时,还有一空行将首部行和后面的实体主体分开。   实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段

  下图为捕获的HTTP请求报文的示例:   在上图所示的以太网数据帧中,第1~6个字节为目的MAC地址(默认网关地址),即00-0f-e2-3f-27-3f;第7 ~12个字节为本机MAC地址,即00-27-13-67-73-8d;第13 ~14个字节08 ~00为类型字段,表示上层使用的是IP数据报协议。第15 ~34个字节(共20B)为IP数据报的首部,其中第27 ~30个字节为源IP地址,即db-df-d2-70,转换为十进制为219.223.210.112;第31 ~34个字节为目的IP地址,即71-69-4e-0a,转换成十进制为113.105.78.10。第35 ~ 54个字节(共20B)为TCP报文段的首部   从第55个字节开始才是TCP数据部分(阴影),即从应用层传递下来的数据(本例中为请求报文),GET对应请求行的方法,/face/20.gif对应请求行的URL,HTTP/1.1对应请求行的版本,左边数字是对应字符的ASCII码,如‘G’=0x47、‘E’=0x45

  常见应用层协议见下表:


  客户进程端口号与服务器进程端口:   通常我们所说的熟知端口号是应用层协议在服务器端的默认端口号,而客户端进程的端口号是由客户端进程任意指定的(临时的)   当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口号,同时还要告诉服务器进程自己的临时端口号。接着,服务器进程就用自己的熟知端口号与客户进程所提供的端口号建立连接。



  例题:从协议分析的角度,WWW服务的第一步操作是浏览器对服务器的()   A.请求地址解析  B.传输连接建立   C.请求域名解析  D.会话连接建立

  答案:C;

  例题:仅需Web服务器对HTTP报文进行响应,但不需要返回请求对象时,HTTP请求报文应该使用的方法是()   A.GET  B.PUT  C.POST  D.HEAD

  答案:D;使用HEAD方法时服务器可对HTTP报文进行响应,但不会返回请求对象,其作用主要是调试。Head方法不返回请求对象,用于确认URL的有效性及资源更新的日期时间等

  例题:以下关于非持续连接HTTP特点的描述中,错误的是()   A.HTTP支持非持续连接与持续连接   B.HTTP/1.0使用非持续连接,而HTTP/1.1的默认方式为持续连接   C.非持续连接中对每次请求/响应都要建立一次TCP连接   D.非持续连接中读取一个包含100个图片对象的Web页面,需要打开和关闭100次TCP连接

  答案:D;在浏览器请求一个包含100个图片对象的Web页面时,服务器需要传输一个基本HTML文件和100个图片对象,因此一共是101个对象,需要打开和关闭TCP连接101次。

  例题:   答案:C;Connection:连接方式,Close表明为非持续连接方式,keep-alive表示持续连接方式。

  例题:在浏览器中输入http://kaoyancs.com并按回车,直到新浪网站的首页显示在其你浏览器中,请问在此过程中,按照TCP/IP参考模型,从应用层到网络层都用到了哪些协议?

  答案:(1)应用层:HTTP:WWW访问协议;DNS:域名解析服务   (2)传输层:TCP:HTTP提供可靠的数据传输;UDP:DNS使用UDP传输   (3)网络层:IP:IP包传输和路由选择;ICMP:提供网络传输中的差错检测;ARP:将本机的默认网关IP地址映射成物理MAC地址

  例题:在如下条件下,计算使用非持续方式和持续方式请求一个Web页面所需的时间:   (1)测试的RTT平均值为150ms,一个gif对象的平均发送时延为35ms   (2)一个Web页面中有10幅gif图片,Web页面的基本HTML文件、HTTP请求报文、TCP握手报文大小忽略不计   (3)TCP三次握手的第三步中捎带一个HTTP请求   (4)使用非流水线方式

  答案:注意第三次握手的报文段捎带的是客户对HTML文件的请求,HTML发送时延为0。 非持续方式:3650ms;持续方式:2150ms

  例题:用户主机上的电子邮件用户代理与邮件服务器建立了连接,现截获一个TCP报文段如下图所示。图中显示了该报文段的前126个字节的十六进制以及ASCII码内容。TCP首部长度为20字节。请回答:   (1)用户代理和服务器之间使用的应用层协议是什么   (2)用户代理使用的端口号是多少   (3)该邮件的发件人邮箱是什么

  答案:(1)SMTP;(2)49382;(3)cskaoyan2012@163.com

  例题:   答案:(1)64.170.98.32;00-21-27-21-51-ee;   (2)ARP;FF-FF-FF-FF-FF-FF   (3)6RTT   (4)私有地址和Internet上的主机通信时,须由NAT路由器进行网络地址转换,把IP数据报的源IP地址(本题为私有地址10.2.128.100)转换为NAT路由器的一个全球IP地址(本题为101.12.123.15)。因此,源IP地址字段0a 02 80 64变为65 0c 7b 0f。IP数据报每经过一个路由器,TTL值减1,并重新计算首部校验和。若IP分组的长度超过输出链路的MTU,则总长度字段、标志字段、片偏移字段也会发生变化。


最新回复(0)