计网基础-应用层之Email应用
Email应用的构成组件
1、邮件客户端user agent
读写Email消息
与服务器交互,收、发Email消息
Outlook、foxmail、thunderbird、web客户端浏览器
2、邮件服务器
Email服务的核心
用户申请账号,为每一个用户分配一个邮箱(存储发给该用户的Email)和消息队列(存储等待发送的Email)
3、SMTP协议simple mail transfer protocol
Email服务的核心协议:邮件服务器之间传递消息所使用的协议
客户端:发送消息的服务器
服务器:接收消息的服务器
SMPT协议:RFC 2821
- 使用TCP进行Email消息的可靠传输
- 端口为25
- 传输过程经历三个阶段:握手、消息的传输、关闭
- 命令/响应交互模式
命令command:ASCII美国信息交换标准代码文本
响应response:状态代码和语句
注意,HTTP使用的是请求/响应的模式
注意,Email消息只能包含7位ASCII码,因为比较古老的时候,并不能传输多媒体,只有文本内容
当下,常常附带附件文件。
为什么不直接PC之间连接发送邮件?而需要邮件服务器?
1、不能长时间在线,当我们没有接入Internet时,别人无法发邮件到本地
2、影响用户体验,加入要给别人发邮件,对方在线,需要始终等待
因此,通过邮件服务器,
1、一直保持打开状态,能确保任何适合别人都可以给你发邮件
2、你的邮件由邮件给你代发,能确保准确无误地交付到对方的邮箱中
SMTP交互过程:握手、消息的传输、关闭
s:接收方 c:发送方
动手尝试smtp交互:
使用telnet工具,与smtp服务器进行交互
c:telnet 13568998413@163.com 25
s:220
c:输入命令(helo、mail from、rcpt to、data、quit)
特点:
1、使用持久性连接
2、要求消息必须以7位ASCII码构成
3、SMTP服务器利用CRLF.CRLF确定消息的结束
与http对比
拉式:浏览器到web服务器拉取内容
推式:由发送方主动的跟接收方进行连接,将消息进行推送
Email消息格式
根据RFC 822的文本消息格式标准
加入要添加附件文件呢?
MIME:多媒体邮件扩展
根据RFC 2045,2056
- 通过在邮件头部增加额外的行,以声明mime的内容类型
base64数据编码方法,
接收方同样使用base64方法解码
邮件访问协议
从邮件服务器获取邮件
smtp协议是邮件服务器之间通信的协议
user agent和服务器之间也需要协议——邮件访问协议
(1)POP:post office protocol
认证/授权(客户端<-->服务器)和下载
特点:
“下载并删除”模式:早些时候服务器不可能让你存放太多邮件,很多需要阅读后下载在本地客户端再dele删除,但是换了客户端软件后,就无法通过服务器重读邮件
“下载并保持”模式:不同客户端可以保留消息的拷贝
另外,POP3是无状态协议
(2)IMAP:Internet mail access protocol
比较新的协议,更多功能,也更复杂,能够操作存储在服务器上的消息
特点:
所有消息统一保存在服务器
允许用户利用文件夹组织消息
IMAP支持跨会话session的用户状态
即支持所有客户端查看的一致的邮件文件夹和邮件
(3)HTTP:163,QQ Mail