当前位置: 首页 > news >正文

【计算机网络】因特网中的电子邮件

文章目录

  • 简单邮件传送协议SMTP
  • 邮件访问协议
    • POP3
    • IMAP
    • HTTP
  • 参考资料

电子邮件为异步通信媒介
因特网电子邮件系统
image.png
image.png
电子邮件系统的三个构件:用户代理、邮件服务器、邮件发送和读取协议
用户代理
User Agent 即UA
电子邮件客户端软件,用户与电子邮件系统的接口,如Apple Mail、Outlook
功能:实现邮件的撰写、显示、处理、通信
邮件服务器
Mail Server,邮件传输代理
功能:发送和接收邮件,向发信人报告邮件传送的情况,客户服务器模式
邮件发送和读取协议
简单邮件发送协议 SMTP:在UA向邮件服务器、邮件服务器之间发送邮件
邮局协议POP3:UA从邮件服务器读取邮件
注意

  1. 邮件服务器在电子邮件系统中是同时充当了客户和服务器两个角色,在UA向Mail Server发送邮件过程中Mail Server充当服务器,在该Mail Server发送邮件时充当客户端,在该Mail Server接收邮件时充当服务器。每台邮件服务器上既运行SMTP的客户端也运行SMTP的服务器端。
  2. SMTP和POP3(或IMAP)协议都使用TCP连接实现邮件可靠传输
  3. 邮件不会在互联网中的某个中间邮件服务器落地

举个例子
发送方Alice发电子邮件给接收方Bob
Alice撰写邮件,其UA向对应的Mail Server发送邮件,邮件被放在该Mail Server的外出报文队列中,Alice的Mail Server将邮件传输到Bob的Mail Server,邮件被分发到Bob的邮箱,当Bob要阅读邮件时,Bob的UA在其Mail Server的邮箱中取得该邮件。
术语说明
报文队列(message queue):存放从该Mail Server发送的邮件,若邮件在发送方Mail Server到接收方的Mail Server之间的传送失败,发送方的Mail Server将尝试重新发送。若一段时间后仍不能发送成功,则发送方Mail Server将删除该报文并将以电子邮件的形式通知发送方
邮箱(mailbox):每个接收方(如Bob)在对应的邮件服务器上有一个邮箱(mailbox),mailbox管理和维护着发送给接收方的报文
电子邮件
组成:由信封 (envelope) 和内容 (content) 两部分组成
envelope是电子邮件传输协议传送邮件的依据
地址格式:收件人邮箱名@邮箱所在主机的域名
举个例子
image.png

简单邮件传送协议SMTP

基本介绍
SMTP协议规定了在两个相互通信的 SMTP 进程之间建立TCP连接交换信息的方法,使用客户端服务器方式
通信三阶段
image.png

分析报文通过SMTP协议从发送方Mail Server到接收方Mail Server的传送过程

  1. 连接建立:包括建立TCP连接和SMTP连接的握手阶段
  2. 邮件传送:传送内容包括信封、首部、空行和邮件主体
  3. 连接释放:客户SMTP传送完所有报文后,释放TCP连接(这里的TCP连接是持久的)

建立TCP连接
三次握手
image.png
SMTP握手阶段
客户SMTP使用HELO命令,指示发送方主机名
服务器SMTP回答:“250 OK” ,表示已准备好接收。
image.png

邮件传送阶段
报文结束标志为回车换行.回车换行
image.png
连接释放
image.png

注意
SMTP用的是持续TCP连接,从同一个发送Mail Server到同一个接收Mail Server的报文可以通过同一个TCP连接发送。报文以MAIL FROM: xx作为开始标志

尝试SMTP通信
使用telnet命令
多媒体数据传输
更改电子邮件的内容部分
在首部中说明MIME-Version,数据编码格式,多媒体文件格式等信息
image.png
举个具体的例子
image.png
SMTP与HTTP对比
相同点:

  1. 作用:用于从一台主机向另一台主机传送文件。HTTP从Web服务器向Web客户传送文件;SMTP从一个邮件服务器向另一个邮件服务器传送文件。
  2. 文件传送过程中二者使用的都是持续的TCP连接进行可靠数据传输
  3. 二者都是应用层协议

不同点:

  1. HTTP是一个拉协议(pull protocol),用户使用使用客户端从服务器拉取数据,TCP连接是由想接收文件的机器发起的。SMTP是一个推协议(push protocol),发送邮件服务器把文件推向接收邮件服务器,TCP连接是由要发送该文件的机器发起的。
  2. SMTP协议要求报文数据采用7比特ASCII码格式。
  3. 对于包含多种数据类型的文档的处理。HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

关于客户Mail Server和服务器Mail Server的讨论
若接收方的Mail Server和UA都位于其PC上,则其PC必须不间断地运行着并一直保持在线,这并不现实。因此通常情况下,Mail Server是共享的且由用户的ISP进行维护,本地PC上运行UA
发送方Mail Server的引入解决了发送方UA无法到达一个不可达的目的地Mail Server的问题,即发送方的Mail Server可以重复尝试向接收方Mail Server发送报文直到接收方Mail Server变得可运行

邮件访问协议

引入原因
接收方从Mail Server上的邮箱取得邮件是一个拉操作,而SMTP是一个推协议,这是不能完成的。
需要引入一个能完成拉操作的协议,即邮件访问协议
邮件访问常用协议

  1. 第三版的邮局协议(PostOffice Protocol—Version 3 , POP3)
  2. 因特网邮件访问协议(Internet Mail Access Protocol,IMAP)
  3. HTTP协议
    image.png

POP3

使用客户服务器方式,基于TCP实现通信
用户代理(客户)打开一个到邮件服务器(服务器)端口 110上的TCP连接
工作的三个阶段

  1. 特许(authorization):UA发送(以明文形式)用户名和口令以鉴别用户。命令包括user < user name >pass < password >
  2. 事务处理:UA取回报文、对指定报文做删除标记、获取邮件的统计信息。命令包括listretrdele
  3. 更新:当用户发出quit命令结束POP3会话之后,Mail Server将删除被标记为删除的报文

IMAP

使用客户服务器方式,基于TCP实现通信,端口143,这是一个联机协议
提出原因
解决POP3不能在远程服务器上建立层次文件夹等问题
特点

  1. IMAP服务器把每个报文与一个文件夹联系起来,能够实现用户在远程Mail Server上创建文件夹、移动文件、阅读查询删除文件
  2. 允许UA只获取报文某些部分。举个例子,一个用户代理可以只读取一个报文的报文首部
  3. 要想查阅邮件,必须先联网

HTTP

使用Web浏览器作为UA,进行邮件收取和邮件发送
于是电子邮件报文可以使用HTTP协议而非STMP协议从发送方UA发送到发送方Mail Server,使用HTTP协议而非POP3或者IMAP协议从接收方Mail Server拉取到接收方UA
image.png
使用 HTTP POST方法提交要发送的邮件
使用 HTTP GET 方法读取邮件
传统UA和基于Web的UA比较
传统UA必须在计算机中安装用户代理软件且收发邮件不方便
基于Web的UA不需要在计算机中再安装用户代理软件,只要计算机能联网就能非常方便地收发电子邮件

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版

相关文章:

【计算机网络】因特网中的电子邮件

文章目录 简单邮件传送协议SMTP邮件访问协议POP3IMAPHTTP 参考资料 电子邮件为异步通信媒介 因特网电子邮件系统 电子邮件系统的三个构件&#xff1a;用户代理、邮件服务器、邮件发送和读取协议 用户代理 User Agent 即UA 电子邮件客户端软件&#xff0c;用户与电子邮件系统的接…...

【C++11】多线程

多线程创建线程thread提供的成员函数获取线程id的方式线程函数参数的问题线程join场景和detach 互斥量库&#xff08;mutex&#xff09;mutexrecursive_mutexlock_guard 和 unique_lock 原子性操作库&#xff08;atomic&#xff09;条件变量库&#xff08;condition_varuable&a…...

【vue3】shallowReactive与shallowRef;readonly与shallowReadonly;toRaw与markRaw

假期第六篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 1、shallowReactive与shallowRef shallowReactive&#xff1a;只处理对象最外层属性的响应式&#xff08;浅响应式&#xff09; shallowRef&#xff1a;只处理…...

手机建模教程 | 如何从易模App中导出模型?有哪些格式?含贴图吗?

很多小伙伴使用易模App是为了能快速地将已有实物的物体“变成”三维模型后转到自己习惯的3D软件中去编辑&#xff0c;于是&#xff0c;大家都关心模型能否导出&#xff0c;以及导出格式有没有自己想要的&#xff1f; 博雅仔告诉大家&#xff0c;当然可以导出&#xff01; 在导出…...

数据分析技能点-机器学习优化思想

优化思想,这个听起来极其专业和高端的词汇,其实它无处不在,悄无声息地影响着我们的生活和决策。从寻找最快的上班路线,到决定如何配置投资组合,优化思想都是一个不可或缺的元素。而在机器学习领域,优化思想更是扮演着至关重要的角色。 文章目录 优化的基础优化问题与实际…...

应用架构的演进:亚马逊的微服务实践

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…...

leetCode 55.跳跃游戏 贪心算法

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入…...

CF505B Mr. Kitayuta‘s Colorful Graph

Mr. Kitayuta’s Colorful Graph 题面翻译 给出一个 n n n 个点&#xff0c; m m m 条边的无向图&#xff0c;每条边上是有颜色的。有 q q q 组询问 对于第 i i i 组询问&#xff0c;给出点对 u i , v i u_i,v_i ui​,vi​。求有多少种颜色 c c c 满足&#xff1a;有至…...

c#设计模式-结构型模式 之 组合模式

&#x1f680;简介 组合模式又名部分整体模式&#xff0c;是一种 结构型设计模式 &#xff0c;是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 &#xff0c;用来表示部分以及整体层&#xff0c;它可以让你将对象组合成树形结构&#xff0c;并且…...

【Rust日报】2023-09-30 使用Rust做web抓取

CockroachDB 用rust重新实现 嘿&#xff0c;伙计们&#xff0c;我在 Rust 中实现了一个分布式 SQL 数据库。它就像 CockroachDB 和谷歌Google Spanner。告诉我你的想法。 注意: 这不是生产级别的数据库&#xff0c;这是一个以学习为目的的项目。有许多特性&#xff0c;但是缺少…...

【密评】商用密码应用安全性评估从业人员考核题库(三)

商用密码应用安全性评估从业人员考核题库&#xff08;三&#xff09; 国密局给的参考题库5000道只是基础题&#xff0c;后续更新完5000还会继续更其他高质量题库&#xff0c;持续学习&#xff0c;共同进步。 501 多项选择题 《个人信息保护法》要求个人信息处理者应当采取哪些…...

MySQL进阶_查询优化和索引优化

文章目录 第一节、索引失效案例1.1 数据准备1.2 全值匹配我最爱1.3 最佳左前缀法则 第一节、索引失效案例 可以从以下维度对数据库进行优化&#xff1a; 索引失效、没有充分利用到索引–索引建立关联查询太多JOIN (设计缺陷或不得已的需求)–SQL优化服务器调优及各个参数设置…...

Hadoop2复安装过程详细步骤

1、在vmware中更改了虚拟机的网络类型&#xff0c;--->NAT方式&#xff0c;&#xff08;虚拟交换机的ip可以从vmvare的edit-->vertual network editor看到&#xff09; 2、根据这个交换机&#xff08;网关&#xff09;的地址&#xff0c;来设置我们的客户端windows7的ip&…...

【Java-LangChain:面向开发者的提示工程-7】文本扩展

第七章 文本扩展 扩展是将短文本&#xff08;例如一组说明或主题列表&#xff09;输入到大型语言模型中&#xff0c;让模型生成更长的文本&#xff08;例如基于某个主题的电子邮件或论文&#xff09;。这种应用是一把双刃剑&#xff0c;好处例如将大型语言模型用作头脑风暴的伙…...

竞赛 基于设深度学习的人脸性别年龄识别系统

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习机器视觉的…...

从技能需求到就业前景,了解前端和后端开发的优缺点和个人选择

文章目录 每日一句正能量一、引言前端开发后端开发 二、两者的对比分析三、技能转换和跨领域工作四&#xff1a;介绍全栈开发后记 每日一句正能量 命运决定的不是你的人生&#xff0c;能决定你人生的只有自己。 一、引言 前端和后端是Web开发中两个不可或缺的领域。前端开发主…...

Flutter笔记:AnimationMean、AnimationMax 和 AnimationMin 三个类的用法

Flutter笔记 AnimationMean、AnimationMax 和 AnimationMin三个类的用法 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/…...

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gogs服务器

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Gogs服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gogs介绍2.1 Gogs简介2.2 Gogs特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、远程登录华为云云耀云…...

操作系统--分页存储管理

一、概念介绍 分页存储&#xff1a;一是分内存地址&#xff0c;二是分逻辑地址。 1.分内存地址 将内存空间分为一个个大小相等的分区。比如&#xff0c;每个分区4KB。 每个分区就是一个“页框”&#xff0c;每个页框有个编号&#xff0c;即“页框号”&#xff0c;“页框号”…...

【算法练习Day10】有效的括号删除字符串中的所有相邻重复项逆波兰表达式求值

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 有效的括号删除字符串中的所…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...