SMTP 协议详解
电子邮件有三个主要的组成部分:用户代理,邮件服务器和简单的邮件传输协议(SMTP),我们几天主要来说一下在应用层中的 SMTP 协议,它使用 TCP 可靠数据传输服务,像大多数应用层协议一样,SMTP 也有俩个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端,每台邮件服务器既运行 SMTP 服务器端也运行 SMTP 客户端。
SMTP 发送邮件之前需要将二进制多媒体编码为 ASCII 码,并且在使用 SMTP 传输后要求将相应的 ASCII 码邮件解码还原为多媒体数据,我们知道的是 HTTP 传输前不需要将多媒体数据编码为 ASCII 码。
为了通俗的理解 SMTP 原理,我们来看下面这个案例:
ymm 调用他的邮件代理程序并提供 jay 的邮件地址,写好以后,指示用户代理发送该报文。
ymm 的用户代理把报文发给他的邮件服务器,在那里报文被放入报文队列中
运行在 ymm 的邮件服务器上的 SMTP 客户端发现了报文队列中的这个报文,它就创建一个到运行在 jay 的邮件服务器上的 SMTP 服务器的 TCP 连接
在经过一些初始 SMTP 握手后,SMTP 客户通过该 TCP 连接发送 ymm 的报文
在 jay 的邮件服务器上,SMTP 的服务器端接收报文,jay 的邮件服务器然后将该报文放入 jay 的邮箱中
在 jay 方便的时候,调用用户代理阅读该报文
STMP 一般不使用中间邮件服务器发送邮件,即便这俩个服务器距离很远也是这样的。
对比 http 协议
http 更像一个拉协议,服务商在 Web 上装载信息,用户使用 HTTP 从该服务器拉取这些信息,
SMTP 更像一个推协议,发送邮件服务器把文件推向接收邮件服务器
SMTP 要求每个报文采用 7bitASCII 字符或二进制数据,则该报文必须按照 7bitASCII 码进行编码,Http 则不受这种限制
当遇到出来一个既包含文本又包含图形的文档,Http 把每个对象都封装到它自己的 http 响应报文中,二 SMTP 则把所有的报文对象放在一个报文中
版权声明: 本文为 InfoQ 作者【秋名山码民】的原创文章。
原文链接:【http://xie.infoq.cn/article/4f40fe6de2aabcb7d40ab4b45】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论