邮件传输的过程都看不懂。那我走(狗头)

简介: 给学习网络的新手一个我自己总结的建议: 我觉得学网络先要先把最基础最常用的协议的原理搞的明明白白,然后再学习难的协议或者是拓展的协议就好理解容易上手了。

给学习网络的新手一个我自己总结的建议:
我觉得学网络先要先把最基础最常用的协议的原理搞的明明白白,然后再学习难的协议或者是拓展的协议就好理解容易上手了。

image.png

邮件的传输流程

先将邮箱xxx.@qq.com用DNS解析成IP地址然后在一步步的传输。

image.pngimage.png


Webmail

电子邮件从 A 发送到客户服务器是使用 HTTP 协议。两个邮件服务器之间的传送使用 SMTP。邮件从服务端邮件服务器传送到 B 是使用 HTTP 协议。

image.png

使用邮件客户端收发邮件

电子邮件从 A 发送到客户服务器是使用 SMTP 协议。两个邮件服务器之间的传送使用 SMTP。B从服务端邮件服务器获取邮件使用POP3或IMAP协议。常见的邮件客户端有Foxmail,Outlook Express等.

image.png

用QQ邮箱给网易邮箱发邮件的传输过程

image.png

邮件服务器各组件关系图

  • MUA(Mail User Agent):用户代理,提供邮件编辑,查看功能;
  • MTA(Mail Transfer Agent): 邮件传输代理,负责传送和接收邮件;
  • MDA(Mail Dilivery Agent): 邮件投递代理,负责将MTA接收到的邮件传递到用户邮箱或转递其他MTA,兼具有过滤功能。

image.png

SMTP简单邮件传输协议

  • SMTP 使用客户/服务器方式,负责发送邮件的 SMTP 进程是 SMTP 客户,而负责接收邮件的 SMTP进程是 SMTP 服务器,当两个进程建立了TCP连接后,电子邮件就能通过该标准准确无误地传输;
  • SMTP协议是基于文本的协议,通过SMTP发送的电子邮件都是普通文本格式的,不支持声音、图像等非文本信息,但可以通过MIME标准将此类信息进行编码后再通过SMTP传输;
  • SMTP 规定了 14 条命令和 21 种应答信息。每条命令用 4 个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始;

SMTP命令

命令由客户端发送请求给服务端

image.png

SMTP应答码

每一条SMTP命令都会返回一条SMTP响应,由服务端返回给客户端

image.png

SMTP传输流程图

  1. 客户端主动连接到服务器的25端口,建立TCP连image.png。服务器会发送一个应答码为220的问候报文,表示已经准备就绪。
  2. 客户端向服务器发送HELO命令以标识发送方身份,若服务器接受请求,则返回一个代码为250的应答,表示可以开始报文传输。
  3. 客户端发送MAIL命令以标识邮件发送方身份,通过FROM参数指定发送方的邮件地址。若服务器准备接收,则返回250的OK应答。
  4. 客户端发送RCPT命令标识邮件的接收方,通过TO参数指定接收方的电子邮件地址,若有多个接收人,可发送多个RCPT命令。如果服务器能够识别接收人,则会返回代码为250的OK应答,否则返回代码为550的失败应答。
  5. 客户端与服务器之间的协商结束,客户端发送DATA命令指示将要发送邮件数据,服务器端返回应答码为354的响应进行确认,表示可以开始邮件输入。
  6. 客户端将邮件内容按行发送,邮件的末尾由客户端指定,是只有一个小数点(邮件数据结束指示器)的一行,服务器检测到邮件数据结束指示器后,返回代码为250的OK应答。
  7. 客户端发送QUIT命令终止连接。

注: 由于SMTP不需要身份验证,人们连接到邮件服务器就能随便给一个知道的邮箱地址发送邮件,造成垃圾邮件泛滥。后来就有了ESMTP  (Extended SMTP)。他和 SMTP 服务的区别仅仅是,使用 ESMTP  发信时,需要经过身份验证才能发送邮件。即在HELO命令后多加一条auth login登陆命令,登陆成功后才能使用后续的发送邮件命令。

电子邮件的信息格式

每一封电子邮件的结构格式为:

  • 报文头(Header)
  • 分隔邮件头与邮件体的空行
  • 报文体(Body)

报文头是一些控制信息,它是由一系列的头字段组成,每个头字段的结构格式是:

字段名(field-name):字段体(field-body)

包括收方和发方的地址,发送时间等,常用的头字段有:

  • Date域:记录邮件发送日期(本地主机的日期和时间);
  • Subject域:邮件主题;
  • From域:发信人邮件地址;
  • To域:收信人邮件地址;
    ……
    报文体是用户邮件内容,由用户自由撰写。但SMTP只支持传输7位ASCII码的英文字符,有很大局限性,后来邮件系统就扩展了MIME。

MIME

MIME扩展了基本的面向文本的Internet邮件系统,在不改动现有邮件协议的情况下,实现了用标准的文本格式邮件传输非文本(二进制)数据的功能。MIME的原理是将二进制数据转化为文本格式,然后再进行传输。

image.pngMIME扩包括三部分内容:新增了5个首部字段名,这些字段提供了邮件的主题信息;新增了许多邮件内容,对多媒体的表示方法进行标准化;定义了编码方法,可对任何内容进行准换。

邮件报文示例

image.png

POP3协议

POP是一种邮件接收协议,其作用是:当用户计算机与支持POP协议的电子邮件服务器连接时,把存储在该服务器的电子邮箱中的邮件准确无误地下载到用户的计算机中。POP3属于离线式协议,即不能对邮件进行在线操作,必须下载到本地才能进行处理。POP协议已发展到第三版,称作POP3。


POP3与SMTP一样都是请求响应协议,命令与响应也都是用NVT ASCII格式的文本表示。POP3响应由一个状态码和其后的附加信息组成,只有两种状态码:“+OK”(正确)和“-ERR”(失败)。

image.png

POP3命令

image.png

POP3连接

image.png

  • 当客户端连接到服务器的110端口,并建立起TCP连接后,即进入身份验证状态,需要使用USER和PASS命令将用户名和密码提供给服务器。
  • 通过身份验证之后,即转入事务处理状态,这时客户端可以发送POP3命令进行相应操作,服务器会接收命令并做出响应。
  • 操作完成之后,客户端发出QUIT命令,则进入更新状态,服务器确认用户的操作,更新邮件存储区,同时关闭客户端与服务器之间的连接。

POP3客户和服务器会话例

S:<在TCP端口110等待连接> 
C:<打开TCP连接>  - telnet <服务器域名> 110
S:+OK  oar pop3 server ready 
C:USER  your_userid 
S:+OK  your_userid is welcome here 
C:PASS  your_password 
S:+OK your_userid’s  maildrop has 2 messages   (320 octets) 
S:. 
C:STAT  
S:+OK  <邮件数量> <总大小>
C:RETR  2 
S:+OK  200 octets 
S:报文2的内容 
S:. 
C:DELE  2 
S:+OK  message 2 deleted 
…………


相关文章
|
5月前
|
网络协议 Linux 应用服务中间件
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
在发送数据包的过程中,不同层次的网络协议扮演着不同的角色。数据包在经过多层封装后,通过网络设备和路由器进行转发,并最终到达目标设备。在每个层次中,都会进行相应的处理和解封装,以确保数据包能够正确传输和被接收端处理。整个过程涉及到了物理层、数据链路层、网络层、传输层和应用层等多个层次的协议和设备。尽管在简化的示例中,发送数据包的过程相对简单,但实际情况中会更加复杂,需要通过路由表选择最佳路径来保证数据包的快速、高效传输。整个过程展示了网络分层结构的重要性和协同工作的复杂性。
123 0
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
|
8月前
图片太大传输和保存不方便?一招解决你的烦恼!
在日常工作中,“拍照”是我们必不可不少的一件事情。写简报、总结都离不开图片。
89 0
doubango编码及发送流程的疑惑
doubango编码及发送流程的疑惑
49 0
|
存储 关系型数据库 MySQL
定时邮件服务(发送考研词汇)
定时邮件服务(发送考研词汇)
66 0
定时邮件服务(发送考研词汇)
|
Java 数据安全/隐私保护 Spring
如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
229 0
如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
|
安全 算法 Java
[超长文,谨入]一文解决面试、工作遇到的安全性问题
安全问题其实是很多程序员容易忽略的问题但需要我们重视起来,提高应用程序的安全性。常出现的安全问题包括,程序接受数据可能来源于未经验证的用户,网络连接和其他不受信任的来源,如果未对程序接受数据进行校验,则可能会引发安全问题等等
277 0
[超长文,谨入]一文解决面试、工作遇到的安全性问题
|
Linux iOS开发 MacOS
命令行搞一切之发送有附件的邮件
今天我们看到了一种从 Linux 命令行发送电子邮件和附件的方法。还有一些其他程序,如“ mutt ”和“ Sendmail ”,它们与“ mail ”类似,可以用于相同的目的。
437 0
|
大数据
使用文件传输时要避免的误区!
无论是通过电子邮件,文件传输协议(FTP)还是通过Web,文件传输都是每个业务的一部分。每家公司都在寻找强大的文件传输服务,允许他们安全地发送和接收大文件。选择与您的业务相关的正确文件传输服务可能是一项挑战。
1263 0
|
Web App开发 数据安全/隐私保护 Windows