[关闭]
@Dale-Lin 2023-03-09T16:50:59.000000Z 字数 1141 阅读 151

Email

计算机网络


概况

Email 由三部分组成:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)。

假设 Alice 发送 Email 给 Bob。User agent 允许用户阅读,回复,转发、保存和撰写报文。微软的 Outlook 和 Apple Mail 是 Email 用户代理的例子。当 Alice 完成邮件撰写时,她的邮件代理向其 mail server 发送邮件,此时邮件放在服务器的外出报文队列中。当 Bob 要阅读报文时,他的 user agent 在其邮件服务器的邮箱中取的该报文。

每个接收方(如Bob)在其中的某个 mail server 上有一个邮箱(mailbox)。如果 Alice 的服务器不能将邮件交付给 Bob 的服务器,Alice 的 mail server 会在一个报文队列(message queue)中保持该报文并在一定间隔后再次尝试;如果几次尝试后仍不能成功,Alice 的 mail server 就会通知发送失败。

SMTP

SMTP 是因特网电子邮件的核心。假设 Alice 想给 Bob 发送一份简单的 ASCII 报文。

  1. Alice 调用她的 user agent 并提供 Bob 的邮件地址,撰写报文,然后指示 user agent 发送该报文。

  2. Alice 的 user agent 把报文通过 SMTP 发给她的 mail server,mail server 把报文放在报文队列中。

  3. Alice 的 mail server 上的 SMTP 客户端发现了报文队列中的这个报文,它就创建一个到运行在 Bob 的 mail server 上的 SMTP 服务器的 TCP 连接。

  4. 在经过一些初始的 SMTP 握手后,SMTP 客户端通过该 TCP 连接发送 Alice 的报文。

  5. 在 Bob 的 mail server 上,SMTP 的服务器端接收该报文。Bob 的 mail server 将该报文放入 Bob 的邮箱中。

  6. Bob 方便的时候,调用 user agent 阅读该报文。

实际上,SMTP 被设计成将 email 从一台主机推到另一台主机。不同的是 Bob 作为接收方,Bob 的 user agent 不是通过 SMTP 获取报文。因为取报文是一个 pull 操作,而 SMTP 是一个 push 协议。通过引入一个特殊的邮件访问协议来完成接收,例如第三版的邮局协议(Post Office Protocol——Version 3, POP3)、因特网邮件访问协议(Internet Mail Access Protocol,IMAP)以及 HTTP。

Created with Raphaël 2.1.2Alice's user agentSMTP PushAlice's mail serverSMTP PushBob's mail serverPOP3, IMAP or HTTPBob's user agent
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注