普通邮件怎么发送 怎么样发邮件
我们经常使用电子邮件客户端,如Foxmail和Outlook来发送和接收电子邮件 。每个人都应该知道电子邮件协议的基本知识 。发送邮件是通过SMTP协议完成的,接收邮件是通过POP3协议完成的 。由于工作原因,作者对邮件协议的通信过程进行了完整的分析 。这里对邮件协议的通信过程进行梳理,巩固对通信协议的理解 。
协议是什么?我曾经做过一个基于UDP字节序列的应用:两个进程[一个用Java开发,一个用C++开发]之间,通过逐个解析UDP包中的字节数据来完成通信服务,最小的业务数据单位是比特 。
大概的过程是这样的:
循环读取UDP数据包
先取出第一个字节 。
读取该字节的前两位数据,代表某个业务类型 。
接下来的6位代表服务数据的总长度 。
【普通邮件怎么发送 怎么样发邮件】在第二个字节后循环数据,直到达到总长度 。
很多年过去了,那个应用的具体功能已经忘了,但是UDP字节数据的分析过程还是很清晰的 。这让我明白了什么是协议 。它实际上是一个基于简单处理规则的通信协议,可以看作是一个自定义的应用层协议 。
这个可以扩展到OSI七层模型中的其他协议,类似于这个简单的协议,但是通信规则更复杂!
SMTP协议基础SMTP被称为“简单邮件传输协议” 。这是来自百度百科的解释:
SMTP是一个相对简单的基于文本的协议 。在其上指定一个或多个消息的接收者(在大多数情况下,它被确认存在),然后消息文本将被传输 。您可以通过telnet程序简单地测试SMTP服务器 。对于SMTP TCP端口25,要决定给定域名的SMTP服务器,需要MX(邮件交换)DNS 。
让我们来看看SMTP的状态代码和命令集:
SMTP的状态代码和命令集
接下来,我们来看看Foxmail的邮件的包捕获分析 。在消息中,状态码是邮件服务器响应的内容,命令由客户端发起 。
证明客户端发起SMTP通信以连接到邮件服务器 。这是我截获的解析过的信息:
沟通过程
这里使用的关键命令是EHLO和认证登录,用于启动会话和认证 。客户端连接到服务器后的通信过程如下:
服务器回复220状态码以通知客户端它准备好了;
向客户端发送EHLO命令;
服务器回复250,表示欢迎;
服务器再回复一堆250(对应中间步骤);
客户端身份验证登录身份验证已启动;
服务器334等待客户端发送认证信息;
客户端发送认证信息的密文数据,进行两次密文通信;
回复235服务器认证成功,认证过程完成 。
准备认证成功后,客户端将发件箱和所有收件箱地址发送给服务器,服务器验证后回复250 OK 。
服务器验证回复
数据传输
数据传输结果
发送消息正文的过程:
客户端发送数据命令;
回复服务器354状态码,通知客户端可以发送邮件内容;
客户端开始发送消息正文;
服务器端回复250;
客户端发送退出命令以结束会话;
服务器回复221,告知客户端它正在关闭传输信道 。
摘要这就是上面邮件的完整过程,像客户端和服务器之间的调用空 。每一步都回答的有条不紊 。这么看,发现通信协议还挺有意思的 。这大概就是应用层协议的大致思路 。定义业务规则和状态代码,按照双方约定的流程进行通话 。
了解这个过程后,如果工作中需要沟通,可以参考网络协议的设计思路 。实现基于Socket的通信服务应该不复杂!
推荐阅读
- 女生不排卵怎么办 女性不排卵
- 腾讯大王卡怎么领取超级会员
- 荔枝怎么打包装
- ddp与sdp内存怎么区别
- 宽带闪红灯用不了网络怎么办
- 历史上栎阳公主怎么死的
- 青虾怎么去虾线
- 饥荒冬季之王怎么通关
- 画眉时怎么处理眉头的颜色
- 腾讯wifi管家怎么领皮肤 你可以这样做