文章目录
- 简单邮件传送协议SMTP
- 邮件访问协议
- POP3
- IMAP
- HTTP
- 参考资料
电子邮件为异步通信媒介
因特网电子邮件系统
电子邮件系统的三个构件:用户代理、邮件服务器、邮件发送和读取协议
用户代理
User Agent 即UA
电子邮件客户端软件,用户与电子邮件系统的接口,如Apple Mail、Outlook
功能:实现邮件的撰写、显示、处理、通信
邮件服务器
Mail Server,邮件传输代理
功能:发送和接收邮件,向发信人报告邮件传送的情况,客户服务器模式
邮件发送和读取协议
简单邮件发送协议 SMTP:在UA向邮件服务器、邮件服务器之间发送邮件
邮局协议POP3:UA从邮件服务器读取邮件
注意
- 邮件服务器在电子邮件系统中是同时充当了客户和服务器两个角色,在UA向Mail Server发送邮件过程中Mail Server充当服务器,在该Mail Server发送邮件时充当客户端,在该Mail Server接收邮件时充当服务器。每台邮件服务器上既运行SMTP的客户端也运行SMTP的服务器端。
- SMTP和POP3(或IMAP)协议都使用TCP连接实现邮件可靠传输
- 邮件不会在互联网中的某个中间邮件服务器落地
举个例子
发送方Alice发电子邮件给接收方Bob
Alice撰写邮件,其UA向对应的Mail Server发送邮件,邮件被放在该Mail Server的外出报文队列中,Alice的Mail Server将邮件传输到Bob的Mail Server,邮件被分发到Bob的邮箱,当Bob要阅读邮件时,Bob的UA在其Mail Server的邮箱中取得该邮件。
术语说明
报文队列(message queue):存放从该Mail Server发送的邮件,若邮件在发送方Mail Server到接收方的Mail Server之间的传送失败,发送方的Mail Server将尝试重新发送。若一段时间后仍不能发送成功,则发送方Mail Server将删除该报文并将以电子邮件的形式通知发送方
邮箱(mailbox):每个接收方(如Bob)在对应的邮件服务器上有一个邮箱(mailbox),mailbox管理和维护着发送给接收方的报文
电子邮件
组成:由信封 (envelope) 和内容 (content) 两部分组成
envelope是电子邮件传输协议传送邮件的依据
地址格式:收件人邮箱名@邮箱所在主机的域名
举个例子
简单邮件传送协议SMTP
基本介绍
SMTP协议规定了在两个相互通信的 SMTP 进程之间建立TCP连接交换信息的方法,使用客户端服务器方式
通信三阶段
分析报文通过SMTP协议从发送方Mail Server到接收方Mail Server的传送过程
- 连接建立:包括建立TCP连接和SMTP连接的握手阶段
- 邮件传送:传送内容包括信封、首部、空行和邮件主体
- 连接释放:客户SMTP传送完所有报文后,释放TCP连接(这里的TCP连接是持久的)
建立TCP连接
三次握手
SMTP握手阶段
客户SMTP使用HELO
命令,指示发送方主机名
服务器SMTP回答:“250 OK” ,表示已准备好接收。
邮件传送阶段
报文结束标志为回车换行.回车换行
连接释放
注意
SMTP用的是持续TCP连接,从同一个发送Mail Server到同一个接收Mail Server的报文可以通过同一个TCP连接发送。报文以MAIL FROM: xx
作为开始标志
尝试SMTP通信
使用telnet
命令
多媒体数据传输
更改电子邮件的内容部分
在首部中说明MIME-Version,数据编码格式,多媒体文件格式等信息
举个具体的例子
SMTP与HTTP对比
相同点:
- 作用:用于从一台主机向另一台主机传送文件。HTTP从Web服务器向Web客户传送文件;SMTP从一个邮件服务器向另一个邮件服务器传送文件。
- 文件传送过程中二者使用的都是持续的TCP连接进行可靠数据传输
- 二者都是应用层协议
不同点:
- HTTP是一个拉协议(pull protocol),用户使用使用客户端从服务器拉取数据,TCP连接是由想接收文件的机器发起的。SMTP是一个推协议(push protocol),发送邮件服务器把文件推向接收邮件服务器,TCP连接是由要发送该文件的机器发起的。
- SMTP协议要求报文数据采用7比特ASCII码格式。
- 对于包含多种数据类型的文档的处理。HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。
关于客户Mail Server和服务器Mail Server的讨论
若接收方的Mail Server和UA都位于其PC上,则其PC必须不间断地运行着并一直保持在线,这并不现实。因此通常情况下,Mail Server是共享的且由用户的ISP进行维护,本地PC上运行UA
发送方Mail Server的引入解决了发送方UA无法到达一个不可达的目的地Mail Server的问题,即发送方的Mail Server可以重复尝试向接收方Mail Server发送报文直到接收方Mail Server变得可运行
邮件访问协议
引入原因
接收方从Mail Server上的邮箱取得邮件是一个拉操作,而SMTP是一个推协议,这是不能完成的。
需要引入一个能完成拉操作的协议,即邮件访问协议
邮件访问常用协议
- 第三版的邮局协议(PostOffice Protocol—Version 3 , POP3)
- 因特网邮件访问协议(Internet Mail Access Protocol,IMAP)
- HTTP协议
POP3
使用客户服务器方式,基于TCP实现通信
用户代理(客户)打开一个到邮件服务器(服务器)端口 110上的TCP连接
工作的三个阶段
- 特许(authorization):UA发送(以明文形式)用户名和口令以鉴别用户。命令包括
user < user name >
和pass < password >
- 事务处理:UA取回报文、对指定报文做删除标记、获取邮件的统计信息。命令包括
list
、retr
和dele
- 更新:当用户发出quit命令结束POP3会话之后,Mail Server将删除被标记为删除的报文
IMAP
使用客户服务器方式,基于TCP实现通信,端口143,这是一个联机协议
提出原因
解决POP3不能在远程服务器上建立层次文件夹等问题
特点
- IMAP服务器把每个报文与一个文件夹联系起来,能够实现用户在远程Mail Server上创建文件夹、移动文件、阅读查询删除文件
- 允许UA只获取报文某些部分。举个例子,一个用户代理可以只读取一个报文的报文首部
- 要想查阅邮件,必须先联网
HTTP
使用Web浏览器作为UA,进行邮件收取和邮件发送
于是电子邮件报文可以使用HTTP协议而非STMP协议从发送方UA发送到发送方Mail Server,使用HTTP协议而非POP3或者IMAP协议从接收方Mail Server拉取到接收方UA
使用 HTTP POST方法提交要发送的邮件
使用 HTTP GET 方法读取邮件
传统UA和基于Web的UA比较
传统UA必须在计算机中安装用户代理软件且收发邮件不方便
基于Web的UA不需要在计算机中再安装用户代理软件,只要计算机能联网就能非常方便地收发电子邮件
参考资料
- James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版