【计算机网络】再谈应用层——电子邮件相关

简介: 电子邮件信息格式 RFC 5322(最基本的格式,the Internet Message Format) 形式: to Cc(抄送) Bcc(盲抄送,对方无法得知该消息还抄送给了谁)
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

电子邮件信息格式

RFC 5322(最基本的格式,the Internet Message Format)

形式:

  • to
  • Cc(抄送)
  • Bcc(盲抄送,对方无法得知该消息还抄送给了谁)
  • from
  • Sender
  • Received
  • Return-Path
  • Date
  • Reply-to(对象是地址)
  • Message-Id
  • In-Reply-To(对象是 Message-Id)
  • References
  • keywords
  • Subject

这些字段组成虽然很简单,但是也正是它最大的特性之一:安全!
操作系统中也提到过,最简单的才是最安全的,但用户往往想要更多的特性,这在一定程度上增加了未知风险,降低了系统的安全性。

MIME(the multiple Internet mail extensions) 拓展

新特性

  • MIME-Version

若没有该字段则被认为只是最简单的ASCII码文本

  • Content-Description:人能看懂的内容简介。对应于我们发邮件时看到的内容简介描述
  • Content-Id
  • Content-Transfer-Encoding

未经编码的二进制数据依然可能发不出去

(注:我参考的是计算机网络(小蓝书)第五版,它首次出版于2011年,至今已经过去了11年,也许现在对这个问题已经有了更好的解决方案)

  • Content- Type

如text、image、audio、video、model等

二进制压缩算法 base64

image.png

2^6=64,所以一单元可表示的最大数字是63,按ASCII码表的对应关系。

quoted-printable(引用可打印编码)

与上述不同的是,1unit有7bits
127及以上的字符都被编码成一个等号后面跟着2个用十六进制数字来表示的字符值。

用户自定义编码

通过Content-Transfer-Encoding字段指定

SMTP(Simple Mail Transfer Protocol)

这是一个简单的ASCII协议,简单也是它的特性。

有几个局限:

  • 不包含认证(authentication)。

使得容易收发垃圾邮件。

  • 无法传输二进制数据

所以需要base64,但是传输大文件时依然有问题(这种编码方式无效使用带宽)

  • SMTP以明文方式传输数据

信息不加密

改进——基于RFC 5321标准的ESMTP(E指extension)

  • ESMTP有一个AUTH的字段,也常用这种方式进行邮件提交。
  • SMTP与ESMTP的区别之一在于,SMTP下最初发送的是HELO,而ESMTP发送的是EHLO。
  • 在信息传输的过程中,常通过查询DNS中的发送邮件方代理信息,判断来的是不是垃圾邮件。

IMAP(Internet Message Access Protocol)

它是对POP3协议的改进

POP3协议(post office protocol 3)

协议包含三个阶段:

  • 认证(AUTH)

用户代理 以明文形式 发送用户名及密码

  • 事务处理

用户代理有两种模式,可以使用list,retr(下载),dele,quit命令

  1. 下载删除
  2. 下载保留
  • 更新

通过quit命令进入更新阶段。

在上一阶段中,用户代理远程对一些文件进行标记删除等操作,实际上它并没有被立即删除,而是等进入了更新阶段时,POP3服务器才删除它们。


POP3的缺陷就是不能创建远程文件夹。也就是说,用户代理远程访问服务器,可以下载邮件到本地,然后再把邮件放到本地建好的文件夹。 但这不符合用户的习惯,用户希望能有一个远程文件夹,其可通过任意设备访问。(就像qq邮箱,可以通过电脑浏览器、手机移动端等访问它,只要账号信息正确,不同设备上看到的信息都是一样的) ## IMAP的改进 ![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/af36863e2a35419ea168e8b2815fe5c2~tplv-k3u1fbpfcp-watermark.image?) 以上命令及其提供的功能充分显示了它的改进点。我就不一一赘述生硬翻译了。 # 写在最后 电子邮件曾一度十分流行,而现在在日常生活中人们已经很少发邮件了(公司业务往来我不清楚,就不瞎说了)。那为什么我还要专门去整理这个知识点呢?它是不是真的过时了呢? 其实在我看来并没有,电子邮件的内核一直都在,只是它不断在以新形式出现而已。 我为什么会这么觉得呢?因为当我看到这些协议规定的信息格式的时候,会觉得它们很熟悉,不仅在我发邮件时看到的是这样,在我发微信、用qq的时候它们本质上也是这些东西。 现在很多文章教我们如何开发(或模仿)xx软件,点进去看,其实仿照的不过是界面而已,真正又还是去调用别人的接口,或者自己写的接口往往达不到原版的要求,仅仅是小规模、几条数据的测试,弄好了连自己都不见得敢放心用(个人实际经验有限,这话可能不太贴切,大佬们别和我计较)。正所谓画皮难画骨,但是骨架才是存在的根本。 作为后来者,我们没能第一个基于这个协议核心提出电子邮件的形式;也没有第一个做出微信(甚至在今天,无论是从技术层面还是市场层面,应用层的布局都已经尘埃落定了,并没有给后来者太多机会)。但是我相信:坚持探索、不满足于表面、静待机遇,是技术人的不懈追求。 # 参考书籍 - 《Computer Network (the fifth edition)》Anrdew S.Tanenbaum等著
相关文章
|
1月前
|
缓存 网络协议 前端开发
深入了解常见的应用层网络协议
深入了解常见的应用层网络协议
深入了解常见的应用层网络协议
|
4月前
|
网络协议
【计算机网络-应用层】HTTP协议
【计算机网络-应用层】HTTP协议
|
4月前
|
域名解析 缓存 网络协议
【计算机网络-应用层】DNS协议
【计算机网络-应用层】DNS协议
|
2月前
|
安全 网络协议 算法
计算机网络——应用层与网络安全(六)
计算机网络——应用层与网络安全(六)
78 1
计算机网络——应用层与网络安全(六)
|
2月前
|
缓存 移动开发 JSON
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
【网络安全 | 网络协议应用层】结合Wireshark讲解HTTP协议
108 0
|
11天前
|
存储 网络协议 网络安全
14.网络协议-邮件协议
14.网络协议-邮件协议
|
1月前
|
Shell Linux 数据库
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
29 1
|
1月前
|
数据采集 存储 传感器
物联网的感知层、网络层与应用层分享
物联网的感知层、网络层与应用层分享
56 1
|
3月前
|
网络协议 安全 网络性能优化
【网络工程师】<软考中级>传输层协议TCP/UDP&常用应用层协议
【1月更文挑战第27天】【网络工程师】<软考中级>传输层协议TCP/UDP&常用应用层协议
|
3月前
|
网络协议 网络架构
【计算机网络】应用层
【计算机网络】应用层
46 0
【计算机网络】应用层