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

简介: 电子邮件信息格式 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月前
|
缓存 网络协议 网络安全
计算机网络:应用层(上篇)
计算机网络:应用层(上篇)
|
1月前
|
缓存 网络协议 前端开发
深入了解常见的应用层网络协议
深入了解常见的应用层网络协议
深入了解常见的应用层网络协议
|
1月前
|
安全 网络协议 算法
计算机网络——应用层与网络安全(六)
计算机网络——应用层与网络安全(六)
90 1
计算机网络——应用层与网络安全(六)
|
2天前
|
人工智能 安全 网络安全
网络犯罪分子开始利用AI绕过现代电子邮件安全措施
网络犯罪分子开始利用AI绕过现代电子邮件安全措施
|
13天前
|
域名解析 网络协议 程序员
网络原理(7)——以太网数据帧和DNS协议(数据链路层和应用层)
网络原理(7)——以太网数据帧和DNS协议(数据链路层和应用层)
16 0
|
14天前
|
域名解析 存储 缓存
【基础计算机网络】应用层
【基础计算机网络】应用层
|
14天前
|
网络协议 API
【计算机网络概述】第二章:应用层:2.1 应用层原理
【计算机网络概述】第二章:应用层:2.1 应用层原理
|
19天前
|
传感器 数据可视化 JavaScript
物联网架构:感知层、网络层和应用层
【5月更文挑战第30天】物联网(IoT)由感知层、网络层和应用层构成。感知层利用传感器(如DHT11)收集环境数据;网络层通过ESP8266等设备将数据传输至云端;应用层提供用户服务,如Node-RED实现数据可视化。示例代码展示了Arduino读取温湿度,ESP8266连接Wi-Fi及Node-RED数据可视化流程。物联网架构为数据处理与服务提供全面支持,预示其在各领域广阔的应用前景。
30 2
|
26天前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
1月前
|
存储 缓存 网络协议
计算机网络 第三章 应用层(习题)
计算机网络 第三章 应用层(习题)
31 1

热门文章

最新文章