计网Chapter2-2_电子邮件SMTP邮件访问协议与DNS

Chapter 2.2:电子邮件、SMTP、邮件访问协议与 DNS

Chapter 2.2 讲两个典型应用层系统:电子邮件和 DNS。它们分别回答两个问题:一封邮件如何从 Alice 到达 Bob;用户输入域名后,主机如何获得目标服务器的 IP 地址。


本节核心结论: 邮件系统依靠用户代理、邮件服务器、SMTP 和访问协议协作;DNS 依靠分层命名和分布式数据库完成域名到 IP 地址的映射。

1. 电子邮件系统不等于 SMTP

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

组成 作用
User Agent 撰写、编辑、阅读邮件,如 Outlook、Apple Mail、网页邮箱
Mail Server 保存用户 mailbox,维护待发送邮件队列
SMTP 在邮件服务器之间发送和转发邮件

SMTP 不是整个邮件系统,而是邮件发送和服务器间转发协议。用户写邮件、读邮件、管理文件夹,都还需要用户代理和邮件访问协议参与。

2. Alice 给 Bob 发邮件的完整流程

Bob 不在线也能收到邮件,因为邮件不是直接送到 Bob 的电脑,而是先送到 Bob 的邮件服务器 mailbox 中。

这张图说明邮件系统的异步性:发送方把邮件交给自己的邮件服务器,服务器之间用 SMTP 投递,收件人稍后再用访问协议读取邮件。

3. SMTP:发送邮件的协议

SMTP 使用 TCP,默认端口号是 25。它通常在发送方邮件服务器和接收方邮件服务器之间传输邮件,采用命令/响应交互,过程包括 greeting、message transfer 和 close。

常见 SMTP 命令包括:

命令 作用
HELO 打招呼,建立 SMTP 会话
MAIL FROM 声明信封发送方
RCPT TO 声明信封接收方
DATA 开始发送邮件内容
QUIT 关闭会话

SMTP 常被描述为 push:发送方主动把邮件推送到接收方邮件服务器。HTTP 典型资源访问则是 pull:客户端主动向服务器拉取资源。

4. 邮件报文格式与 MIME

邮件内容本身也有格式,通常由 header、blank line 和 body 组成。header 中常见字段包括:

  • From:
  • To:
  • Subject:

要特别区分:SMTP 命令中的 MAIL FROMRCPT TO 属于投递层面的信封信息;邮件报文头部中的 From:To:Subject: 属于用户看到的邮件内容格式。二者不是同一个层面的字段。

原始邮件正文主要支持 ASCII。为了支持附件、图片和多媒体内容,需要 MIME。MIME 会在邮件首部添加字段,例如 MIME-VersionContent-Transfer-EncodingContent-Type,说明邮件体的编码和内容类型。

5. 邮件访问协议:POP3、IMAP、HTTP

SMTP 负责发送和转发邮件,但 Bob 从自己的邮件服务器读取邮件,需要邮件访问协议。

协议 核心作用 特点
POP3 下载邮件 可下载并删除或下载并保留,会话中状态较少
IMAP 远程管理邮箱 服务器保存文件夹、邮件状态和映射
HTTP/HTTPS Web 邮箱访问 Gmail、Hotmail、Yahoo Mail 等网页邮箱常用

POP3 更像“把邮件取下来”,IMAP 更像“在服务器上管理邮箱”。多设备同步场景通常更适合 IMAP,因为邮件状态和文件夹结构保留在服务器上。

6. DNS 为什么存在

人类更容易记住 www.example.comsse.sysu.edu.cn 这样的主机名;网络层转发则需要 IP 地址。DNS 解决的问题是:如何把主机名映射为 IP 地址。

DNS 不能设计成一个全球集中式服务器,原因包括:

  • 单点故障:中心服务器不可用会影响全球解析。
  • 性能瓶颈:全球查询量巨大,单机难以承受。
  • 时延问题:所有用户访问同一个中心数据库会很慢。
  • 维护困难:主机数量巨大,映射不断变化。
  • 命名冲突:扁平命名难以管理。

因此 DNS 采用层次化命名和分布式数据库。它服务于 IP 通信,但本身是应用层协议,通常使用 UDP 53。

7. DNS 层次结构与查询流程

DNS 的层次结构包括 Root DNS、TLD DNS 和 authoritative DNS。主机通常不会直接从应用程序访问 Root DNS,而是先通过 resolver 查询本地 DNS 服务器。

这张图展示的是本地 DNS 替主机迭代查询的主干。Root 不直接给出最终 IP,而是指向 TLD;TLD 再指向权威 DNS;权威 DNS 给出最终记录。

本地 DNS 不严格属于 DNS 层次结构,但它是主机首先联系的 DNS 服务器。它可能直接回答本地区域记录,也可能使用缓存回答。缓存能减少时延和上游负载,但记录可能过时,因此资源记录带有 TTL。

递归查询和迭代查询的区别是:递归查询中,被问的服务器继续帮请求者查到底;迭代查询中,被问的服务器告诉请求者下一步该问谁。

8. DNS 资源记录

DNS 存储的是 Resource Record,格式为:

1
(name, value, type, ttl)

常见类型包括:

Type Name Value 含义
A 主机名 IP 地址 主机名到 IP
NS 域名 权威 DNS 服务器名 某域由哪个服务器负责
CNAME 主机别名 规范主机名 别名到真实名字
MX 邮件域名 邮件服务器名 该域邮件应投递到哪里

MX 记录对邮件系统尤其重要。发送方邮件服务器给 user@example.com 发信时,会查询 example.com 的 MX 记录,找到负责接收该域邮件的邮件服务器。

9. DNS 安全问题

DNS spoofing 指攻击者伪造 DNS 响应,让用户获得错误 IP。DNS cache poisoning 指攻击者诱导 DNS 服务器缓存错误记录,使后续用户也被导向错误地址。

这类攻击的危险在于:用户以为自己访问的是正确域名,但解析结果可能已经被替换。DNSSEC、随机化查询 ID、端口随机化、缓存策略等机制都与降低这类风险有关。

10. 邮件域、MX 记录与端口

邮箱地址中 @ 后面的部分是邮件域名。例如 gmail.comqq.com139.com 可以粗略判断邮件服务商或邮件域。但严格判断邮件投递路径时,不只看后缀字符串,而要查该域名的 MX 记录。

有些不同后缀的邮箱可能由同一服务商托管,例如学校或公司域名可能使用 Google Workspace、Microsoft 365 或企业邮箱服务。因此:

  • 同后缀通常属于同一邮件域。
  • 不同后缀不一定代表完全不同邮件系统。
  • 严格投递依据是 DNS MX 记录。

不同邮件服务商通常遵守同一套标准协议端口:

用途 协议 常见端口
邮件服务器之间投递 SMTP TCP 25
用户提交邮件 SMTP Submission TCP 587
加密 SMTP 提交 SMTPS TCP 465
下载邮件 POP3 TCP 110
加密 POP3 POP3S TCP 995
远程管理邮箱 IMAP TCP 143
加密 IMAP IMAPS TCP 993
网页邮箱 HTTP/HTTPS TCP 80/443

要区分服务器之间投递和用户客户端提交邮件。邮件服务器之间常用 SMTP 25;用户在 Outlook 等客户端中发邮件,常用 587 或 465。

11. 复习清单

学完本节后,应能回答:

  • 电子邮件系统的三个主要组成部分是什么?
  • 为什么 Bob 不在线也能收到 Alice 的邮件?
  • SMTP 使用 TCP 还是 UDP?默认端口是多少?
  • 为什么 SMTP 是 push,而 HTTP 常被说成 pull?
  • MAIL FROM 和邮件头部 From: 有什么区别?
  • POP3 和 IMAP 的核心区别是什么?
  • DNS 为什么不能集中式实现?
  • 主机解析 www.amazon.com 大致经过哪些 DNS 层次?
  • 递归查询和迭代查询有什么不同?
  • A、NS、CNAME、MX 记录分别表示什么?
  • 判断邮件服务商时,为什么严格上要看 MX 记录?

最终总结: Chapter 2.2 展示了应用层协议的两个典型系统:邮件系统通过 SMTP 和访问协议完成异步通信,DNS 通过分布式层次结构完成名字到地址的映射,并为邮件投递、负载均衡和主机别名等功能提供基础。