首页 > 其他分享 >《计算机网络微课堂》 6-6 电子邮件

《计算机网络微课堂》 6-6 电子邮件

时间:2024-05-30 09:03:11浏览次数:25  
标签:发送 SMTP 用户 计算机网络 服务器 课堂 电子邮件 邮件

电子邮件是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要对使用的应用之一:

  • 传统的电话通信属于实时通信,存在以下两个缺点:
    第一,电话通信的主叫和被叫双方必须同时在场。
    第二,一些不是十分紧迫的电话,也常常不必要的打断人们的工作和休息

  • 而电子邮件与邮政系统的寄信相似:

    • 发件人将邮件发送到自己使用的邮件服务器,发现人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱
    • 收件人在方便的时候访问收件人邮件服务器中自己的邮箱获取收到的电子邮件,
  • 电子邮件使用方便,传递迅速,而且费用低廉,它不仅可以传送文字信息,而且还可以附上声音和图像。

  • 由于电子邮件的广泛使用,现在许多国家已经正式取消了电报业务。在我国电信局的电报业务也因电子邮件的普及而濒临消失。


  • 电子邮件系统采用客户服务器方式

  • 其三个主要组成构件是用户代理,邮件服务器以及电子邮件所需的协议。。我们来举例说明,假设这是邮件的发送方,这是邮件的接收方。在发送方的计算机中需要使用用户代理来发送邮件,在接收方的计算机中,同样也需要使用用户代理来接收邮件。用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件

  • 这是发送方使用的邮件服务器,例如 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

相关文章

  • 《计算机网络微课堂》6-5 文件传送协议FTP
    本节课我们介绍文件传送协议FTP:将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送文件传送协议FTP是因特网上使用的最广泛的文件传送协议FTP提供交互式的访问,允许客户指明文件的类型与格式,例如指明是否使用ASCII,并允许......
  • 《计算机网络微课堂》6-3 动态主机配置协议DHCP
    本节课我们介绍动态主机配置协议DHCP。我们首先来举例说明DHCP的作用。如图所示有这样一个网络拓扑,请同学们思考一下,我们应该给网络中的各主机设置怎样的网络相关配置信息,才能使他们可以正常访问网络中的WEB服务器。根据我们之前课程所介绍过的相关知识可知,需要给网络中的各......
  • 《计算机网络微课堂》6-2 客户—服务器方式和对等方式
    本节课我们介绍客户服务器方式和对等方式。我们知道网络应用程序运行在处于网络边缘的不同端系统上,通过彼此间的通信来共同完成某项任务。因此开发一种新的网络应用,首先要考虑的问题就是网络应用程序,在各种端系统上的组织方式和他们之间的关系。目前流行的主要有以下两种,一种是......
  • 《计算机网络微课堂》第六章 应用层
    6-1应用层概述从本节课开始,我们进入第6章应用层的学习。本节课我们对应用层进行概述,在之前的课程中,我们按计算机网络体系结构,由低到高的顺序,依次学习了物理层、数据链路层、网络层、运输层。物理层解决使用何种信号来传输比特的问题数据链路层解决分组在一个网络或一段链路......
  • 计算机网络——三种交换方式
    电路交换(CircuitSwitching)要实现每台主机相互连接是不现实,假如一台主机要和另外一台主机相连,则需要一根连接线,五台就需要十条连接线,而更多则需要的连接线成指数级上升(代词),如果有n个主机则需要的连接线计算公式为:2/n(n-1) 那么怎么实现通过减少连接线还能让主机与主机......
  • 计算机网络中的负载均衡
    本期从什么是负载均衡,为什么要有负载均衡,如何实现负载均衡,以及负载均衡相关的算法来讨论负载均衡1.什么是负载均衡:负载均衡(LoadBalancing)是一种在计算机网络中用于分发网络流量或工作负载的方法,以确保资源的高效利用和系统的高可用性。它通过将请求或任务分发到多个服务器......
  • 计算机网络的网络拥塞
    1.什么是网络拥塞:对网络中的某一资源的需求超过了资源所能提供的可用部分,网络性能就要变坏;这种情况就叫拥塞(网络资源包括带宽,交换节点中的缓存和处理机等),拥塞会导致网络的性能随着负荷的增大而下降。所以如何减少拥塞是网络重中之重的问题。2.TCP拥塞控制算法:以下算法都是建......
  • 《计算机网络微课堂》5-9 TCP报文段的首部格式
    本节课我们介绍TCP报文段的首部格式。在之前的课程中我们曾介绍过,为了实现可靠传输,TCP采用了面向字节流的方式,如图所示TCP将应用进程交付下来的应用报文看作是字节流,存入TCP发送缓存中,但TCP在发送数据时是否发送缓存,取出一部分或全部字节,并给其添加一个首部使之成为TCP......
  • 《计算机网络微课堂》5-8 TCP的运输连接管理
    从本节课开始,我们将分两次课来介绍TCP的运输连接管理。5.8.1TCP的连接建立TCP是面向连接的协议,它基于运输连接来传送TCP报文段TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程TCP运输连接有以下三个阶段第一个阶段是建立TCP连接,也就是通过......
  • 《计算机网络微课堂》5-7 TCP 可靠传输的实现
    本节课我们介绍TCP可靠传输的实现。TCP基于以字节为单位的滑动窗口来实现可靠传输。我们来举例说明,这是因特网上的两台主机,他们之间已经建立了一个TCP连接,为了简单起见,我们假定数据传输只在一个方向进行,换句话说,发送方给接收方发送TCP数据报文段,接收方给发送方发送相应的......