应用层学习笔记四.因特网中的电子邮件

因特网电子邮件系统的组成:

  1. 用户代理 user agent:
  2. 邮件服务器 mail server:电子邮件体系结构的核心,每个接收方在其中的某个邮件服务器上有一个邮箱
  3. 简单邮件传输协议 Simple Mail Transfer Protocol SMTP:使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件
    • 运送在发送方邮件服务器的客户端
    • 运行在接收方邮件服务器的服务器端

SMTP

用于从发送方的邮件服务器发送报文到接收方的邮件服务器。

限制所有邮件报文的体部分只能用7biteASCII码表示。在用SMTP传输邮件之前,需要将二进制多媒体数据编码为ASCII码,并且在使用SMTP传输后要求将相应的ASCII码邮件解码还原为多媒体数据。

SMTP一般不使用中间邮件服务器

SMTP的工作流程(使用TCP的持续连接)

  1. 客户SMTP(运行在发送邮件服务器上)在25号端口建立一个到服务器SMTP的TCP连接
  2. 如果服务器没有开机,客户会在稍后继续尝试连接
  3. 连接建立后,服务器和客户执行某些应用层的握手。SMTP握手阶段
    • SMTP客户指示发送方的邮件地址(产生报文的一方)和接收方的邮件地址
    • SMTP客户和服务器彼此介绍之后,客户发送该报文
    • 如果该客户有另外的报文要发送到该服务器,就在该相同的TCP连接上重复这种处理,否则,它指示TCP关闭连接

与HTTP的对比

都用于从一台主机向另一台主机传送文件。

  • HTTP从Web服务器向Web客户传送文件
  • SMTP从一个邮件服务器向另一个邮件服务器传送文件

HTTP拉协议与SMTP推协议

  • HTTP拉协议:在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息。特别是TCP连接是由想接收文件的机器发起的。
  • SMTP推协议:发送邮件服务器把文件推向接收邮件服务器,特别是这个TCP连接是由要发送该文件的机器发起的

编码

  • SMTP要求每个报文使用7bitASCII码,如果某报文包含了非7bitASCII字符或二进制数据,则报文会按照7bitASCII码编码
  • HTTP数据不受限制

处理既包含文本又包含图形的文档

  • HTTP把每个对象封装到自己的HTTP响应报文中
  • SMTP把所有报文对象放在一个报文之中

邮件报文格式和MIME

报文中的行由RFC 5322定义。

首部行和该报文的体用空行进行分隔。

每个首部必须含有一个From:首部行和一个To:首部行,一个首部也许包含一个Subject:首部行以及其他可选的首部行

邮件访问协议

应用层学习笔记四.因特网中的电子邮件

POP3

第三版的邮局协议 Post Office Protocol-Verision 3

当用户代理(客户)打开了一个到邮件服务器端口110的TCP连接后,POP3开始工作。分三个阶段工作。

  1. 特许:用户代理发送(明文形式)用户名和口令以鉴别用户
    • user
    • pass
  2. 事务处理:用户代理取回报文,同时在这个阶段用户代理可以对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息
    • 用户代理程序一般有两种工作方式:下载并删除或者下载并保留
    • 使用下载并删除的话,用户代理发出list、retr和dele命令
  3. 更新:出现在客户发出来quit命令之后,目的是结束POP3会话,此时邮件服务器删除那些被标记为删除的报文。

在POP3的事务处理过程中,用户代理发出一些命令,服务器对每个命令做出回答。回答可能有两种。

  • +OK:被服务器用来指示前面的命令是正常的
  • -ERR:被服务器用来指示前面的命令出现了某些差错

POP3服务器不在会话过程中携带状态信息

IMAP

POP3是将邮件文件夹和报文放在本地主机上,这会给移动用户带来问题

POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法

IMAP服务器把每个报文与一个文件夹联系起来,当报文第一次到达服务器时,它与收件人的INBOX文件夹相关联。

IMAP协议提供的命令

  • 创建文件夹以及将邮件从一个文件夹移到另一个文件夹的命令
  • 在远程文件夹中查询邮件的命令,可以按照指定条件去查询匹配的邮件
  • 具有允许用户代理获取报文组件的命令

IMAP服务器维护了IMAP会话的用户状态信息

基于Web的电子邮件

用户代理是普通的浏览器,用户和他远程邮箱之间的通信通过HTTP进行