计算机网络中smtp协议指的是(常见的计算机网络协议有哪些)

一些SMTP协议的个人理解和总结。

大家好,又见面了,我是你们的朋友全栈君。

SMTP是什么

电子邮件是一种异步通信媒介,即发送邮件时不必与他人的计划进行协调。
因特网电子邮件系统总体有三个部分组成:用户代理,邮件服务器和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)。其中,用户代理允许用户阅读、回复、转发、保存和撰写报文,常见的电子邮件用户代理有微软Outlook和Apple Mail。邮件服务器形成了电子邮件体系结构的核心,邮件服务器管理用户的邮箱,并且运行SMTP的客户端和服务器端。

那么,简单邮件传输协议(SMTP)是什么?
协议定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送或报文接收或其他事件采取的动作。SMTP是将邮件从源地址向目的地址发送方式的规则,并控制端系统发送的方式。

不难理解,SMTP是因特网电子邮件的核心。SMTP用于从发送方的邮件服务器到接收方的邮件服务器。值得一提的是,SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是这样。
因特网电子邮件系统的总体描述:
在这里插入图片描述

邮件发送过程

一个典型的邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。

简述一下邮件发送的整个过程。
在这里插入图片描述
1、发送方Alice调用用户代理并提供接收方Bob的邮箱地址,在用户代理上撰写待发送的报文,接着指示用户代理发送报文。
2、用户代理将Alice撰写的报文发送到Alice的邮件服务器,报文到达邮件服务器后将被分发到报文队列中。
3、运行在Alice的邮件服务器的SMTP客户端发现保温队列中的这个报文后将会创建一个到运行在Bob邮件服务器的SMTP服务器的TCP连接。
4、经过SMTP握手后,SMTP客户端通过TCP连接把报文发送出去。
5、在Bob的邮件服务器上,SMTP服务器接收到报文后,邮件服务器将报文放入Bob的邮箱里。
6、Bob有空时看到邮箱消息便调用用户代理查阅报文。
(初次接触有些难以理解,结合自己发送邮件的过程会更好一些理解)

在此过程中,SMTP使用一些命令和应答对报文进行传输。
在这里插入图片描述

常见的SMTP命令:

指令 说明
HELO 与服务器确认,通知其客户端使用的机器名称,一般邮件服务器不做限定
AUTH 使用AUTH LOGIN与服务器进行登录验证
MAIL FROM 发件人信息,填写与认证信息不同往往被定位为垃圾邮件或恶意邮件
RCPT TO 收信人地址
DATA 输入邮件基本信息
FROM 邮件基本信息:发信人显示信息(此处可以伪造身份,但是非常容易被识别)
TO 邮件基本信息:服务器收件人显示信息
SUBJECT 邮件基本信息:邮件标题,不填写也往往容易被定位为垃圾邮件
QUIT 断开链接

常见SMTP应答返回码:

返回码 说明
220 服务就绪
250 请求动作成功完成
235 认证通过
221 处理中
354 发送开始,往往与data指令结合
500 指令错误
550 命令无法执行

报文的格式
报文有两部分,贴切点形容就是信封和内容。
在这里插入图片描述
所谓的信封,其实是SMTP命令。
内容,邮件报文对象的内容,分为首部和主体两部分。
首部理解为信件的描述信息,主体理解为发件人向收件人传达的主要信息。

一旦建立TCP连接,就开始如下过程:(回顾上述传输过程中的3)
C:或S:后的ASCII码都是客户或服务器主机传递到TCP套接字的行的内容。

S:	220 hamburger. edu 
C: 	HELO crepes. fr 
S:	250Hello crepes. fr, pleased to meet you 
C: 	MAIL FROM:<alicedcrepes. fr>
S:	250 alice@ crepes. fr... Sender ok 
C: 	RCPT TO:<bob@ hamburger. edu>
S:	250 bobehamburger. edu... Recipient ok 
C: 	DATA S:354 Enter mail, end with "."on a line by itself 
C: 	Do you like ketchup?
C: 	How about pickles?
C:	.
S:	250 Message accepted for delivery 
C: 	QUIT 
S:	221 hamburger. edu closing connection

解说

SMTP握手

 1. 从客户端使用熟知端口号25建立与服务器的TCP连接,SMTP服务器向该客户送回应答码220,并且还为客户端提供了服务器的域名
 2. 客户端收到应答码后,发送HELO命令,启动客户端和服务器之间的SMTP会话。该客户端发送的HELO用来向服务器提供客户端的标识信息
 3. 服务器端回应应答码250,通知客户端:请求建立邮件服务会话已经实现

邮件报文撰写并发送

 1. 客户用“MAIL FROM”向服务器报告发信人的邮箱与域名
 2. 服务器向客户回应应答码“250”,代表请求命令完成
 3. 客户用“RCPT TO”命令向服务器报告收信人的邮箱与域名
 4. 服务器向客户回应应答码“250”,代表请求命令完成
 5. 客户用“DTAT”命令对报文的传送进行初始化
 6. 服务器回应“354”,表示可以进行邮件输入了
 7. 客户用连续的行向服务器传送报文的内容,每行以两字符的行结束标识(CR与LF)终止。报文以只有一个“.”的行结束
 8. 服务器向客户回应应答码“250”,代表请求命令完成

终止SMTP会话

 1.客户端发送“QUIT”命令
 2.服务器收到命令后,回应应答码“221”,并结束会话

邮件访问协议

这时,信件已在接收方邮件服务器上的邮箱了,用户调用用户代理查看邮件报文时要用到邮件访问协议对邮件进行查阅。
流行的邮件访问协议有:第三版的邮局协议(Post Office Protocol –version 3 , POP3),因特网邮件访问协议(Internet Mail Access Protocol)和HTTP。
简述一下POP3。
POP3按照三个阶段进行工作:特许、事务处理以及更新。特许就是用户发送用户名和口令用以鉴别用户;事务处理就是取回报文,同时允许用户代理对报文做删除标记,取消报文删除标记以及获取邮件统计信息。更新就是用户发出QUIT命令结束POP3会话后邮件服务器删除被标记为删除的报文。
值得一提的是,使用POP3的用户代理可以被配置为“下载并删除”和“下载并保留”两种方式。顾名思义,“下载并删除”就是调用用户代理下载并查看邮件之后将该邮件报文删除;而“下载并保留”则相反,下载并查看该邮件报文将继续保留在邮件服务器,可用不同的终端系统进行重复下载并查看该邮件报文。

POP3与IMAP最大的不同是,POP3只能通过下载邮件报文后在端系统本地对邮件报文进行移动或删除;而IMAP则提供了通过远程服务器上的文件夹对邮件报文进行移动并查看的指令。
HTTP邮件访问协议也不难理解,最大的特点就是它的用户代理就是普通的Web浏览器,用户代理和服务器之间的通信是通过HTTP进行的。

实验

1、使用Telnet与SMTP服务器进行一次直接对话
使用网易邮箱向QQ邮箱发送一封邮件,邮件内容为:
Hi,ROse.
How are you recently?
在这里插入图片描述
结束之后,QQ邮箱收到一封邮件。不信的话,你试试~

2、使用Telnet登录到POP3服务器110端口,发出指令访问邮件
使用QQ邮箱对网易邮箱发送一封邮件,接着使用Telnet登录到POP3服务器查看邮件内容。
在这里插入图片描述
在这里插入图片描述
对邮件内容的base64编码进行解码。
在这里插入图片描述
tips
1、获取base64编码

echo -n “待编码内容” |base64

2、获取base64编码的解码

echo “待解码的base64编码” |base64 -d

参考文章:
SMTP协议介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128193.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • Django流程_菜鸟裹裹收费标准

    Django流程_菜鸟裹裹收费标准Django教程一、Django安装1、Django版本对应的Python版本:2、Django下载地址:3、安装(无需下载)4、验证安装cmd进入python获取版本信息一、Django安装1、Django版本对应的Python版本:2、Django下载地址:https://www.djangoproject.com/download/3、安装(无需下载)打开cm…

  • 因果图与判定表法_因果图如何转换为判断表

    因果图与判定表法_因果图如何转换为判断表1、什么是因果图及判定表法?因果图是用图解的方法表示输入的各种组合关系,依据因果图写出判定表,从而设计相应的测试用例。它适合于检查程序输入条件的各种组合情况。例约束关系、组合关系。2、因果图之4种因果关系(注:0表示某状态不出现,1表示某状态出现)恒等:若c1是1,则e1也为1;否则e1为0非:若c1是1,则e1也为0;否则e1为1或:若…

  • 抽出SqlHelper

    抽出SqlHelper

    2021年12月14日
  • mac OCR截图文字识别工具—iText for mac[通俗易懂]

    mac OCR截图文字识别工具—iText for mac[通俗易懂]iTextformac中文版是Macos系统上一款从图片中识别文字的OCR(光学字符识别)工具。通过截图、拖拽图片,即可以从扫描版的PDF等任意图片中识字,并且可以很好的解决摘抄和批注需求。帮助用户识别图片中文字,节约时间,提高效率。iTextformac下载安装教程…

  • Jlink或者stlink用于SWD接口下载程序

    Jlink或者stlink用于SWD接口下载程序最近要使用stm32f103c8t6最小系统板,直接ISP串口下载程序太麻烦,就想着使用swd接口来调试。结果:通过SWD接口下载程序成功,但调试失败,还不知原因,会的的人麻烦交流一下。SWD接口:3.3VDIO(数据)CLK(时钟)GND1.首先声明jlink和stlink都有jtag和swd调试功能。jlink接口如下:如图,我使用的就是VCC…

  • OSChina 技术周刊第五期 —— 2014 非常好用的开源 Android 测试工具

    OSChina 技术周刊第五期 —— 2014 非常好用的开源 Android 测试工具

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号