[原]计算机网络--浅谈电子邮件的工作原理

董恒毅 18/06/08 14:34:36

序言

对于大多数人来说,我想,接触的第一个电子邮箱应该都是QQ邮箱。我也不例外,从第一次接触QQ邮箱开始,就对这种有别于传统邮箱的软件产生了一些兴趣,却由于种种原因一直都没有去探究它。前段时间刚好在找实习,期间凸显了电子邮箱的重要性,刚好最近也有了一些空闲的时间,遂在了解了电子邮件的基本工作原理之后,将其整理为这篇博客。


使用电子邮件的好处

很多人还不清楚使用电子邮件的好处,我贴一下。内容节选自:为什么要使用Email及如何用好Email

  1. 写Email跟用笔写信是一样的,你可以经过深思熟虑,将语言精心组织之后再写下来,也就是说,在工作中使用它更加正式,而且可以留下记录作为证据。长期使用Email会锻炼你的写作能力和语言组织能力;
  2. 如果我们都习惯使用“回复”或“全部回复”,通过一个邮件就可以看到关于一个项目全部的沟通信息;
  3. 上级经常不知道我们打电话或者发IM消息给客户到底在谈些什么,而发Email时“抄送”给他,通常情况下他都会很乐意接收,当然你也可以“抄送”或者“密送”给其他你希望看到这个邮件的人;
  4. 很多时候我们都习惯用IM工具传递文件,经常会出现的问题是找不到存在哪里了,或者换了电脑就没有了。用Email来发文件,永远不会发生这样的事,只要你不点击“彻底删除”。如果在大学我已经学会熟练使用Email了,我在大学的一些论文便可以保留下来;
  5. 当你想打电话给对方时,常常要考虑对方是否方便接电话,而使用Email则完全不用考虑,如果实在内容很重要,需要及时处理,则可以发个短信通知对方就行了;
  6. 在电话或者IM中收到一个需要后续答复的事项,往往会被忽略或者被后面的信息淹没,而Email可以做出标记,不会被遗漏。

有人会说,Email不如IM快捷,如果你翻开你发出的IM信息记录看一下,有多少是真正需要那么“快捷”呢?或者有人会说,Email需要长篇大论,太浪费时间,然而如果你再仔细统计一下发IM消息和打电话来沟通一件事所花费的时间的话,你会发现他们才是浪费时间的真正“罪魁祸首”。或者有人会说,Email不如电话中沟通那么直接而亲切,如果你仔细回忆一下你打过的电话,有多少是真正需要那么“直接而亲切”呢?


RFC 5322–Internet邮件格式

在了解电子邮件的基本工作原理之前,我们先来看看在网络中能被传输与处理的电子邮件的标准格式。

我们对RFC 5322所定义的标准邮件格式进行考察:

邮件由一个基本的信封,数个头字段,一个空行和邮件体组成。头的每个字段由一行ASCII文本组成。字段是一个基本的键值对,键被称为域名。

在一般用法中,用户代理创建一个邮件,并将其传递给邮件服务器,然后邮件服务器利用某些头字段来构造出实际的信封。

RFC 5322中与邮件传输相关的头字段:

邮件头 含义
To 主要收件人的电子邮件地址
Cc 次要收件人的电子邮件地址
Bcc 密件抄送的电子邮件地址
From 标识了邮件撰写者
Sender 可选字段,当发送人与撰写人不一致时
Received 传输路径上每个传输代理节点将自己填入其中
Return-Path 由最后一个传输代理添加指示如何返回发件人,一般留空

RFC 5322中邮件头使用的某些字段:

邮件头 含义
Date 邮件发出的日期与时间
Reply-To 回复时发送给谁,可以和 From 不同
Message-Id 邮件列表中不同邮件的一个ID
In-Reply-To 当前邮件回复对象的 ID
References 其他相关邮件的ID
Keyords 用户选择的关键字
Subject 一行显示的邮件概要

在最初,电子邮件只能由文本消息组成,这些消息用英文书写并用ASCII码标识。如今电子邮件所能发送的内容越来越多样,除了语言的多样性外,音频,图像,二进制文本或程序也可以由电子邮件进行发送,MIME(多用途Internet邮件扩展)使这些都得以实现。

关于MIME的详细内容不再这里进行阐述,有兴趣的同学可以自行了解。


电子邮件的传送

有关电子邮件的基本工作原理,推荐大家阅读这一篇博文:浅探电子邮件原理

但在阅读这篇博文之前,博主先在这里讲述几个重要的概念:

  • 用户代理:提供电子邮件服务的客户端,如微软的outlook、腾讯的QQ邮箱。当然,我这里指的都是客户端,而不是Web网页。
  • 邮件传输代理(邮件服务器):负责将用户邮件从源端移动到目的地,运行在邮件服务器机器上。
  • 邮箱:将用户代理与邮件服务器衔接起来,存储用户收到的电子邮件,邮箱由邮件服务器负责维护

然后,请阅读链接中的文章~

关于SMTP的握手过程,我在这里也进行一点补充:

  1. 发送电子邮件的计算机与目标计算机的25端口建立TCP链接;
  2. TCP链接建立成功,作为客户端的发送机器(以下简称客户端)等待服务端的接收机器(以下简称服务器)进行回复,告诉客户端是否已经准备好接收邮件;
  3. 如果服务器没有进行回复,则客户端释放链接,稍后尝试与服务器进行重连;
  4. 如果服务器接收邮件,则客户端声明这封电子邮件来自于谁,将要交给谁;
  5. 服务器确认是否有这样的收件人,如果有则指示客户端发送邮件;
  6. 两个方向上的所有邮件都交换完毕,链接被释放。

还有一点:最初,用户代理与邮件服务器是运行在同一台电脑上的。现在用户代理通常运行在个人计算机上,而邮件服务器则运行在ISP和公司服务器上。


总结

  1. 熟悉电子邮件系统的体系结构–用户代理以及邮件服务器模型;
  2. 熟悉用户代理与邮件服务器的作用;
  3. 掌握电子邮件的标准格式;
  4. 掌握SMTP的握手过程;
  5. 了解MIME、IMAP与POP3。

参考阅读

计算机网络—Andrew S. Tanenbaum/David J. Wetherall

浅探电子邮件原理—Author

为什么要使用Email及如何用好Email—贾王东的博客

电子邮件—喵酱的书架

作者:championhengyi 发表于 2018/06/08 14:34:36 原文链接 https://blog.csdn.net/championhengyi/article/details/80622851
阅读:238