因特网中的电子邮件
因特网中的电子邮件系统主要由三部分组成
- 用户代理(user agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)
邮件服务器为电子邮件系统的核心,我们简要说明一下邮件服务器的使用,首先发送方用户代理在发送方邮件服务器中发送一个报文,然后发送方的邮件服务器中维护一个报文队列,讲发送方的报文发往接送方的邮件服务器,接收方就能够通过接收方的邮件服务器读取该报文
SMTP
SMTP: 简单邮件传输协议
SMTP简述:
1. SMTP依然是电子邮件系统的核心,但是他也有许多限制,SMTP报文要求体部分必须用7比特的ASCLL码来表示,在以前是行得通的,因为人们一般不会用邮件传输视频音频等文件,但是现在如果传输视频使用SMTP,就必须要把二进制转化为7比特的ASCLL码,还得在传输完之后解码为二进制文件
2. SMTP一般不使用中间代理器,文件传输是发送方邮件服务器直接到接收方邮件服务器
SMTP工作原理:
- 发送方邮件服务器上运行的SMTP首先在25号端口建立一个到接收方服务器SMTP上的TCP连接(如果接收方邮件服务器没开机,就稍后重试)
- 发送方在传输文件前会给出发送方的邮件地址和接收方的邮件地址,发送完之后发送方开始传输文件(TCP传输能够提供可靠数据传输,运输层中会详细给出实现)
我们分析一个SMTP客户©和SMTP服务器(S)之间报文脚本的例子,客户主机名为crepes.fr, 服务器主机名为hamburger.edu, 一旦建立了TCP连接,就开始以下过程
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, please to meet you
C: MALL FROM: <[email protected]>
S: 250 [email protected] ... Sender ok
C: RCPT TO: <[email protected]>
S: 250 [email protected] ... Recipient ok
C: DATA
S: 354 Enter mail, end with'.'on a line by itself
C: Do you like ketchup
C: how about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger,edu closing connetion
可以清楚的看到,建立TCP连接之后,发送方和接收方会互报家门,报完家门之后才开始文件传输,以’.'结尾
SMTP与HTTP的比较
- HTTP是一个拉协议,是主动去得到的,而SMTP则是一个推协议,是被动收到的
- SMTP要求使用7比特的ASCLL码而HTTP则不受限制
- HTTP把每一个对象分别封装在自己的HTTP响应报文中,而SMTP把所有对象封装在一个报文中
邮件访问协议
我们考虑一下邮件传输(SMTP),一般是由发送方服务器发送到接收方服务器,但是一个用户的PC不可能一直开机,因此用户PC机上一般使用的是用户代理程序,邮件服务器则统一在一个机构上,发送方通过SMPT发送邮件到发送方邮件服务器,而接收方却不能使用SMTP从接收方服务器提取邮件,因为SMTP是推协议,因此引出了三种邮件访问协议
- POP3
- IMAP
- HTTP
POP3
POP3工作原理:用户跟服务器建立一个TCP连接,此时POP3开始工作,POP3工作在3个阶段
- 特许阶段:用户发送用户名以及口令鉴别用户
- 事务处理阶段:用户取回报文,对报文做删除标记
- 更新阶段:出现在用户命令quit之后、服务器删除被标记的报文
POP3用户代理有两种模式
- 下载并删除(用户代理取完报文之后服务器删除报文)
- 下载并保留(用户代理取完报文之后服务器保留报文)
注意:POP3不维护用户会话过程中的状态信息
IMAP
IMAP的特点
-
POP3中的报文只能下载到PC机之后才能进行处理,而且POP3不能支持用户查看所有报文
-
因此引出了IMAP,IMAP主要实现了远程控制报文文件夹的功能,我们能够通过IAMP管理服务器中的报文,如新建一个文件夹等操作
-
因此IAMP需要维护用户会话过程中的状态信息如文件夹的名字以及哪些报文与哪些文件夹相关联
-
IMAP还能实现只读取报文的首部,因为我们可能不想要传输过大的报文如视频音频等文件
HTTP
现在人们更多的使用web浏览器收发电子邮件,浏览器就是用户代理,浏览器与邮件服务器通过HTTP协议传输报文,但是邮件服务器与邮件服务器之间使用的是SMTP协议传输报文
参考
《计算机网络自顶乡下方法》