【计算机网络】应用层电子邮件协议

news2024/11/26 21:25:57

一、电子邮件系统架构

电子邮件是一个典型的异步通信系统,发送方从UA,也就是邮件客户端,通过应用层SMTP协议,传输层tcp协议,发送给发送方的邮件服务器,比如使用的是163邮箱,163提供的SMTP服务器就是smtp.163.com发送方给这个地方发送。

之后,这个163 smtp服务器又会作为smtp客户端,再次通过应用层SMTP,传输层TCP给接收方的邮件服务器发邮件。

最后收件人会通过POP或IMAP协议,从他的POP3或IMAP服务器把他的邮件pop出来,还是走TCP连接。

注意这里都是客户端和服务器通信,走的都是典型的Client-Server架构。

例如,发送方邮件服务器,在接收发件人发来的邮件的时候,是作为服务器,然后他在给接收方邮件服务器送信的时候,是作为客户端。

这里我们把发送方邮件服务器——接收方邮件服务器这一大块,叫做电子邮件系统,这里面一定是走SMTP的。这之外,比如现在很多邮箱提供网页端,那么从发送方到发送方服务器这个过程就有可能走HTTP了,接收方服务器到接收方这里也是同理,可以走HTTP。

、SMTP(Simple Mail Transfer Protocol)

整个过程的大部分应用层协议走的都是SMTP,先看看SMTP。

它主要规定了这个客户端和服务器通信的过程,不含加密和认证,而且SMTP只能传7bit-ASCII码,这是上古时代的ASCII码,只包含了前128个字符。看下面这个通信的过程。

客户端和服务器通过简单的helo来建立连接,然后说这是从谁来的,给谁发的。

之后是信息的头和body,最后在把连接断掉。

这是一个原来的简单的邮件的格式,包括这些很基础的内容。

后来发现我们要传一些别的,视频、音频、文件、甚至二进制代码,为了遵循开闭原则,不对原先的系统修改,只添加功能,那就需要一种方式把这些东西映射成7bit-ASCII码,再走SMTP。

三、MIME(Multipurpose Internet Mail Extension)

就有了这个MIME扩展,

它通过规定了很多的Content Type,来支持不同样式的信息。

来看这样一个例子,最上面的是MIME的头,接着就是Content,type是mutipart-alternative,里面就是各种格式的信息,他还定义了一个boundary,来分隔不同的信息。

例如下面第一个content-type是text/html,然后用那个boundary分隔,然后是mesage/external-body,最后是一个音频文件。

四、POP3和IMAP

就是很简单的从邮件服务器pop出来消息到本地。

看这里都是些很简单的消息,把邮件都list出来,把某个邮件retrieve出来,然后删除某个邮件,最后退出。

这里就是POP3的局限,只能把整个邮件POP出来才能看。

IMAP可以把邮件的一部分POP出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1296329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ day59 下一个更大元素Ⅱ 接雨水

题目1:503 下一个更大元素Ⅰ 题目链接:下一个更大元素Ⅱ 对题目的理解 返回循环数组中每个元素的下一个更大元素, 数字x的下一个更大元素是循环等的搜索它的最近的下一个更大的数 数组的中至少有一个元素 本题难点在于循环遍历这里&…

基于深度学习yolov5实现安全帽人体识别工地安全识别系统-反光衣识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 实现安全帽人体识别工地安全识别系统需要使用深度学习技术,特别是YOLOv5算法。下面是对基于YOLOv5实现安…

[mac系统]利用换行符查找替换^p 报错 --caption_column‘ calue ‘test‘ needs to be one of: image

报错内容 代码内容 args.image_column "image" args.caption_column "text" 问题原因: 训练过程需要blip文件是metadata.json格式 ​ 测试过程需要的文件是txt格式 blip.txt​ ​ 解决办法 1 利用word查找替换 用{"file_name": &…

银行卡二要素API的应用案例:从在线购物到金融投资

引言 随着互联网技术的不断发展,人们的金融需求也在不断增加。随之而来的是各种新型金融服务的涌现,让用户的金融体验更加便利快捷。其中,银行卡二要素API的应用,则为用户的金融体验和安全性提供了极大的保障。 银行卡二要素API…

【C++数据结构 | 图速通】10分钟掌握邻接矩阵 邻接表 | 快速掌握图论基础 | 快速上手抽象数据类型图

图 by.Qin3Yu 请注意:严格来说,图不是一种数据结构,而是一种抽象数据类型。但为了保证知识点之间的相关性,也将其列入数据结构专栏。 本文需要读者掌握顺序表和单链表的操作基础,若需学习,可参阅我的往期文…

数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景

1.5 数据清洗、特征工程和数据可视化、挖掘建模的应用场景 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.5节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应…

PostgreSQL从小白到高手教程 - 第38讲:数据库备份

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第38讲&#…

企业博客SEO:优化SOP,助您提升搜索引擎可见性

企业博客是互联网时代企业与用户沟通的重要渠道之一,引流成本也比较低。然而,依然有企业会处在3种状态: 1. 有博客,但内容更新不积极或搁置 2. 有博客,但内容散乱 3. 根本就没有博客 如果是这几种状态,…

uniapp,点击选中并改变颜色,第二次点击取消选中状态

一、效果图 二、代码实现 字符串的indexOf和数组的indexOf用法一致! arr.indexOf(item) 该方法返回某个元素在数组中的位置。若没检索到,则返回 -1。 关键代码:(通过:class绑定) :class"selectList.indexOf(sub.type) ! -1 ? right_ite…

ambari hive on Tez引擎一直卡住

hive on tez使用./bin/hive启动后一直卡住,无法进入命令行 使用TEZ作为Hive默认执行引擎时,需要在调用Hive CLI的时候启动YARN应用,预分配资源,这需要花一些时间,而使用MapReduce作为执行引擎时是在执行语句的时候才会…

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(二)

1 代码框架 整体项目结构如图: Common:公共库 Logs: 日志目录 Page: 页面元素 Report:测试报告 TestCase:测试用例 TestData: 测试数据 2 单模块运行 直接上代码: # -*- coding…

mysql 主从搭建、django实现读写分离、django中多redis缓存、django中使用连接池、pycharm远程linux开发

1 mysql 主从搭建 2 django实现读写分离 3 django中多redis缓存 4 django中使用连接池 5 pycharm远程linux开发 1 mysql 主从搭建 # 之前做过redis的主从,很简单# mysql 稍微复杂一些, 搭建mysql主从的目的是?-读写分离-单个实例并发量低&…

VUE+webrtc-streamer 实现实时视频播放(监控设备-rtsp)

效果 下图则启动成功,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面 1、下载webrtc-streamer 地址:https://github.com/mpromonet/webrtc-streamer/releases 2、解压下载包 3、双击webrtc-streamer.exe启动服务 4、将下载包html文件夹下webrt…

Vue3使用Tailwind CSS

安装 Tailwind 以及其它依赖项 npm install -D tailwindcsslatest postcsslatest autoprefixerlatest生成配置文件: npx tailwindcss init -p.修改配置文件 tailwind.config.js 2.6版本 : module.exports {purge: [./index.html, ./src/**/*.{vue,j…

(三潮来袭)探寻2023年科技变革潮流与2024年前瞻展望

2023年对于IT行业来说是一个动荡而又充满变革的一年。随着世界逐渐走出前几年的挑战,企业逐渐复苏,但这个行业仍然在经历着激烈的变革。在这个时候,我们看到了一些引人注目的技术变化和未来的趋势。 一、2023年回顾 关键词:Chat…

eve-ng镜像模拟设备-信息安全管理与评估-2023国赛

eve-ng镜像模拟设备-信息安全管理与评估-2023国赛 author:leadlife data:2023/12/4 mains:EVE-ng 模拟器 - 信息安全管理与评估模拟环境部署 references: EVE-ng 官网:https://www.eve-ng.net/EVE-ng 中文网&#xff1…

Elasticsearch:什么是检索增强生成 (RAG)?

检索增强生成 (RAG) 定义 检索增强生成 (RAG) 是一种利用来自私有或专有数据源的信息来补充文本生成的技术。 它将旨在搜索大型数据集或知识库的检索模型与大型语言模型 (LLM) 等生成模型相结合,后者获取该信息并生成可读的文本响应。 检索增强生成可以通过添加来…

Navicat 技术指引 | 适用于 GaussDB 分布式的调试器

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

项目优化(异步化)

项目优化(异步化) 1. 认识异步化 1.1 同步与异步 同步:一件事情做完,再做另外一件事情,不能同时进行其他的任务。异步:不用等一件事故完,就可以做另外一件事情。等第一件事完成时&#xff0c…

拦截 open调用 (进程白名单,文件白名单)

拦截 open 文章目录 拦截 open第一个需求文件结构进程白名单文件白名单 测试代码第一个版本版本二代码演示 增加一个日志记录代码解释 gcc -shared -fPIC -o libintercept.so intercept.c -ldlLD_PRELOAD./libintercept.so ./processA在Linux中,我们可以使用LD_PREL…