Email应用的构成
构成组件
- 邮件客户端
能够读写消息,与服务器交互;有Outlook, Foxmail等。
- 邮件服务器
邮箱:存储发给该用户的Email
消息队列:存储等待发送的Email
- SMTP协议
邮件服务器之间传递消息所使用的协议。
客户端:发送消息的服务器。
服务器:接收消息的服务器。
为什么采用邮件服务器?
若主机之间直接传递消息,则当接收方不在线的时候收不到别人的消息;对于发送方,当接收方不在线则发送不成功,需要不停的等待重发.邮件服务器的存储功能可以免去这些麻烦.
SMTP协议
使用TCP协议进行Email消息的可靠传输。
端口25。
传输过程三个阶段:
- 握手
- 消息的传输
- 关闭
命令/响应交互模式。
- 命令:ASCII文本
- 响应:状态代码和语句
Email消息只能包含7位ASCII码(过于古老)。
现能用添加附件的方式传送各种格式的文件及多媒体内容。
SMTP交互示例:
类比人的交流:确认身份,打招呼,告知传输,开始传输,结束传输,退出;
220服务器返回代码;
HELO(打招呼), MAIL FROM(发送邮箱), RCPT TO(接收邮箱), DATA(邮件内容), QUIT(结束);
服务器利用CRLF.CRLF确定消息的结束;
使用持久性连接。
SMTP与HTTP对比
- HTTP:拉式(pull).从客户端将对象"拉"回;SMTP:推式(push).从发送方邮件客户端将邮件"推"去接收方。
- HTTP:每个对象封装在独立的响应消息中;SMTP:多个对象在由多个部分构成的消息中发送。
- 都使用命令/响应交互模式。
- 命令和状态代码都是ASCII码。
Email消息格式
头部行:
- To
- From
- Subject
(与SMTP命令不同)
消息体:
- 消息本身
- 只能是ASCII字符
多媒体扩展:
现能用添加附件的方式传送多媒体内容。
通过在邮件头部增加额外的行以声明MIME(多媒体邮件扩展)的内容类型。
邮件访问协议
从服务器获取邮件
POP:认证/授权和下载。
IMAP:更多功能,更加复杂,能够操纵服务器上存储的消息。
HTTP:163,QQMail等。
POP协议
- 下载并删除模式:用户如果换了客户端软件,无法重读该邮件
- 下载并保持模式:不同客户端都可以保留消息的拷贝(大量邮件保存在邮箱/服务器中)
- POP3是无状态的
IMAP协议
- 所有消息统一保存在一个地方:服务器,是有状态的。
- 允许用户利用文件夹组织消息
- IMAP支持跨会话的用户状态