SMTP协议详解
2023-02-18 16:27:08 时间
电子邮件有三个主要的组成部分:用户代理,邮件服务器和简单的邮件传输协议(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则把所有的报文对象放在一个报文中
相关文章
- Crack App | 某合伙人登录参数 apisign 逻辑分析
- Crack App | 某都市魔幻 FM 请求参数 sign 的加密分析
- Crack App | 某赢+ 二手车 App 登录参数加密逻辑分析
- RocketMQ: 技术架构与启动流程
- 目前社区关于ServiceMesh的主要方向
- k8s的架构是怎么变成现在这个样子
- Envoy的lib库拓扑关系
- 转发“Istio共享代理新模式Ambient Mesh”
- 如何设计属于你自己的秒杀系统?
- 如何把Java代码玩出花?JVM Sandbox入门教程与原理浅谈
- 删错了文件怎么办,文件快速恢复
- ChatGPT 浏览器插件实现思路解析
- 存储系统中的算法:LSM 树设计原理
- 说透游戏中常用的两种随机算法
- 我用消息队列做了一款联机小游戏
- 用算法打败算法
- CRUD 一年多,我的破局思路
- 如何学习开源项目,我又总结了套路
- Union Find 并查集算法原理及应用
- Visual Studio 2022软件下载和安装教程