应用层:电子邮件
禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
电子邮件
电子邮件 (e-mail) 是互联网上使用得最多的和最受用户欢迎的一种应用,电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点,现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。邮件将被发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取。
电子邮件系统
一个电子邮件系统应有 3 个构件:用户代理、邮件服务器和邮件相关协议。用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件,用户代理的功能:撰写、显示、处理和通信。
邮件服务器形成了电子邮件体系结构的核心,它的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户-服务器方式工作,邮件服务器需要使用发送和读取两个不同的协议。一个邮件服务器既可以作为客户,也可以作为服务器。例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B 是 SMTP 客户。
如果发送方的服务器不能讲邮件交付给接收方,则邮件就会被暂时保存在发送方的邮件服务器的报文队列,并且尝试再次发送。通常每隔 30 分钟左右进行一次尝试,如果几天之后仍未成功,就删除邮件并通知发送方。
为什么要有服务器?直接发送报文不行吗?这是因为如果没有服务器,当接收方没有联网时,发送方就无法发送邮件,因此需要邮件服务器进行保存。
简单邮件传送协议 SMTP
SMTP 协议所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息,由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。客户的 SMTP 协议在 25 号端口上,建立一个到服务器 SMTP 的 TCP 连接。SMTP 规定了 14 条命令和 21 种应答信息,每条命令用 4 个字母组成。而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。
发件人的邮件送到发送方邮件服务器的邮件缓存后,SMTP 客户就每隔一段时间对邮件缓存扫描一次。如果发现邮件,就使用 25 端口与接收方邮件服务器的 SMTP 服务器建立 TCP 连接。SMTP 不使用中间的邮件服务器,TCP 连接会建立在发送方和接收方两个邮件服务器之间。
工作步骤
- 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。
- 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
- SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
- 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
- 运行在接收方邮件服务器中的 SMTP 服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
- 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。
对比 HTTP 协议
HTTP 协议和 SMTP 协议都是用命令/响应交互模式,命令和状态码都是 ASCII 码。文件传输时,持续的 HTTP 协议和 SMTP 协议都使用持续连接。
HTTP 协议和 SMTP 协议的区别主要有 3 点:
- HTTP 协议是一个拉协议,即用户使用 HTTP 协议从服务器拉取信息。SMTP 是一个推协议,发送邮件的服务器把文件推向接收邮件服务器;
- SMTP 要求每个报文采用 7 比特 ASCII 码格式,HTTP 数据不受限制;
- HTTP 把每个对象封装到自己的 HTTP 响应报文中,SMTP 协议把所有报文对象放在一个报文中。
邮件访问协议
POP3 协议
邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。POP 也使用客户-服务器的工作方式,在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序,POP3 服务器和 POP3 客户之间的通信是由 POP3 客户发起的。
POP3 协议按照 3 个阶段进行工作:
- 特许(认证):用户代理(以明文的方式)发送用户名和口令,以鉴别用户;
- 事务处理:用户代理取回报文,这个阶段用户代理还可以做获取邮件统计信息,添加或取消删除标记等操作;
- 更新:结束 POP3 回话,这是邮件服务器会删除被标记为删除的报文。
POP3 可能被配置为“下载并删除”的方式,或者是“下载并保留”。下载并删除存在的问题是,接收方可能想要在不同的主机上访问邮件报文,但是该方式会导致用户换了客户端软件,就无法重读了。下载并保留的方式及用户代理下载邮件后,邮件仍然保存在邮件服务器中,这样不同的客户端都可以查看该报文。
IMAP 协议
使用 POP3 协议时,报文和文件夹是存储在主机上的,此时并不能支持从任何一台机器对所有报文进行访问。POP3 没有给用户提供穿件远程文件夹,并为报文用文件夹管理的功能,而用户更乐于使用远程服务器的层次文件夹。
IMAP (Internet Message Access Protocol)协议也是按客户服务器方式工作,现在较新的是版本 IMAP 最大的好处就是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样,因此 IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。
IMAP 还允许收件人只读取邮件中的某一个部分,例如,收到了一个带有视像附件(此文件可能很大)的邮件。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 上,则邮件一直是存放在 IMAP 服务器上,因此用户需要经常与 IMAP 服务器建立连接。
基于 Web 的电子邮件
使用基于 Web 的电子邮件时,用户代理就是浏览器,用户和远程邮箱之间使用 HTTP 进行通信。例如电子邮件从 A 发送到邮件服务器使用 HTTP 协议,两个邮件服务器之间的传送使用 SMTP,邮件从邮件服务器传送到 B 是使用 HTTP 协议。
通用互联网邮件扩充 MIME
多媒体信息怎么办?
SMTP 有以下缺点,使得发送多媒体信息出现困难:
- SMTP 不能传送可执行文件或其他的二进制对象。
- SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文等语种)就无法传送。
- SMTP 服务器会拒绝超过一定长度的邮件。
- 某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。
MIME
通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它,它的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。MIME 定义了 5 个新的邮件首部字段,它们可包含在 [RFC 822] 首部中,这些字段提供了有关邮件主体的信息。MIME 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。MIME 也定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
参考资料
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社