计算机网络——应用层-邮件&SMTP

计算机网络系列博文——目录

因特网电子邮件系统(email)

组成部分

  • 用户代理 邮件客户端,允许用户阅读,回复,转发,保存,撰写报文(电子邮件)
  • 邮件服务器 每个邮件接收方都在某邮件服务器上有一个邮箱,邮箱存储发给该用户的Email,邮箱的消息队列存储等待发送的Email
  • 简单邮件传输协议,SMTP 邮件服务器之间传递消息所使用的协议
  • 发送方代理和发送方服务器间,可通过SMTP,HTTP协议推送报文;
  • 发送方服务器和接收方服务器间,通过邮件传输协议SMTP推送报文;
  • 接收方服务器和接收方代理间,可通过邮件访问协议,如POP3,IMAP,HTTP等拉取报文;

SMTP简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)

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

参见 [RFC 5321]

  • 古老(1982年有正式RFC文档,但事实上早在此前出现),限制报文的体只能用ASCII表示。传输现代多媒体附件时,要将多媒体数据编码为ASCII码,用SMTP传输完毕后再解码还原为多媒体数据。

  • SMTP一般不使用中间邮件服务器发送邮件,即使两服务器相距甚远也会尝试直接建立连接。

  • 依赖TCP运输层协议,端口:25,使用持久性连接

  • 要求消息必须由7位ASCII码构成

  • SMTP通信双方在TCP连接建立之后,还会进行应用层的握手,SMTP客户端会指示收发双方的邮件地址。

  • SMTP服务器利用CRLF.CRLF确定消息的结束。

  • 若SMTP发送方服务器有多个发往同一接收服务器的报文,它会在同一TCP连接内传输,但在每个报文发送前都进行应用层握手(声明邮件的收发双方)

命令/响应交互模式

  • 命令(command): ASCII文本
  • 响应(response): 状态代码和语句

拉协议(pull protocol)

用户依据协议从服务器上拉取信息,连接由文件接收方发起。如HTTP(的主要功能)

推协议(push protocol)

用户依据协议把文件推送到服务器上,连接由文件发送方发起。如SMTP

SMTP对比HTTP

同:都用于主机间的文件传输
异:

  1. HTTP主要是拉协议,SMTP主要是推协议。
  2. HTTP无编码限制,SMTP要求每个报文(包括报文体)使用7比特的ASCII码格式。
  3. 对于由多个对象组成的文档,HTTP将每个对象封装到独立的报文中,而SMTP把所有报文对象放在一个报文内。

Email消息格式

定义邮件消息本身的格式,包括首部行和报文体

参见 [RFC 5322]

头部行(header)

  • To
  • From
  • Subject 主题,可选的

email头部行不同于SMTP中的命令,尽管它们可能冗余了同样的信息。email from,to头部行是email报文的一部分,而SMTP的from,to命令是SMTP握手协议的一部分。

空行 分隔

消息体(body)
消息本身,只能是ASCII字符

Email消息格式:多媒体扩展 MIME

MIME:多媒体邮件扩展 RFC 2045, 2056
通过在邮件头部增加额外的行以声明MIME的内容类型
额外的头部行包括数据编码方法,多媒体类型,子类型,参数等。

邮件访问协议

用于接收方从接收方邮件服务器上拉取报文。

常用邮件访问协议:

  • Post Office Protocol-Version 3,POP3
  • Internet Mail Access Protocol,IMAP
  • HTTP

POP协议

极为简单的邮件访问协议。带有认证/授权和下载功能。

参见 [RFC 1939]

POP3的包括 特许,事务处理,更新三个阶段

POP3是无状态的

服务器响应

  • +OK [可选的数据]
  • -ERR

认证过程

用户代理以明文形式发送用户名和口令以鉴别用户

客户端命令

  • User:声明用户名
  • Pass: 声明密码

事务阶段

用户代理拉取报文
获取服务器上的报文信息
将报文标记为待删除

  • List:列出消息数量
  • Retr:用编号获取消息
  • Dele: 删除消息
  • Quit

更新阶段

发生在用户发出quit命令后,删除那些被用户标记为待删除的报文

IMAP协议

比POP3功能更为强大也更为复杂的邮件访问协议

所有消息统一保存在一个地方:服务器
允许用户利用文件夹组织消息
IMAP支持跨会话(Session)的用户状态

HTTP协议

现今基于Web的电子邮件都使用HTTP协议,此时用户代理就是普通的浏览器。
用户和邮件服务器间的报文传输都通过HTTP进行,而邮件服务器间的报文传输仍通过SMTP进行。

邮件发送过程

  1. 发送方用户代理用SMTP(或HTTP)将邮件推送至发送方邮件服务器;
  2. 发送方邮件服务器用SMTP将邮件推送至接收方邮件服务器;具体地,发送方邮件暂存与发送方邮件服务器中,发送方邮件服务器会周期性的尝试连接接收方服务器,若多次尝试失败,则返回给发送方一个错误信息
  3. 接收方邮件服务器分发邮件给接收方;具体地,接收方通过邮件访问协议从接收方邮件服务器上拉取邮件。

你可能感兴趣的:(计算机网络——应用层-邮件&SMTP)