当前位置: 首页 > news >正文

应用层 III(电子邮件)【★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。

一、电子邮件系统的概述与组成结构

大家知道,实时通信的电话有两个严重缺点。第一,电话通信的主叫和被叫双方必须同时在场。第二,有些电话常常不必要地打断被叫者的工作或休息。

电子邮件(e-mail)是互联网上使用最多的和最受用户欢迎的一种应用。电子邮件是一种异步通信方式,通信时不需要双方同时在场。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱(mail box)中,收件人可在自己方便时上网到自己使用的邮件服务器进行读取。这相当于互联网为用户设立了存放邮件的信箱,因此 e-mail 有时也称为“电子信箱”。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。

1982 年 ARPANET 的电子邮件问世后,很快就成为最受广大网民欢迎的互联网应用。电子邮件的两个最重要的标准就是:简单邮件传送协议 SMTP(Simple Mail Transfer Protocol)和互联网文本报文格式。

由于互联网的 SMTP 只能传送可打印的 7 位 ASCII 码邮件,因此在 1993 年又提出了通用互联网邮件扩充 MIME(Multipurpose Internet Mail Extensions)。MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。在 MIME 邮件中可同时传送多种类型的数据。这在多媒体通信的环境下是非常有用的。

一个电子邮件系统应具有下图所示的三个主要组成构件,即:用户代理(User Agent)、邮件服务器,以及邮件发送协议(如 SMTP)和邮件读取协议(如 POP3 或 IMAP )。POP3 是邮局协议(Post Office Protocol)的版本 3 。凡是有 TCP 连接的,都经过了互联网,有的甚至可以跨越数千公里的距离。这里为简洁起见,没有画出网络。在互联网中,邮件服务器的数量是很大的。正是这些邮件服务器构成了电子邮件基础结构的核心。在下图中为了说明问题,仅仅画出了两个邮件服务器。

1. 用户代理

用户代理 UA(User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户电脑中的一个程序(电子邮件客户端软件)。因此用户代理又称为电子邮件客户端软件。用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。常见的 Outlook 和 Foxmail 等都是很受欢迎的电子邮件用户代理。

用户代理至少应当具有以下 4 个功能:

  • 撰写:给用户提供编辑信件的环境。例如,应让用户能创建便于使用的通讯录(有常用的人名和地址)。回信时不仅能很方便地从来信中提取出对方地址,并自动地将此地址写入到邮件中合适的位置,而且还能方便地对来信提出的问题进行答复(系统自动将来信复制一份在用户撰写回信的窗口中,因而用户不需要再输入来信中的问题)。

  • 显示:能方便地在计算机屏幕上显示出来信(包括来信附上的声音和图像)。

  • 处理:处理包括发送邮件和接收邮件。收件人应能根据情况按不同方式对来信进行处理。例如,阅读后删除、存盘、打印、转发等,以及自建目录对来信进行分类保存。有时还可在读取信件之前先查看一下邮件的发件人和长度等,对于不愿收的信件可直接在邮箱中删除。

  • 通信:发信人在撰写完邮件后,要利用邮件发送协议发送到用户所使用的邮件服务器。收件人在接收邮件时,要使用邮件读取协议从本地邮件服务器接收邮件。

2. 邮件服务器

互联网上有许多邮件服务器可供用户选用(有些要收取少量的邮箱费用)。邮件服务器 24 小时不间断地工作,并且具有很大容量的邮件信箱。邮件服务器的功能是发送和接收邮件,同时还要向发件人报告邮件传送的结果(已交付、被拒绝、丢失等)。邮件服务器按照客户 - 服务器方式工作。

这里应当注意,邮件服务器必须能够同时充当客户和服务器。例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时, A 就作为 SMTP 客户,而 B 是 SMTP 服务器。反之,当 B 向 A 发送邮件时, B 就是 SMTP 客户,而A 就是 SMTP 服务器。

3. 邮件发送协议和读取协议

邮件服务器需要使用两种不同的协议。邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如 SMTP 协议;而邮件读取协议用于用户代理从邮件服务器读取邮件,如邮局协议 POP3 。

请注意这里有两种不同的通信方式。

  • 一种是“推”(push):SMTP 用的是“推”的通信方式,即用户代理向邮件服务器发送邮件及在邮件服务器之间发送邮件时,SMTP 客户把邮件“推“给 SMTP 服务器;

  • 另一种是“拉”(pull): POP3 用的是“拉”的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,POP3 客户把邮件从 POP3 服务器“拉”取出来。

上图给出了计算机之间发送和接收电子邮件的几个重要步骤。请注意, SMTP 和 POP3(或 IMAP)都是使用 TCP 连接来传送邮件的,使用 TCP 的目的是为了可靠地传送邮件。下面简单介绍电子邮件的收发过程:

  • ① 发件人调用计算机中的用户代理撰写和编辑要发送的邮件。

  • ② 发件人点击屏幕上的“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成。用户代理把邮件用 SMTP 协议发给发送方邮件服务器,用户代理充当 SMTP 客户,而发送方邮件服务器充当 SMTP 服务器。用户代理所进行的这些工作,用户是看不到的。有的用户代理可以让用户在屏幕上看见邮件发送的进度显示。用户所使用的邮件服务器究竟在什么地方,用户并不知道,也不必要知道。实际上,用户在把写好的信件交付给用户代理后,就什么都不用管了。

  • ③ SMTP 服务器收到用户代理发来的邮件后,就把邮件临时存放在邮件缓存队列中,等待发送到接收方的邮件服务器(等待时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量。但这种等待时间一般都远远大于分组在路由器中等待转发的排队时间)。

  • ④ 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。请注意,邮件不会在互联网中的某个中间邮件服务器落地。如果 SMTP 客户还有一些邮件要发送到同一个邮件服务器,那么可以在原来已建立的 TCP 连接上重复发送。如果 SMTP 客户无法和 SMTP 服务器建立 TCP 连接(例如,接收方服务器过负荷或出了故障),那么要发送的邮件就会继续保存在发送方的邮件服务器中,并在稍后一段时间再进行新的尝试。如果 SMTP 客户超过了规定的时间还不能把邮件发送出去,那么发送邮件服务器就把这种情况通知用户代理。

  • ⑤ 运行在接收方邮件服务器中的 SMTP 服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人在方便时进行读取。

  • ⑥ 收件人在打算收信时,就运行计算机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。请注意,在上图中, POP3 服务器和 POP3 客户之间的箭头表示的是邮件传送的方向。但它们之间的通信是由 POP3 客户发起的。

【思考】:如果让上图中的邮件服务器程序就在发送方和接收方的计算机中运行,那么岂不是可以直接把邮件发送到收件人的计算机中?
【答】:答案是“不行”。这是因为并非所有的计算机都能运行邮件服务器程序。有些计算机可能没有足够的存储空间来运行允许程序在后台运行的操作系统,或是可能没有足够的 CPU 能力来运行邮件服务器程序。更重要的是,邮件服务器程序必须不间断地运行,每天 24 小时都必须不间断地连接在互联网上,否则就可能使很多外面发来的邮件无法接收。这样看来,让用户的计算机运行邮件服务器程序显然是很不现实的(一般用户在不使用计算机时就将机器关闭)。让来信暂时存储在用户的邮件服务器中,而当用户方便时就从邮件服务器的用户信箱中读取来信,则是一种比较合理的做法。在 Foxmail 中使用一种“特快专递”服务。这种服务就是从发件人的用户代理直接利用 SMTP 把邮件发送到接收方邮件服务器。这就加快了邮件的交付(省去在发送方邮件服务器中的排队等待时间)。但这种“特快专递”和邮政的 EMS 直接把邮件送到用户家中不同,它并没有把邮件直接发送到收件人的计算机中。但有些邮件服务器为了防止垃圾邮件和计算机病毒,拒绝接收从一般用户直接发来的邮件。

二、电子邮件格式与 MIME

1. 电子邮件格式

一个电子邮件分为信封和内容两大部分,邮件内容又分为首部和主体两部分。

1)电子邮件的信封

电子邮件由信封(envelope)和内容(content)两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。这与邮局按照信封上的信息投递信件是相似的。

在邮件的信封上,最重要的就是收件人的地址。TCP/IP 体系的电子邮件系统规定电子邮件地址(e-mail address)的格式为:用户名 @ 邮件服务器的域名。

在上式中,符号 “@” 读作 “at” ,表示 “在” 的意思。例如,在电子邮件地址 “ xyz @ abc.com ” 中,“abc.com” 就是邮件服务器的域名,而 “xyz” 就是在这个邮件服务器中收件人的用户名,也就是收件人邮箱名,是收件人为自己定义的字符串标识符。

但应注意,这个用户名在邮件服务器中必须是唯一的(当用户定义自己的用户名时,邮件服务器要负责检查该用户名在本服务器中的唯一性)。这样就保证了每一个电子邮件地址在世界范围内是唯一的。这对保证电子邮件能够在整个互联网范围内的准确交付是十分重要的。电子邮件的用户一般采用容易记忆的字符串。

2)电子邮件的内容

在RFC 5322 文档中只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上。所以用户不需要填写电子邮件信封上的信息。

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

  • “To”:必填的关键字,后面填入一个或多个收件人的电子邮件地址。在电子邮件软件中,用户把经常通信的对象姓名和电子邮件地址写到地址簿(address book) 中。当撰写邮件时,只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。

  • “Subject”:是可选关键字,即邮件的主题。它反映了邮件的主要内容。主题类似于文件系统的文件名,便于用户查找邮件。

  • 邮件首部还有一项是抄送 “Cc”:这两个字符来自 “Carbon copy”,意思是留下一个 “复写副本” 。这是借用旧的名词,表示应给某某人发送一个邮件副本。

  • 有些邮件系统允许用户使用关键字 Bcc(Blind carbon copy)来实现盲复写副本。这是使发件人能将邮件的副本送给某人,但不希望此事为收件人知道。Bcc 又称为暗送。

  • 首部关键字还有 “From” 和 “Date”,是必填的关键字,表示发件人的电子邮件地址和发信日期。这两项一般都由邮件系统自动填入。

  • 另一个关键字是 “Reply-To”,即对方回信所用的地址。这个地址可以与发件人发信时所用的地址不同。例如有时到外地借用他人的邮箱给自己的朋友发送邮件,但仍希望对方将回信发送到自己的邮箱。这一项可以事先设置好,不需要在每次写信时进行设置。

首部与主体之间用一个空行进行分割。典型的邮件内容如下:

2. 多用途因特网邮件扩展 / 通用互联网邮件扩充(MIME)

前面所述的电子邮件协议 SMTP 有以下缺点:

  • SMTP 不能传送可执行文件或其他的二进制对象。人们曾试图将二进制文件转换为 SMTP 使用的 ASCII 文本,例如流行的 UNIX UUencode/UUdecode 方案,但这些均未形成正式标准或事实上的标准。

  • SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。即使在 SMTP 网关将 EBCDIC 码(即扩充的二 / 十进制交换码)转换为 ASCII 码,也会遇到一些麻烦。

  • SMTP 服务器会拒绝超过一定长度的邮件。

  • 某些 SMTP 的实现并没有完全按照 SMTP 的互联网标准。常见的问题如下:
    ① 回车、换行的删除和增加;
    ② 超过 76 个字符时的处理:截断或自动换行;
    ③ 后面多余空格的删除;
    ④ 将制表符 tab 转换为若干个空格。

于是在这种情况下就提出了通用互联网邮件扩充 MIME(Multipurpose Internet MailExtensions)。MIME 并没有改动或取代 SMTP 。MIME 的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。也就是说, MIME 邮件可在现有的电子邮件程序和协议下传送。下图表示 MIME 和 SMTP 的关系。

当发送端发送的邮件中包含有非 ASCII 码数据时,不能直接使用 SMTP 进行传送,而要通过 MIME 进行转换,将非 ASCII 码数据转换为 ASCII 码数据。之后,就可以使用 SMTP 进行传送。接收端也要使用 MIME 对接收到的 ASCII 码数据进行逆转换,以便可以得到包含有非 ASCII 码数据的邮件。

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

  • 5 个新的邮件首部字段,它们可包含在原来的邮件首部中。这些字段提供了有关邮件主体的信息。
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

为适应于任意数据类型和表示,每个 MIME 报文包含告知收件人数据类型和使用编码的信息。MIME 把增加的信息加入到原来的邮件首部中。下面是 MIME 增加的 5 个新的邮件首部的名称及其意义(有的可以是选项):

  • MIME-Version:标志 MIME 的版本。现在的版本号是 1.0 。若无此行,则为英文文本。
  • Content-Description:这是可读字符串,说明此邮件主体是否是图像、音频或视频。
  • Content-Id:邮件的唯一标识符。
  • Content-Transfer-Encoding:在传送时邮件的主体是如何编码的。
  • Content-Type:说明邮件主体的数据类型和子类型。

三、SMTP 协议与 POP3 协议(★)

1. 简单邮件传送协议 SMTP

下面介绍简单邮件传输协议 SMTP(Simple Mail Transfer Protocol)的一些主要特点:

SMTP 是一种提供可靠且有效的电子邮件传输的协议,它规定了在两个相互通信的 SMTP 进程之间应如何交换信息。由于 SMTP 使用客户 - 服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。至于邮件内部的格式,邮件如何存储,以及邮件系统应以多快的速度来发送邮件, SMTP 也都未做出规定。SMTP 用的是 TCP 连接,端口号为 25 。

SMTP 规定了 14 条命令和 21 种应答信息。每条命令用几个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。下面通过发送方和接收方的邮件服务器之间 SMTP 通信的三个阶段介绍几个最主要的命令和响应信息。

1)连接建立

发件人的邮件送到发送方邮件服务器的邮件缓存后, SMTP 客户就每隔一定时间(例如 30 分钟)对邮件缓存扫描一次。如发现有邮件,就使用 SMTP 的熟知端口号码 25 与接收方邮件服务器的 SMTP 服务器建立 TCP 连接。在连接建立后,接收方 SMTP 服务器要发出 “220 Service ready”(服务就绪)。然后 SMTP 客户向 SMTP 服务器发送 HELO 命令,附上发送方的主机名。SMTP 服务器若有能力接收邮件,则回答:“250 OK” ,表示已准备好接收。若 SMTP 服务器不可用,则回答 “421 Service not available”(服务不可用)。如在一定时间内(例如三天)发送不了邮件,邮件服务器会把这个情况通知发件人。

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

2)邮件传送

邮件的传送从 MAIL 命令开始。MAIL 命令后面有发件人的地址。如:MAIL FROM:<xiexiren @ tsinghua.org.cn> 。若 SMTP 服务器已准备好接收邮件,则回答 “250 OK” 。否则,返回一个代码,指出原因。如:451(处理时出错),452(存储空间不够),500(命令无法识别)等。

下面跟着一个或多个 RCPT 命令,取决于把同一个邮件发送给一个或多个收件人,其格式为RCPT TO : <收件人地址> 。RCPT 是 recipient(收件人)的缩写。每发送一个 RCPT 命令,都应当有相应的信息从 SMTP 服务器返回,如:“250 OK”,表示指明的邮箱在接收方的系统中,或“550 No such user here”(无此用户),即不存在此邮箱。

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

获得 OK 的回答后,客户端就使用 DATA 命令,表示要开始传送邮件的内容了。SMTP 服务器返回的信息是:“354 Start mail input ; end with < CRLF > .< CRLF >”。这里< CRLF >是 “回车换行” 的意思。若不能接收邮件,则返回 421(服务器不可用),500(命令无法识别)等。接着 SMTP 客户就发送邮件的内容。发送完毕后,再发送< CRLF >.< CRLF >(两个回车换行中间用一个点隔开)表示邮件内容结束。实际上在服务器端看到的可打印字符只是一个英文的句点。若邮件收到了,则 SMTP 服务器返回信息 “250 OK”,或返回差错代码。

虽然 SMTP 使用 TCP 连接试图使邮件的传送可靠,但 “发送成功” 并不等于 “收件人读取了这个邮件” 。当一个邮件传送到接收方的邮件服务器后(即接收方的邮件服务器收下了这个邮件),再往后的情况如何,就有好几种可能性。接收方的邮件服务器也可能接着就出了故障,使收到的邮件全部丢失(在收件人读取信件之前)。也可能被邮件服务器的软件当作垃圾邮件删除了。也可能收件人在清理自己的邮箱时,把尚未读取的邮件一起都删除了。有时收件人由于某种原因,很久没有查阅自己的邮箱,根本不知道自己的邮箱中有一些来信。因此,一个邮件即使是 “发送成功”,收件人也不一定会读取到这个邮件。尽管如此,基于 SMTP 的电子邮件通常都被认为是可靠的。

3)连接释放

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

这里再强调一下,使用电子邮件的用户看不见以上这些过程,所有这些复杂过程都被电子邮件的用户代理屏蔽了。

【拓展】:

已经广泛使用多年的 SMTP 存在着一些缺点。例如,发送电子邮件不需要经过鉴别。这就是说,在 FROM 命令后面的地址可以任意填写。这就大大方便了垃圾邮件的作者,给收信人添加了麻烦(有人估计,在全世界所有的电子邮件中,垃圾邮件至少占到 50%以上,甚至高达 90% )。又如, SMTP 本来就是为传送 ASCII 码而不是传送二进制数据设计的。虽然后来有了 MIME 可以传送二进制数据,但在传送非 ASCII 码的长报文时,在网络上的传输效率是不高的。此外, SMTP 传送的邮件是明文,不利于保密。

为了解决上述问题, 2008 年 10 月颁布的 RFC 5321 对 SMTP 进行了扩充,成为扩充的 SMTP (Extended SMTP),记为 ESMTP 。RFC 5321 在许多命令中增加了扩展的参数。新增加的功能有:客户端的鉴别,服务器接受二进制报文,服务器接受分块传送的大报文,发送前先检查报文的大小,使用安全传输 TLS,以及使用国际化地址等。考虑到现在的许多 SMTP 邮件服务器可能还没有升级到 ESMTP ,因此特规定使用 ESMTP 的客户端在准备传送报文时,不是发送 HELO 而是发送 EHLO 报文。如果 EHLO 报文被对方服务器端拒绝,就表明对方仍然是一个标准的 SMTP 邮件服务器(不使用扩展的参数),因而就要按照原来使用的 SMTP 参数进行邮件的传送。如果 EHLO 报文被接受了,那么客户端就可以使用 ESMTP 扩展的参数传送报文了。

2. 邮件读取协议 POP3 和 IMAP

1)邮件读取协议 POP3

现在常用的邮件读取协议有两个,即邮局协议第 3 个版本 POP3 和网际报文存取协议 IMAP(Internet Message Aeeess Protoeol)。现分别讨论如下。

邮局协议 POP(PostOfice Protocol)是一个非常简单、但功能有限的邮件读取协议。它已成为互联网的正式标准。大多数的 ISP 都支持 POP3 。POP3 也使用客户 - 服务器的工作方式,在传输层使用 TCP ,端口号为 110 。

在接收邮件的用户计算机中的用户代理必须运行 POP3 客户程序,而在收件人所连接的 ISP 的邮件服务器中则运行 POP3 服务器程序。当然,这个 ISP 的邮件服务器还必须运行 SMTP 服务器程序,以便接收发送方邮件服务器的 SMTP 客户程序发来的邮件。POP3 服务器只有在用户输入鉴别信息(用户名和口令)后,才允许对邮箱进行读取。

POP3 协议的一个特点就是:只要用户从 POP3 服务器读取了邮件,POP3 服务器就把该邮件删除。这在某些情况下就不够方便。例如,某用户在办公室的台式计算机上接收了一个邮件,还来不及写回信,就马上携带笔记本电脑出差。当他打开笔记本电脑写回信时,POP3 服务器上却已经删除了原来已经看过的邮件(除非他事先将这些邮件复制到笔记本电脑中)。为了解决这一问题, POP3 进行了一些功能扩充,其中包括让用户能够事先设置邮件读取后仍然在 POP3 服务器中存放的时间。

即 POP 有两种工作方式:“下载并保留”和“下载并删除”。在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件;而使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除。

2)网际报文存取协议 IMAP

另一个读取邮件的协议是网际报文存取协议 IMAP ,它比 POP3 复杂得多。IMAP 和 POP 都按客户 - 服务器方式工作,但它们有很大的差别。IMAP4 目前是互联网的建议标准。不过在习惯上,大家经常简单地用 IMAP 表示 IMAP4 。

在使用 IMAP 时,在用户的计算机上运行 IMAP 客户程序,然后与接收方的邮件服务器上的 IMAP 服务器程序建立 TCP 连接。用户在自己的计算机上就可以操纵邮件服务器的邮箱,就像在本地操纵一样,因此 IMAP 是一个联机协议。当用户计算机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。用户可以根据需要为自己的邮箱创建便于分类管理的层次式的邮箱文件夹,并且能够将存放的邮件从某一个文件夹中移动到另一个文件夹中。用户也可按某种条件对邮件进行查找。在用户未发出删除邮件的命令之前,IMAP 服务器邮箱中的邮件一直保存着。

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

IMAP 最大的好处就是:用户可以在不同的地方使用不同的计算机(例如,使用办公室的计算机、或家中的计算机,或在外地使用笔记本电脑)随时上网阅读和处理自己在邮件服务器中的邮件。IMAP 还允许收件人只读取邮件中的某一个部分。例如,收到了一个带有视像附件(此文件可能很大)的邮件,而用户使用的是无线上网,信道的传输速率很低。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很大的附件。

IMAP 的缺点是:如果用户没有将邮件复制到自己的计算机上,则邮件一直存放在 IMAP 服务器上。要想查阅自己的邮件,必须先上网。

下图给出了 IMAP 和 POP3 的主要功能的比较:

最后再强调一下,不要把邮件读取协议 POP3 或 IMAP 与邮件传送协议 SMTP 弄混。发件人的用户代理向发送方邮件服务器发送邮件,以及发送方邮件服务器向接收方邮件服务器发送邮件,都是使用 SMTP 协议。而 POP3 或 IMAP 则是用户代理从接收方邮件服务器上读取邮件所使用的协议。

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

四、例题

① SMTP 基于传输层的()协议,POP3 基于传输层的()协议。A
A. TCP , TCP
B. TCP , UDP
C. UDP , UDP
D. UDP , UDP
【SMTP 和 POP3 都是基于 TCP 的协议,提供可靠的邮件通信。】

② 用 Firefox(浏览器)在 Gmail 中向邮件服务器发送邮件时,使用的是( A )协议。
A. HTTP
B. POP3
C. P2P
D. SMTP

在基于万维网的电子邮件中,用户浏览器与 Hotmail 或 Gmail 的邮件服务器之间的邮件发送或接收使用的是 HTTP ,而仅在不同邮件服务器之间传送邮件时才使用 SMTP 。

③ 下列关于电子邮件格式的说法中,错误的是( B )。
A. 电子邮件内容包括邮件头与邮件体两部分
B. 邮件头中发信人地址(From:)、发送时间、收信人地址(To:)及邮件主题(Subject:)是由系统自动生成的
C. 邮件体是实际要传送的信函内容
D. MIME 允许电子邮件系统传输文字、图像、语音与视频等多种信息
【邮件头是由多项内容构成的,其中一部分是由系统自动生成的,如发信人地址(From:)、发送时间;另一部分是由发件人输入的,如收信人地址(To:)、邮件主题(Subject:)等。】

④ 下列关于 POP3 协议的说法,( B )是错误的。
A. 由客户端而非服务器选择接收后是否将邮件保存在服务器上
B. 登录到服务器后,发送的密码是加密的
C. 协议是基于 ASCII 码的,不能发送二进制数据
D. 一个账号在服务器上只能有一个邮件接收目录
【POP3 协议在传输层是使用明文来传输密码的,并不对密码进行加密。POP3 协议基于 ASCII 码,若要传输非 ACSII 码的数据,则要使用 MIME 将数据转换成 ASCII 码形式。】

⑤ 【2012统考真题】若用户 1 与用户 2 之间发送和接收电子邮件的过程如下图所示,则图中 ①、②、③ 阶段分别使用的应用层协议可以是( D )。


A. SMTP 、SMTP 、SMTP
B. POP3 、SMTP 、POP3
C. POP3 、SMTP 、SMTP
D. SMTP 、SMTP 、POP3

⑥ 【2013 统考真题】下列关于 SMTP 的叙述中,正确的是( A )。
I. 只支持传输 7 比特 ASCII 码内容
II. 支持在邮件服务器之间发送邮件
III. 支持从用户代理向邮件服务器发送邮件
IV. 支持从邮件服务器向用户代理发送邮件
A. 仅 I 、II 和 III
B. 仅 I 、II 和 IV
C. 仅 I 、III 和 IV
D. 仅 II、III 和 IV

⑦ 【2015 统考真题】通过 POP3 协议接收邮件时,使用的传输层服务类型是( D )。
A. 无连接不可靠的数据传输服务
B. 无连接可靠的数据传输服务
C. 有连接不可靠的数据传输服务
D. 有连接可靠的数据传输服务
【POP3 建立在 TCP 连接上,使用的是有连接可靠的数据传输服务。】

⑧ 【2018统考真题】无须转换即可由 SMTP 直接传输的内容是( D )。
A. JPEG 图像
B. MPEG 视频
C. EXE 文件
D. ASCII 文本

【问题1】:电子邮件系统使用 TCP 传送邮件,为什么有时会遇到邮件发送失败的情况?为什么有时对方会收不到发送的邮件?
【答】:有时对方的邮件服务器不工作,邮件就发送不出去。对方的邮件服务器出故障也会使邮件丢失。有时网络非常拥塞,路由器丢弃大量的 IP 数据报,导致通信中断。

【问题2】:MIME 与 SMTP 的关系是怎样的?
【答】:因为 SMTP 存在一些缺点和不足,所以通过 MIME 并非改变或取代 SMTP 。MIME 继续使用 RFC822 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。也就是说,MIME 邮件可在已有的电子邮件和协议下传送。


http://www.mrgr.cn/news/35224.html

相关文章:

  • stm32在linux环境下的开发与调试
  • 块设备的两种访问方法的区别
  • 38配置管理工具(如Ansible、Puppet、Chef)
  • 暴雨信息推出电力大模型一体机
  • 【Python进阶】Python中的数据库交互:ORM技术与SQLAlchemy
  • MySQL LOAD DATA INFILE导入数据报错
  • Vue(16)——Vue3.3新特性
  • 最小花费爬楼梯(动态规划)问题
  • 工业一体机实现接口与模块选配
  • 【后端开发】JavaEE初阶—线程安全问题与加锁原理(超详解)
  • 3270.求出数字答案题解
  • Winform—事件多播和事件联机响应
  • 【Python百日进阶-Web开发-FastAPI】Day805 - FastAPI的请求体
  • golang学习笔记14-函数(三):系统函数
  • Python语句: For 循环的详细讲解
  • CCIE证书有用吗?CCIE含金量解读!
  • js实现多行文本控件textarea,根据文本内容自适应窗口全部显示
  • C++ SLT标准模板简介
  • iframe和父页面使用message通信,支持跨域
  • 负载均衡--TLS安全策略(四)
  • Java反射机制入门:解锁运行时类信息的秘密
  • 【解决虚拟机NAT联网】收藏这份教程就不用再辛苦找了
  • Avalonia的第三方UI库Material.Avalonia详细教程
  • Dify部署及初步测试
  • CSS 的元素显示模式简单学习
  • linux命令行快捷键