计算机网络——自顶向下第七版 2.3因特网的电子邮件


在这里插入图片描述

2.3.0 引言

  1. 因特网电子邮件系统有三个主要组成部分:用户代理(user agent)邮件服务器(mail server)简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)
  2. 微软的OutlookApple Mail是电子邮件用户代理的例子。当Alice完成邮件撰写时,她的邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的外出报文队列中。当Bob要阅读报文时,他的用户代理在其邮件服务器的邮箱中取得该报文。
  3. 邮件服务器形成了电子邮件体系结构的核心。每个接收方(如Bob)在其中的某个邮件服务器上有一个邮箱(mailbox)。Bob的邮箱管理和维护者发送给他的报文。一个典型的邮件发送过程是:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后再这里被分发到接收方的邮箱中。当Bob要在他的邮箱中读取报文时,包含他邮箱的邮件服务器(使用用户名和口令)来鉴别Bob。Alice的邮箱也必须能处理Bob的邮件服务器的故障。如果Alice的服务器不能将邮件交付给Bob的服务器,Alice的邮件服务器在一个报文队列(message queue)中保持该报文并在以后尝试再次发送。通常每30分钟左右进行一次尝试;如果几天后仍然不能成功,服务器就删除该报文并以电子邮件的形式通知发送方。
  4. SMTP(25号端口)是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。SMTP也有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。每台邮件服务器既运行SMTP的客户端也运行SMTP的服务器端。

2.3.1 SMTP(编程作业3)——RFC 5321

  1. SMTP限制所有邮件报文的体部分(不只是其首部)只能采用简单的7比特ASCII表示。在用SMTP传送邮件之前,需要将二进制多媒体数据编码为ASCII码,并且在使用SMTP传输后要求将相应ASCII码邮件解码还原为多媒体数据。而使用HTTP传送前不需要将多媒体数据编码为ASCII码。
  2. (SMTP的基本步骤)——假设Alice想给Bob发送一封简单的ASCII报文,其步骤如下:
    ① Alice调用她的邮件代理程序并提供Bob的邮件地址(例如Bob@someschool.edu),撰写报文,然后指示用户代理发送该报文
    ②Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列
    ③运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接
    ④在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文
    ⑤在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器将该报文放入Bob的邮箱中。
    ⑥在Bob方便的时候,他调用用户代理阅读该报文。
    在这里插入图片描述
  3. SMTP一般不使用中间邮件服务器发送邮件。如果Bob的邮件服务器没有开机,该报文会保留在Alice的邮件服务器上并等待进行新的尝试,这意味着邮件并不在中间的某个邮件服务器存留。
  4. 一个例子:分析一个SMTP客户(C)和SMTP服务器(S)之间交换报文文本的例子。客户的主机名为crepes.fr,服务器的主机名是hamburger.edu。 以C:开头的ASCII码文本行正是客户交给其TCP套接字的那些行,以S:开头的ASCII码则是服务器发送给其TCP套接字的那些行。创建完TCP连接,过程如下:
    在这里插入图片描述
    在上例中,客户从邮件服务器crepes.fr向邮件服务器hamburger.edu发送了一个报文(“Do you like ketchup? How about pickles?”)作为对话的一部分,该客户发送了5条命令:HELO(hello的缩写)、MAIL FROM、RCPT TO、DATA以及QUIT。这些命令都是自解释的。该客户通过发送一个只包含一个句点的行,向服务器指示该报文结束了。(按照ASCII码的表示方法,每个报文以CRLF.CRLF结束,其中的CR和LF分别表示回车和换行。)服务器对每条命令作出回答,其中每个回答含有一个回答码和一些(可选的)英文解释。我们在这里指出SMTP用的是持续连接:如果发送邮件服务器有几个报文发往同一个接收邮件服务器,它可以通过同一个TCP连接发送所有的报文。对每个报文,该客户用一个新的MAIL FROM:crepes.fr开始,用一个独立的句点表示该邮件的结束,并且仅当所有邮件发送完后才发送QUIT。

2.3.2 与HTTP的对比

  1. (相同点) HTTP从Web服务器向Web客户(通常是一个浏览器)传送文件(也称为对象);SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。当进行文件传送时,持续的HTTP和SMTP都是用持续连接。
  2. (不同点1) HTTP主要是一个拉协议(pull protocol),即在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。特别是TCP连接是由想接收文件的机器发起的。另一方面,SMTP基本上是一个推协议(push protocol),即发送邮件服务器把文件推向接收邮件服务器。特别是,这个TCP连接是要由要发送该文件的机器发起的。
    (不同点2) SMTP要求每个报文(包括它们的体)采用7比特ASCII码格式。如果某报文包含了非7比特ASCII字符(如具有重音的法文字符)或二进制数据(如图形文件),则该报文必须按照7比特ASCII码进行编码。HTTP数据则不受这种限制。
    (不同点3——如何处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档。 HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

2.3.3 邮件报文格式——RFC 5322

在这里插入图片描述

2.3.4 邮件访问协议

  1. 邮件访问采用客户-服务器体系结构,即典型的用户通过在用户端系统上运行的客户程序来阅读电子邮件,这里的端系统可能是办公室的PC、便携机或者是智能手机。通过在本地主机上运行邮件客户程序,用户享受一系列丰富的特性,包括查看多媒体报文和附件的能力。
  2. 用户通常在本地PC上运行一个用户代理程序,而它访问存储在总是保持开机的共享邮件服务器上的邮箱。该邮件服务器与其他用户共享,并且通常由用户的ISP(如大学或公司) 进行维护。
    在这里插入图片描述
  3. 考虑当从Alice向Bob发送一个电子邮件报文时所取的路径。如上图所示,Alice的用户代理SMTP电子邮件报文推入她的邮件服务器,接着她的邮件服务器(作为一个SMTP客户)再用SMTP将该邮件中继到Bob的邮件服务器。为什么该过程要分成两步呢?主要是因为不通过Alice的邮件服务器进行中继,Alice的用户代理将没有任何方法到达一个不可达的目的地接收服务器。 通过首先将邮件存放在自己的邮件服务器中,Alice的邮件服务器可以重复地尝试向Bob的邮件服务器发送该报文,如每30分钟一次,直到Bob的邮件服务器变得运行为止。(并且如果Alice的邮件服务器关机,她则能向系统管理员进行申告!)
  4. Bob的用户代理不能使用SMTP得到报文,因为取报文是一个拉操作,而SMTP协议是一个推协议。通过引入一个特殊的邮件访问协议来解决这个难题,该协议将Bob邮件服务器上的报文传送给他的本地PC。目前有一些流行的邮件访问协议,包括第三版的邮局协议(Post Office Protocol——Version 3,POP3)因特网邮件访问协议(Internet Mail Access Protocol,IMAP)以及HTTP
  5. 上图总结了应用于因特网电子邮件的一些协议 :SMTP用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;SMTP也用来将邮件从发送方的用户代理传送到发送方的邮件服务器。POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。
  6. POP3(RFC 1939)的详细介绍:
    ①当用户代理(用户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。
    ②随着建立TCP连接,POP3按照三个阶段进行工作:特许(authorization)事务处理以及更新
    ③在POP3的事务处理过程中,用户代理发出一些命令,服务器对每个命令做出回答。回答可能有两种:+OK(有时后面还跟有服务器到用户的数据),被服务器用来指示前面的命令是正常的;-ERR,被服务器用来指示前面的命令出现了某些差错。
    ④特许阶段有两个主要的命令:user 和pass 。
    在这里插入图片描述
    ⑤在事务处理过程中,使用POP3的用户代理通常被用户配置为“下载并删除”或者“下载并保留”方式。POP3用户代理发出的命令序列取决于用户代理程序被配置为这两种工作方式的其中一种。使用下载并删除方式,用户代理发出list、retr和dele命令。
    retr 数字 收取邮件,retr 1表示收取邮箱当中的第一封邮件,这是POP3协议里面最重要的一个命令。
    list(列出每封邮件的字节数 邮件序号 邮件大小)
    在这里插入图片描述
    ⑥使用下载并删除方式存在的问题邮件接收方Bob可能是移动的,可能希望从多个不同的机器访问他的邮件报文,如从办公室的PC、家里的PC或他的便携机来访问邮件。阅后即焚,就无法继续收取邮件了。
    ⑦而使用下载并保留方式,用户代理下载某邮件后,该邮件仍保留在邮件服务器上。这时,Bob就能通过不同的机器重新读取这些邮件;他能在工作时收取一封报文,而在工作回家后再次访问它。
    ⑧在用户代理与邮件服务器之间的POP3会话期间,该POP3服务器保留了一些状态信息;特别是记录了哪些用户报文被标记为删除了。然而,POP3服务器并不在POP3会话过程中携带状态信息。会话中不包括状态信息大大简化了POP3服务的实现。
  7. IMAP(RFC 3501)的详细介绍:
    POP3的问题: 没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。 它的文件夹和报文存放在本地主机上的方式,会给移动用户带来麻烦,因为他更喜欢使用一个在远程服务器上的层次文件夹,这样他可以从任何一台机器上对所有报文进行访问。
    IMAP的第一特性:IMAP服务器把每个报文与一个文件夹联系起来;当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。收件人则能够把邮件移到一个新的、用户创建的文件夹中,阅读邮件删除邮件等。IMAP协议为用户提供了创建文件夹以为将邮件从一个文件夹移动到另一个文件夹的命令。与POP3不同的是,IMAP服务器维护了IMAP会话的用户状态信息,例如,文件夹的名字以及哪些报文与哪些文件夹相关联
    IMAP的第二特性: 具有允许用户代理获取报文某些部分的命令。例如,一个用户代理可以只读取一个报文的报文首部,或只是一个多部分MIME报文的一部分。当用户代理和其邮件服务器之间使用低带宽连接(如一个低速调制解调器链路)的时候,这个特性尤其有用,使用这种低带宽连接时,用户可能并不想取回他邮箱中的所有邮件,尤其要避免可能包含如音频或视频片断的大邮件。
  8. 基于Web的电子邮件的详细介绍(RFC1945;RFC 2616;RFC 7540):
    使用这种服务,用户代理就是普通的浏览器用户和他远程邮箱之间的通信则通过HTTP进行。当一个收件人(如Bob),想从他的邮箱中访问一个报文时,该电子邮件报文从Bob的邮件服务器发送到他的浏览器,使用的是HTTP而不是POP3或者IMAP协议。当发件人比如Alice要发送一封电子邮件报文时,该电子邮件报文从Alice的浏览器发送到她的邮件服务器,使用的是HTTP而不是SMTP。然而,Alice的邮件服务器在与其他的邮件服务器之间发送和接收邮件时,仍然使用的是SMTP。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

highlight2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值