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

计算机网络 | 应用层(3)-- 因特网中的电子邮件

 💓个人主页:mooridy
💓专栏地址:《计算机网络:自定向下方法》 大纲式阅读笔记
关注我🌹,和我一起学习更多计算机的知识
🔝🔝🔝

目录

 

3. 因特网中的电子邮件

3.1 电子邮件系统

典型邮件发送过程

3.2 SMTP

Alice 向 Bob 发送邮件步骤

SMTP 通信过程

SMTP 特性

邮件报文格式

邮件访问协议

POP3

IMAP

HTTP


3. 因特网中的电子邮件

3.1 电子邮件系统

电子邮件系统主要由三个部分组成:

  • 用户代理 (user agent):用户撰写完邮件后,用户代理将邮件发送至邮件服务器,并放入服务器的外出报文队列 (Outgoing message queue);当用户阅读邮件时,用户代理从邮件服务器的指定邮箱中获取报文。
  • 邮件服务器 (mail server):用于存放邮件,每个用户在邮件服务器上都拥有一个用户邮箱 (user mailbox),服务器负责管理和维护发送给用户的报文。同时,邮件服务器既要将邮件发送到指定服务器,也要接收邮件,兼具 SMTP 客户端和服务端的双重角色。
  • SMTP:作为应用层协议,SMTP 采用 TCP 可靠数据传输服务。

典型邮件发送过程

邮件从发送方的用户代理出发,先传输到发送方的邮件服务器,接着再传递到接收方的邮件服务器,最后分发至接收方的邮箱。例如当 Bob 要读取邮箱中的报文时,包含其邮箱的邮件服务器会通过用户名和口令进行身份鉴别。

如果 Alice 的邮件服务器无法将邮件交付给 Bob 的服务器,会将该报文保留在报文队列(message queue)中,并尝试重新发送,一般每 30 分钟左右尝试一次。若几天后仍未成功送达,服务器将删除该报文,并以电子邮件的形式通知发送方 Alice。

3.2 SMTP

SMTP 主要用于实现从发送方邮件服务器到接收方邮件服务器的报文传输。

Alice 向 Bob 发送邮件步骤

  1. Alice 调用用户代理,填写 Bob 的邮件地址,撰写邮件后指示用户代理发送。
  2. Alice 的用户代理将报文发送至她的邮件服务器,并置于报文队列中。
  3. Alice 邮件服务器上的 SMTP 客户端发现队列中的报文后,与 Bob 邮件服务器上的 SMTP 服务器建立 TCP 连接。
  4. 完成初始 SMTP 握手后,SMTP 客户端通过 TCP 连接发送 Alice 的报文。
  5. Bob 邮件服务器上的 SMTP 服务端接收报文,并将其存入 Bob 的用户邮箱。
  6. Bob 在方便时调用用户代理读取邮件。

SMTP 通信过程

  1. SMTP 客户端尝试与 SMTP 服务器的 25 端口建立 TCP 连接,若服务器未启动,客户端后续会再次尝试连接。
  2. 连接建立后,SMTP 客户端和服务端在传输信息前会进行握手,客户端在握手时指明发送方和接收方的邮件地址。
  3. 握手完成后,客户端发送报文。
  4. 若客户端还有其他报文需发送至该服务器,可在同一 TCP 连接上重复上述操作;若无,则指示 TCP 关闭连接 。
  5. 例子:客户的主机名为crepes, fr,服务器的主机名为hamburger. eduo以C:开头的ASCII码文本行正是客户交给其TCP套接字的那些行,以S:开头的ASCII码则是服务器发送给其TCP套接字的那些行。一旦创建了 TCP连接,就开始了下列过程

SMTP 特性

  • 持续连接:当发送邮件服务器有多个报文需发往同一接收邮件服务器时,可通过同一个 TCP 连接完成所有报文的发送。每个报文以新的MAIL FROM: crepes, fr开头,以独立句点表示邮件结束,所有邮件发送完毕后发送QUIT命令。
  • 与 HTTP 对比
    • 传输模式:SMTP 是推协议,即发送邮件服务器主动将文件推向接收邮件服务器;HTTP 是拉协议,用户从 Web 服务器获取信息。
    • 数据格式:SMTP 要求每个报文(包括报文主体)采用 7 比特 ASCII 码格式,而 HTTP 数据无此限制。
    • 传输方式:HTTP 可能为网页中的每个对象分别发送一个请求,SMTP 则将所有报文对象整合在一个报文中传输。

邮件报文格式

  • 首部

    • From首部行:必填项。
    • To首部行:必填项。
    • Subject首部行:可选项。
    • 其他可选首部行。
  • 报文体:采用 ASCII 码格式。

邮件访问协议

POP3

POP3 协议的工作流程分为三个阶段:

  • 特许阶段:用户代理以明文形式发送用户名和口令,用于用户身份鉴别。
  • 事务处理阶段:用户代理获取报文,并可进行下载、标记删除、取消删除标记、获取邮件统计信息等操作。
  • 更新阶段:用户代理发送结束命令,会话终止,邮件服务器删除标记为删除的报文。

POP3 存在的缺陷:用户虽能将邮件下载到本地并创建文件夹管理,但该协议不支持在远程创建文件夹并对报文进行归类。这导致用户在不同设备上使用时,需重新创建文件夹管理邮件,操作较为繁琐。

IMAP

相较于 POP3,IMAP 有以下改进:

  • 服务器将每个邮件报文与文件夹关联,支持用户创建文件夹、移动邮件,还提供在文件夹中阅读、删除邮件以及查询邮件的功能。
  • 允许用户代理按需获取邮件报文的部分内容,避免下载如含音频或视频等大容量邮件的全部内容。
HTTP

用户使用普通浏览器作为用户代理,通过 HTTP 从邮件服务器获取邮件,也使用 HTTP 将邮件发送至邮件服务器。不过,邮件服务器之间仍采用 SMTP 协议进行通信。

http://www.xdnf.cn/news/158581.html

相关文章:

  • PCL绘制点云+法线
  • 2025.04.26-饿了么春招笔试题-第三题
  • 网络原理 ——TCP 协议
  • Spring Boot 连接 Microsoft SQL Server 实现登录验证
  • 开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构
  • 基于大模型底座重构司法信息系统
  • 软件设计原则
  • C语言中宏的高级应用
  • Astro canvas大屏从iotDA上抽取设备影子的参数的详细操作实施路径
  • 为什么vllm能够加快大模型推理速度?
  • 数据资产价值及其实现路径-简答题回顾
  • FPGA前瞻篇-组合逻辑电路设计-多路复用器
  • 比象AI创作系统,多模态大模型:问答分析+AI绘画+管理后台系统
  • 一、UI自动化测试01--认识和元素定位方法
  • NHANES指标推荐:DI-GM
  • 用python借用飞书机器人群发布定期内容
  • ShenNiusModularity项目源码学习(23:ShenNius.Admin.Mvc项目分析-8)
  • 第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
  • 【数据结构刷题】顺序表与ArrayList
  • Linux下编译并打包MNN项目迁移至其他设备
  • Qt动态库信号崩溃问题解决方案
  • Leetcode刷题 由浅入深之哈希法——202. 快乐数
  • 机器学习(10)——神经网络
  • 《Python Web部署应知应会》Flask网站隐藏或改变浏览器URL:从Nginx反向代理到URL重写技术
  • 【人工智能之大模型】详述大模型中​AWQ(Activation-aware Weight Quantization)量化的关键步骤?
  • Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨
  • Github 2025-04-26 Rust开源项目日报Top10
  • 学习笔记——《Java面向对象程序设计》-内部类、匿名类、异常类
  • 解决Ubuntu下使用CLion构建Qt项目时找不到已安装的模块的问题
  • AI编程案例拆解|基于机器学习XX评分系统-后端篇