电子邮件是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要对使用的应用之一:
-
传统的电话通信属于实时通信,存在以下两个缺点:
第一,电话通信的主叫和被叫双方必须同时在场。
第二,一些不是十分紧迫的电话,也常常不必要的打断人们的工作和休息 -
而电子邮件与邮政系统的寄信相似:
- 发件人将邮件发送到自己使用的邮件服务器,发现人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱
- 收件人在方便的时候访问收件人邮件服务器中自己的邮箱获取收到的电子邮件,
-
电子邮件使用方便,传递迅速,而且费用低廉,它不仅可以传送文字信息,而且还可以附上声音和图像。
-
由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国电信局的电报业务也因电子邮件的普及而濒临消失。
-
电子邮件系统采用客户服务器方式
-
其三个主要组成构件是用户代理,邮件服务器以及电子邮件所需的协议。。我们来举例说明,假设这是邮件的发送方,这是邮件的接收方。在发送方的计算机中需要使用用户代理来发送邮件,在接收方的计算机中,同样也需要使用用户代理来接收邮件。用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件
-
这是发送方使用的邮件服务器,例如 QQ 邮件服务器,这是接收方使用的邮件服务器,例如谷歌邮件服务器,邮件服务器是电子邮件系统的基础设施,因特网上所有的服务提供商 ISP 都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。如图所示,我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存带转发邮件的缓存
-
发送方使用用户代理通过邮件发送协议,例如 SMTP 将邮件发送给发送方邮件服务器,发送方邮件服务器同样通过邮件发送协议,将该邮件发送给接收方邮件服务器
接收方在方便的时候需要用户代理通过邮件读取协议,例如 POP3 从接收方邮件服务器读取邮件。也就是说电子邮件所签的协议,包括邮件发送协议和邮件主体协议两类。
接下来我们更进一步说明上述的邮件发送和接收过程:
- 发送方的用户代理,作为 SMTP 客户与发送方邮件服务器中的 SMTP 服务器进行 TCP 连接,然后基于这条连接,是由 SMTP 协议来发送邮件给发送方邮件服务器,
- 发送方邮件服务器中的 SMTP 客户与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接,然后基于这条连接,使用 SMTP 协议来发送已收到的待转发邮件给接收方邮件服务器,
- 接收方的用户代理,作为 POP3 客户与接收方邮件服务器中的 POP3 服务器进行 TCP 连接。然后基于这条连接,需要 POP3 协议,从接收方邮件服务器读取邮件,
- 可以看到这是邮件发送协议的使用范围,包含发送方用户代理到发送方邮件服务器,以及发送方邮件服务器到接收方邮件服务器这两部分,这是邮件读取协议的使用范围,只有接收方用户代理到接收方邮件服务器这一部分。
接下来我们介绍属于邮件发送协议的简单邮件传送协议 SMTP 的基本工作原理。我们以发送方邮件服务器,使用 SMTP 协议给接收方邮件服务器发送待转发的邮件为例,发送方邮件服务器周期性的扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的 SMTP 客户会与接收方邮件服务器中的 SMTP 服务器进行 TCP 连接,端口号为 25(熟知端口号),之后 SMTP 客户就可以基于这条 TCP 连接给 SMTP 服务器,发送 SMTP 命令,共 14 条。SMTP 服务器也会给 SMTP 客户发送相应的应答,共 21 种。
SMTP 客户与服务器之间通过命令与应答的交互方式,最终实现 SMTP 客户发送邮件给 SMTP 服务器。
接下来我们就要简单介绍一下该过程,当 TCP 连接建立成功号 SMTP 服务器会主动推送服务就绪应答给 SMTP 客户。应答代码 220 后面可能跟有描述信息,例如这是网易邮件服务器给出的描述信息:
SMTP 客户收到该应答后,向服务器表明身份,告知自己 SMTP 服务器的域名,具体命令为 HELLO 旗号为命令参数
SMTP 服务器若认为身份有效,则发回应答代码 250,否则发回其他代码。例如 421 表示服务不可用
SMTP 客户收到该应答后,使用命令 MAIL FROM 来告诉服务器邮件来自何方。
SMTP 服务器若认为合理,则发回应答代码 250,否则发回其他错误代码
SMTP 客户收到该应答后,使用命令 RCP TO 来告诉服务器邮件去往何方,也就是收件人邮箱
SMTP 服务器中,如果有该收件人邮箱,则发回应答代码 250,否则发回其他错误代码。
SMTP 客户收到该应答后,使用 DATA 命令来告诉服务器,自己准备发送邮件内容了,
SMTP 服务器如果准备好接收发回应答代码 354,否则发回其他错误代码。
SMTP 客户收到该应答后,就向服务器发送邮件内容,SMTP 客户发送完邮件内容后,还要发送结束符 SMTP 服务器若收件成功,则发回应答代码 250,否则发回其他错误代码。
SMTP 客户收到该应答后,使用命令 QUIT 向服务器请求断开连接,
SMTP 服务器发回应答代码 221,表示接受请求,并主动断开连接。
需要说明的是为了简单起见,我们省略了可能需要的认证过程,还省略了应答代码后面一般都跟随的简单描述信息,不同的 SMTP 服务器给出的相同应答代码,其后面跟随的描述信息可能不同。
接下来我们介绍电子邮件的信息格式,电子邮件的信息格式并不是由 SMTP 协议定义的,而是在 RFC 822 文档中单独定义。该文档已在 2008 年更新为 RFC 5322。
一个电子邮件有信封和内容两部分,而内容又由首部和主体两部分构成。
例如这是电子邮件的信封,这是电子邮件的内容,它有首部和主体,两部分构成,首部和主体的信息都需要由用户来填写。首部中包含有一些关键字,后面加上冒号,例如关键字 FROM 后面填入发件人的电子邮件地址,一般由邮件系统自动填入。
关键字 TO,后面填入一个或多个收件人的电子邮件。
关键字 CC 后面填入一个或多个收件人以外的抄送人的电子邮件地址,抄送人收到邮件号,可看可不看邮件,可回可不回邮件。
关键字 SUBJECT,后面填入邮件的主题,它反映了邮件的主要内容,很显然最重要的关键字是 To 和 Subject,他们往往是必填选项。
用户写好首部后,邮件系统将自动的将信封所需的信息提取出来,并写在信封上,所以用户不需要填写电子邮件信封上的信息。
在填写完首部各关键字的内容号,用户还需要撰写邮件的主体部分,这才是用户想传递给收件人的核心信息。
SMTP 协议只能传送 ASCII 文本数据,不能传送可执行文件或其他的二进制对象。
也就是说 SMTP 不能传送带,有图片、音频或视频数据的多媒体邮件,并且许多其他非英语国家的文字,例如中文、俄文,甚至带有重音符号的法文或德文,也无法用 SMTP 传送。
为解决 SMTP 传送非 ASCII 文本的问题,提出了多用途因特网邮件扩展 MIME。如图所示 SMTP 协议只能传送 ASCII 文本数据,这是电子邮件的收发双方,假设发送方发送到电子邮件中,包含有非 ASCII 数据,则不能直接使用 SMTP 进行传送,需要通过 MIME 进行转换,将非 ASCII 数据转换为 ASCII 数据,然后就可以使用 SMTP 进行传送了。接收方也要使用 MIME 对接收到的 ASCII 数据进行逆转换,这样就可以得到包含有非 ASCII 数据的电子邮件。
为了实现这种转换,MIME 增加了 5 个新的邮件首部字段,这些字段提供了有关邮件主体的信息,定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化,定义了传送编码可对任何内容格式进行转换,而不会被邮件系统改变。实际上 MIME 不仅仅用于 SMTP,也用于后来的同样面向 ASCII 字符的超文本传送协议 HTTP。到目前为止,我们已经介绍完了涉及邮件发送的相关内容。
接下来我们介绍涉及邮件读取的相关内容,常用的邮件读取协议有以下两个,一个是邮局协议 POP。 POP3 是其第三个版本,是因特网正式标准,另一个是因特网邮件访问协议 IMAP,IAMP4 是其第 4 个版本,目前还只是因特网建议标准。
POP3 是非常简单,功能有限的邮件读取协议,用户只能以下载并删除方式或下载并保留方式,从邮件服务器下载邮件到用户计算机,不允许用户在邮件服务器上管理自己的邮件。
IAMP4 是功能比 POP3 强大的邮件读取协议,用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此 IAMP 是一个联机协议,
POP3 和 IAMP4 都采用基于 TCP 连接的客户服务器方式。TOP3 是用熟知端口 110,IAMP 使用熟知端口 143,
有关 TOP3 协议和 MAP4 协议的具体内容,有兴趣的同学可自行查阅相关资料,我们就要不再深入介绍了。
实际上本节课涵盖了电子邮件系统,涉及到的各方面基本内容,对于了解电子邮件系统的基本工作原理来说已经足够了。
如果同学们将来要进行电子邮件系统相关程序设计,例如编写一个电子邮件客户端软件,则还需要对相关协议的 RFC 文档进行深入阅读。现在越来越多的用户使用基于万维网的电子邮件,通过浏览器登录邮件服务器万维网网站,就可以撰写、收发、阅读和管理电子邮件,这种工作方式与 IAMP 很类似,不同的是用户计算机无需安装专门的用户代理程序,也就是电子邮件客户端软件,只需要使用通用的万维网浏览器即可。
邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
我们来举例说明,基于万维网的电子邮件应用,假设用户 A 和 B 都使用网易邮件服务器,这是用户 A 的电子邮件地址,这是用户 B 的电子邮件地址,用户 A 要给用户 B 发送邮件,用户 A 需要浏览器登录邮件服务器网站,撰写并发送邮件给用户 B。用户 B 也使用浏览器登录邮件服务器网站读取收到的邮件。用户 A 和 B 在发送和接收邮件时,与服务器之间使用的都是 HTTP 协议,而不需要使用我们之前介绍过的 SMTP 和 POP3 协议。HTTP 协议是超文本传送协议,我们将在后续课程中介绍。
再来看另一种情况,假设用户 A 需要网易邮件服务器,这是他的电子邮件地址,用户 C 使用谷歌邮件服务器,这是他的电子邮件地址,用户 A 要给用户 C 发送邮件,用户 A 需要浏览器登录自己的邮件服务器网站,撰写并发送邮件给用户 C,使用的是 HTTP 协议。用户 A 的邮件服务器,需要 SMTP 将邮件发送给用户 C 的邮件服务器。用户 C 也使用浏览器,登录自己的邮件服务器网站,读取收到的邮件,使用的也是 HTTP 协议。
最后我们来做几个相关的练习题。
这是计算机专业考研全国统考计算机网络部分 2012 年的题 40 答案是选项 D。
我们来一起分析一下。题目所给的 4 个选项中只出现了两种协议,一种是用于邮件发送的简单邮件传送协议 SMTP,另一种是用于邮件读取的邮局协议 POP3,阶段 1 是用户 1 的用户代理程序,向用户 1 的邮件服务器发送邮件,应该使用 SMTP 协议。阶段 2 是用户 1 的邮件服务器,给用户 2 的邮件服务器,发送邮件也应该使用 SMTP 协议。阶段 3 是用户 2 的用户代理程序,从用户 2 的邮件服务器读取邮件,应该需要 POP3 协议。
再来看 2013 年的题 40, 答案是选项 A。
如图所示,这是我们之前介绍过的,SMTP 协议只支持传送 ASCII 文本数据,如果电子邮件中包含有非 ASCII 数据,需要经过 MIME 转换变成 ASCII 数据后,才能使用 SMTP 协议进行传输,因此叙述 1 正确。再来看我们之前介绍过的这幅图,邮件服务器之间发送邮件,采用的是 SMTP 协议,因此叙述 2 正确,用户代理给邮件服务器发送邮件,也需要 SMTP 协议。因此叙述 3 也正确,用户代理从邮件服务器读取邮件时,使用的是 POP3 协议,还可以使用功能更强的 IMAP 协议。因此叙述 4 错误。
再来看 2018 年的题 40,答案是选项 D,简单题目不再赘述:
本节课的内容小结如下:
标签:发送,SMTP,用户,计算机网络,服务器,课堂,电子邮件,邮件 From: https://www.cnblogs.com/PeterJXL/p/18215039