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

Posted hithongming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络2.4 因特网中的电子邮件相关的知识,希望对你有一定的参考价值。

第二章第四节 因特网中的电子邮件

Outline

Notes

## 因特网的三大组件

下图是因特网电子邮件系统的总体情况,从该图中我们可以看出它有3个重要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)

 技术分享图片

用户代理允许用户阅读、回复、转发、保存和撰写报文。

邮件服务器组成了电子邮件体系结构的核心。每个接收方在其中的某个服务器上有一个邮箱。邮箱包含用户的到达报文、离开(将发送)邮件报文的报文队列;在发送电子邮件报文的邮件服务器之间采用SMTP协议。

SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。

## SMTP

  • SMTP是电子邮件应用的核心,使用TCP从客户机到服务器可靠地传输电子邮件报文,用端口25,属于TCP/IP协议族。
  • SMTP一般不使用中间邮件服务器发送邮件,他采用直接传输的方式,从发送服务器到接受服务器
  • 传输共有三个阶段:握手、报文传输、关闭
  • 在SMTP握手阶段,客户端向SMTP服务器分别指定发信人和收信人的电子邮件地址。握手阶段完毕,SmTP服务器把客户端发出的邮件消息添加到发信队列中,通过TCP提供的可靠数据传输服务把该消息无错的传送到服务器。如果客户还有其他邮件消息需要发送到同一个服务器,就在同一个TCP连接重复上述过程;否则,指定TCP关闭该连接。
  • 连接和发送过程如下:
        1)建立TCP连接。
        2)客户端发送HELO命令以标识发件人自己的身份,客户端发送MAIL命令。服务器以ok作为响应,表明准备接受。
        3)使用AUTH命令登录SMTP服务器。输入用户名和密码(注意用户名和密码都需要使用base64加密)。
        4)客户端发送RCPT命令,标识该电子邮件的计划接收人,可以有多个RCPT行。服务器以OK作为响应,表示愿意为收件人发送邮件。
        5)协商结束后,使用DATA命令发送。
        6)以“.”号表示结束,输入内容一起发送出去,结束此次发送,用QUIT命令退出。
  • 命令/响应交互模式:
    • 命令: 按照ASCII码的表示方式,发送自解释命令
    • 响应: 用状态码和短语对每条命令进行回答
  • 报文必须是7比特ASCII格式
  • SMTP协议常用的命令

技术分享图片

 【SMTP与HTTP的对比】

  • 相同:HTTP和SMTP都用于从一台主机向另一台主机传输文件
    • HTTP从Web服务器向Web客户;
    • SMTP从一个邮件服务器向另一个邮件服务器;
  • 进行文件传输时,二者都使用持续连接
  • 差别:
    • HTTP主要是一个拉协议:即在方便的时候,某些人在Web服务器上装载信息,用户使用HTTP从该服务器拉取这些信息;SMTP主要是一个推协议:即发送邮件服务器把文件推向接收邮件服务器,这个连接是由要发送该文件的机器发起的。
    • SMTP要求每一个报文(包括他们的体)使用7比特ASCII码格式,若非如此,则强制转化;HTTP没有这样的编码限制
    • HTTP把每个对象封装到它自己的HTTP响应报文中;SMTP把所有报文对象放在一个报文之中。

## 邮件报文格式和MIME

  • RFC 5322规定文本消息格式标准:
    • 包括有头部行、空白行、消息体,其中头部行有To、From、Subject,消息体包括消息本身,消息体只能是 ASCII字符
  • 由于 文本消息格式标准 ,只适合于发送普通ASCII文本,不能充分满足多媒体报文或非ASCII文本格式的报文的需求。为发送非ASCII码内容,发送方的用户代理必须在报文中使用附加的首部行,MIME(多用途因特网邮件扩展)是对RFC 822的扩展
  • 支持多媒体的两个关键MIME首部是Content-Type Content-Transfer-Encoding
    • Content-Type:首部行允许接收用户代理对报文采取适当的动作
    • Content-Transfer-Encoding:首部行提示接收用户代理该报文主体已经使用了ASCII编码,并指出了所用的编码类型。

技术分享图片

  • 接收服务器一旦接收到具有RFC 822和MIME首部行的报文,就在该报文的顶部添加一个Received:首部行;该首部行定义了发送该报文的SMTP服务器的名称(from),接收该报文的SMTP服务器的名称(by),以及接收服务器接收到的时间。
  • 有时一个邮件有多个Receive行,这是因为有的邮件在发送方和接收方之间的路径要经过不止一个SMTP服务器转发。

 ## 邮件访问协议

  在上述分析中,有一个疏漏的环节,那就是在Alice向Bob发送邮件的过程中,Bob是如何通过运行在他本地PC上的用户代理,获得位于某ISP的邮件服务器上的他的邮件呢?注意到Bob的用户代理不能使用SMTP来取回邮件,因为取邮件时一个拉操作,而SMTP是一个推协议。因此我们要引入邮件访问协议,包括第三版的邮局协议(POP3)因特网邮件访问协议(IMAP)以及HTTP

  下图总结了应用于因特网电子邮件的一些协议:SMTP用来将邮件从发送发的邮件服务器传输到接收方的邮件服务器。如POP3这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

技术分享图片

POP3】

  • POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。
  • 它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文档为RFC1939。
  • POP3支持电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
  • POP3按照三个阶段工作:  
    • 特许:用户代理发送(以明文形式)用户名和口令以鉴别用户。
    • 事务处理:用户代理取回报文,同时对报文做删除标记、取消报文删除标记、以及获取邮件的统计信息
    • 更新:他出现在客户发出Quit命令之后,目的是结束POP3会话,这时会删除标记为删除的报文

【IMAP】

  • IMAP 全称是 Internet Mail Access Protocol,即互联网邮件访问协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。
    • 开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
    • IMAP允许用户代理获取报文组件的命令,例:用户代理可以只读一个保温的报文收不,或只是一个多部分MIME报文的一部分。

【IMAP和POP3的区别】

  IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP和POP3是邮件访问最为普遍的Internet标准协议。不同的是:
(1)IMAP提供Webmail与电子邮件客户端之间的双向通信,客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上(如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的)。而POP3在客户端的操作不会反馈到服务器上。
(2)IMAP更好地支持了从多个不同设备中随时访问新邮件。
(3)IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
(4)POP3需要下载未阅读的邮件,IMAP可以不用把所有的邮件全部下载,而是通过客户端直接对服务器上的邮件进行操作。所有通过IMAP传输的数据都会被加密,从而保证通信的安全性。
(5)IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件。

技术分享图片

总之,IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。

【HTTP】

  当用户用Web浏览器手法电子邮件时,用户和他远程邮箱之间的通信则通过HTTP;然而,Alice的邮件服务器在与其他的邮件服务器之间发送和接收邮件时,仍然使用的是SMTP。

 








以上是关于计算机网络2.4 因特网中的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

4.6万字长文总结计算机网络 &&《计算机网络·自顶向下方法》学习笔记(1-6章)

计算机网络—— 概述(12):计算机网络在信息时代的作用因特网概述

计算机基础(笔记)——计算机网络

网络边缘

计算机网络复习之应用层

计算机网络复习之应用层