计算机网络(十):因特网中的电子邮件
四、因特网中的电子邮件
电子邮件是一种异步通信媒介,不必与他人的计划进行协调。现代电子邮件报文常常包含附件、超链接、HTML格式文本和图片。
internet电子邮件系统通常包括:用户代理、邮件服务器、简单邮件传输协议SMTP。
用户代理允许用户阅读、回复、转发、保存、撰写报文
邮件发送到邮件服务器,被放在发送报文队列中。
邮件服务器是电子邮件体系结构的核心,每个接收方在其中的某个服务器上有一个邮箱,邮箱管理和维护发送给用户的报文。
典型过程为:发送方的用户代理发送邮件到发送方的邮件服务器,再传输到接收方的邮件服务器,最后被分发到接收方的邮箱中。
如果发送失败,邮件服务器在报文队列中保持该报文并以后尝试再次发送。
SMTP是应用层协议,使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。SMTP分别运行在发送方邮件服务器的客户机端和接收方邮件服务器的服务器端。
电子邮件的协议包括但不限于SMTP协议:
①、SMTP:简单邮件传输协议,推协议,负责发送(HTTP是拉协议,负责获取)
②、POP3:邮局协议第三版本
③、IMAP:internet邮件访问协议
端口为固定的25端口,标识通信进程
使用直接连接,不被中转?
包括握手阶段->信息传输阶段->关闭阶段
发送状态码+短语?
邮件服务器向客户代理发送时不能使用推协议,因为客户不是随时都在线,所以SMTP只能用于发送,如果要接收需要使用POP3协议。
1、SMTP:
持久连接,运行在TCP上
SMTP仅用于从发送方的邮件服务器发送报文到接收方的邮件服务器,是internet电子邮件应用的核心。
SMTP限制所有邮件报文的主体(不仅是首部)只采用简单的7位ASCII码。
在使用SMTP传送邮件前,需要将二进制多媒体数据编码为ASCII码,并在使用SMTP传输后需要将相应的ASCII码邮件解码还原为多媒体数据。
过程如下:
①、用户调用邮件代理程序并提供接收方的邮箱地址,然后通过用户代理发送该邮件
②、发送方用户代理把报文发给发送方的邮件服务器,并进入报文发送队列中。
③、运行在发送方邮件服务器上的SMTP客户机端发现了报文发送队列中的这个报文,并创建一个到运行在接收方邮件服务器上的SMTP服务器的TCP连接。
④、经过初始的SMTP握手,SMTP客户机通过该TCP连接发送邮件报文。
⑤、在接收方的邮件服务器上,SMTP的服务器端接收到该报文,接收方的邮件服务器将该报文发送到接收方的邮箱中。
⑥、接收方调用用户代理阅读报文。
即可简化为:SMTP:握手阶段->传数据阶段->关闭阶段,消息编码为7位ASCII码
SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是如此,即TCP连接是两个邮件服务器之间的直接相连。
如果接收方的邮件服务器没有开机,该报文会保留在发送方的邮件服务器上(报文发送队列中)。
SMTP是用的是持久连接,如果发送邮件服务器有几个报文发往同一个接收邮件服务器,就可以通过同一个TCP连接发送所有的报文。握手中有HELO、MAL FROM、RCPT TO三条命令。对每一个报文,客户机都用一个mall from:crepes.fr开始,以CRLF。CRLF结束。用一个独立的句点表示该邮件的结束,并且当且仅当所有邮件发送完后才发送QUIT。
2、与HTTP的对比:
相同:当进行文件传送时,持久HTTP和SMTP都使用持久连接
不同:
①、HTTP是一个拉协议,即人们可以在方便的时候装载web服务器上的信息,即用户使用HTTP从服务器拉取信息,TCP连接是由想获取文件的机器发起的。SMTP是一个推协议,即发送邮件服务器把文件推向接收邮件服务器,TCP连接是由要发送文件的机器发起的。
②、SMTP要求每个报文(包括主体)都使用7位ASCII码格式,如果包含了非7位的ASCII码字符(如有重音的发文字符或二进制数据的图形文件)必须按照7位ASCII码进行编码,HTTP没有这个限制。
③、在面对一个既包含文本又包含图形的文档时,HTTP把每个对象封装到他的HTTP响应报文中(一对一),而internet电子邮件把所有报文对象放在一个报文中
④、HTTP使用带内控制,FTP使用带外控制
3、邮件报文格式和MIME:
每个首部必须包含一个from首部行和一个to首部行,可以包含一个subject首部行或者其他可选的首部行。报文首部后有一个空行,然后接报文主体。
这些邮件报文的首部行和SMTP命令是不同的,SMTP命令是SMTP握手协议的一部分,首部行则是邮件报文的一部分。
为了发送非ASCII文本格式的报文,发送方的用户代理必须在报文中使用附加的首部行,定义在RFC 2045和RFC2046中,多用途因特网邮件扩展MIME是对RFC 822的拓展。
MIME可以在发送端将非ASCII码的内容编码为ASCII。
支持多媒体的三个关键MIME首部是MIME-version、content-type和content-transfer-encoding。
mime-version首部告诉了接收用户代理所使用的的mime的版本号。
content-type首部允许接收用户代理对报文采取适当的动作,即接收用户代理可以为报文主体启用一些解压缩程序。
content-transfer-encoding首部提示接收用户代理该报文已经使用了ASCII编码,并指出了所用的编码类型。
当用户代理接收到包含这两个首部行的报文时,会根据content-transfer-encoding的值将报文还原成非ASCII格式,然后根据content-type首部行决定他应当采取何种动作来处理报文主体。
接收服务器一旦受到具有RFC 822和MIME首部行的报文,就在该报文的顶部添加一个received首部行,该首部行定义了发送该报文的SMTP服务器的名称(from)和接收该报文的服务器的名称(by)以及接受服务器接收到的时间。给用户代理提供了所访问的SMTP服务器的踪迹,以及访问发生的时间。
4、邮件访问协议:
用户代理主动向邮件服务器拉取邮件,有HTTP、第三版的邮局协议POP、因特网邮件访问协议IMAP。
邮件客户端需要配两个协议,SMTP负责发送,POP3负责接收
a、POP3:
是一个非常简单的邮件访问协议,有RFC 1939进行了定义。按照三个阶段进行工作:
①、特许:用户代理发送(以明文形式)用户名和口令以鉴别用户
②、事务处理:用户代理取回报文,还可以对报文做删除标记、取消删除标记、以及获取邮件的统计信息。
③、更新:在客户机发出了quit命令之后,结束该POP3会话。这个时候可以删除那些被标记为删除的报文。
POP3支持下载并保存的方式。
POP3服务器保留了一些状态信息,并记录哪些用户报文被标记为删除。
b、IMAP:
所有消息维持在服务器上,协议支持用户可直接在服务器上操作。
POP3可以将邮件下载在本地主机,但没有办法做到移动,即无法使用一个远程服务器上的层次文件夹,无法从任一台机器对所有报文进行访问。但IMAP可以,可以让用户远程操控。
IMAP协议为用户提供了创建文件夹以及在文件夹之间移动邮件的命令。
IMAP允许用户代理获取报文组件的命令。
c、基于web的电子邮件(HTTP):
以web的方式获取邮件。
用户代理就是普通的浏览器,用户和远程邮箱之间的通信通过HTTP进行。电子邮件报文通过HTTP从邮件服务器发送到浏览器,同时,发送邮件时通过HTTP从浏览器发送到邮件服务器,而不是用SMTP。