当前课程知识点:网络技术与应用 > 第8讲 应用层 > 8.5 电子邮件 > html
电子邮件也是Internet最主要的应用之一,人们通过电子邮件系统完成信息交换功能。电子邮件的主要协议有SMTP和POP3,SMTP用于实现发送端用户代理与发送端邮件服务器之间、发送端邮件服务器与接收端邮件服务器之间的邮件传输过程,POP3用于实现接收端用户代理与接收端邮件服务器之间的邮件接收过程。
8.5.1 电子邮件传输过程
1.电子邮件系统组成与协议
图8.21是电子邮件传输过程中涉及的设备和协议。
用户代理在发送邮件前,必须先在某个邮件服务器创建一个信箱,获得信箱的电子邮件(E-mail)地址,同时,还须获得接收方的E-mail地址。E-mail地址由用户名、分隔符和邮件服务器域名这三部份组成,如[email protected]就是一个E-mail地址,abc是用户名,@是分隔符,读作“at”,163.com是163邮件服务器域名。
邮件服务器是电子邮件系统的核心,负责发送和接收邮件,同时向发信人报告邮件传送情况,如已交付、被拒绝、丢失等。
用户代理向邮件服务器发送邮件使用简单邮件传输协议(Simple Mail Transfer Protocol,SMTP),邮件服务器之间传输邮件也使用SMTP,而用户代理从邮件服务器读取邮件使用邮局协议第3版(Post Office Protocol 3,POP3)。
SMTP和POP3都是基于客户/服务器结构的应用层协议,用户代理向邮件服务器发送邮件或通过邮件服务器接收邮件时,作为客户,邮件服务器作为服务器。但当邮件服务器之间通过SMTP传输邮件时,发送邮件的邮件服务器为客户,接收邮件的邮件服务器为服务器。
整个邮件传输过程由下述步骤组成:
①用户通过发送端用户代理编辑邮件;
②发送端用户代理通过SMTP将邮件传输给发送端邮件服务器;
③发送端邮件服务器通过SMTP将邮件传输给接收端端邮件服务器;
④接收端用户代理通过POP3从接收端邮件服务器读取邮件;
⑤接收端用户代理向用户显示邮件内容。
2.SMTP发送邮件操作过程
电子邮件传输过程由发送端用户代理发起,由于SMTP是基于TCP的应用层协议,因此,SMTP发送邮件操作过程分为TCP连接建立过程、SMTP会话建立过程、发送邮件过程、释放SMTP会话过程和释放TCP连接过程。
(1)TCP连接建立过程
发送端用户代理首先必须建立和邮件服务器之间的TCP连接,在TCP连接成功建立后,进入SMTP会话建立过程。
(2)SMTP会话建立过程
由邮件服务器向用户代理发送服务器就绪的状态信息。用户代理在接收到邮件服务器就绪的状态信息后,向邮件服务器发送HELO命令,表示要求向邮件服务器发送邮件,如图9.21所示,命令中给出发送端邮件服务器域名。如果邮件服务器有能力接收邮件,就向用户代理发送服务器OK状态消息。此时,完成SMTP会话建立过程。
(3)发送邮件过程
成功建立SMTP会话后,用户代理可以开始向邮件服务器发送邮件的过程。用户代理通过MAIL命令开始邮件发送过程,MAIL命令中给出邮件的发信人地址,如果邮件服务器已准备好接收邮件,就向用户代理发送接收就绪状态信息。用户代理随后通过RCPT命令向邮件服务器发送收信人地址。如果在邮件服务器之间传输邮件,客户为发送邮件的邮件服务器,服务器为收信人信箱所在的邮件服务器,因此,它可以在接收邮件前,先判别是否存在收信人地址指定的信箱,如果存在,则通过向发送邮件的邮件服务器发送接收就绪,允许发送邮件的邮件服务器发送邮件。但在用户代理和邮件服务器之间传输邮件时,本地邮件服务器并不知道是否确实存在收信人地址指定的信箱,因此,在没有确认由收信人地址指定的邮件服务器和信箱已经就绪的情况下,就允许用户代理发送邮件。如果在稍后向由收信人地址指定的邮件服务器发送邮件时失败,就以邮件方式通知用户代理:邮件发送失败。一旦用户代理接收到接收就绪状态信息,就开始通过DATA命令发送邮件内容,邮件服务器在接收到完整的邮件内容后,向用户代理发送正确接收状态信息,此时,邮件传输过程结束。
(4)SMTP会话释放过程
完成邮件传输过程后,由用户代理发起SMTP会话释放过程。
(5)TCP连接释放过程
由用户代理发起与邮件服务器之间的TCP连接释放过程。
发送端邮件服务器将接收到的邮件存储在邮件缓冲器中,在方便的时候,通过STMP将其发送给接收端邮件服务器。发送端邮件服务器和接收端邮件服务器通过SMTP传输邮件的过程和发送端用户代理和发送端邮件服务器传输邮件过程相同,接收端邮件服务器接收到邮件后,将其存放在由收信人E-MAIL地址指定的信箱,如图9.21所示的[email protected]。
3. POP3读取邮件操作过程
由接收端用户代理发起读取电子邮件过程,由于POP3是基于TCP的应用层协议,因此,POP3读取邮件操作过程分为TCP连接建立过程、POP3会话建立过程、读取邮件过程、释放POP3会话过程和释放TCP连接过程。
(1)TCP连接建立过程
接收端用户代理首先建立和接收端邮件服务器之间的TCP连接,在TCP连接成功建立后,开始POP3会话建立过程。
(2)POP3会话建立过程
由邮件服务器向用户代理发送服务器就绪状态信息。用户代理在接收到邮件服务器就绪的状态信息后,开始登录过程。它先向邮件服务器发送用户名,邮件服务器确认是注册用户后,向用户代理发送用户名正确状态信息,用户代理接收到用户名正确状态信息后,再向邮件服务器发送口令,邮件服务器确认用户名和口令和某个注册信箱匹配后,向用户代理发送成功登录状态信息。
(3)读取邮件过程
用户代理通过FETCH命令从邮件服务器读取邮件,POP3在读取邮件后,通过DELETE命令从信箱中删除已读取的邮件。
(4)POP3会话释放过程
完成读取邮件过程后,由用户代理发起POP3会话释放过程。
(5)TCP连接释放过程
由用户代理发起与邮件服务器之间的TCP连接释放过程。
9.5.2 电子邮件信息格式
1.SMTP邮件格式
SMTP邮件首部由关键词和参数组成,中间用冒号分隔。常见的关键词如下:
Date:给出邮件发送日期、时间。
From:给出发信人名称和邮箱地址。
Subjicet:给出邮件主题,用于向收信人提示邮件内容。
To:给出收信人邮箱地址。
Cc:一封邮件可以抄送给多个收信人,给出抄送者的邮箱地址。
SMTP邮件体给出邮件内容。SMTP只能传输7位ASCII码,因此,无法传输由任意二进制位流构成的邮件体,如可执行文件和包含非英语国家文字的文档。为了解决这一问题,提出了通用Internet邮件扩充(Multipurpose Internet Mail Extension,MIME)。
2.MIME邮件格式
MIME主要包括以下三部分内容:
l 5个新的邮件首部字段,用于提供有关邮件体的信息;
l 定义了多种邮件内容格式,对多媒体电子邮件的表示方法进行了标准化;
l 定义了传送编码,可对任何内容格式进行转换,使其能够被SMTP邮件系统正常传输。
图8.27给出了MIME和SMTP的关系,发送用户需要传输的邮件内容可以是任何二进制位流,这些内容被组织成MIME格式,然后转换成适合经过SMTP邮件系统传输的编码格式。同样,接收端SMTP代理首先将邮件内容还原成MIME格式,然后提交给接收用户,接收用户从MIME格式中提取出由任意二进制位流组成的邮件内容。
MIME邮件格式如图8.28所示,它在SMTP首部的基础上增加了5个首部,分别是:
MIME-Version:版本号,目前为1.0。
Content-Type:通过类型/子类型参数说明邮件体内容类型。
Content-ID:内容标识符,唯一标识指定邮件内容。
Content-Transfer-Encoding:用于说明实际传送的邮件的编码方式。
Content-Description:描述邮件体对象的可读字符串。
表8.2 MIME Content-Type参数组合及含义
类型 |
子类型 |
说明 |
Text |
Plain |
无格式文本,简单ASCII字符串。 |
Enriched |
提供较多格式灵活性的文本类型。 |
|
Multpart |
Mixed |
邮件有多个子报文组成,多个不同子报文相互独立,但一起传输,并按照在邮件中的顺序提供给收件人。 |
parallel |
和Mixed基本相同,但提供给收件人时,没有给各个子报文定义顺序。 |
|
Alternative |
不同子报文是同一信息的不同版本,提供最佳版本给收件人。 |
|
Digest |
和Mixed基本相同,但每一个子报文是一个完整的rfc822邮件。 |
|
Message |
rfc822 |
rfc822邮件 |
Partial |
为传输一个超大邮件,以对收件人透明的方式分割邮件。 |
|
External-body |
包含一个指向存储在其他地方的对象的指针。 |
|
Image |
jpeg |
JPEG格式图像,JFIF编码。 |
gif |
GIF格式图像 |
|
Video |
mpeg |
MPEG格式动画 |
Audio |
Basic |
单通道8位m律编码,8kHz采样速率。 |
Application |
PostScript |
Adobe Postscript |
Octet-stream |
不间断字节流。 |
表8.3 MIME传送编码
编码 |
说明 |
7bit |
数据由短行(每行不超过1000字符)的7位ASCII字符表示。 |
8bit |
存在非标准ASCII字符,即最高位置1的8位字节。 |
binary |
不仅允许包含非标准ASCII字符。而且每行长度可以超过1000字符。 |
quoted-printable |
一种既实现用ASCII字符表示数据,又尽可能保持原来的可读性的编码。 |
base64 |
一种用64个8位二进制表示的可打印ASCII字符,表示任意6位二进制数的编码。 |
x-token |
用于命名非标准编码 |
表8.2给出了MIME支持的邮件体内容类型,可以看出,MIME邮件体不再仅仅由标准ASCII码组成,可以是任意二进制位流,包括图像、动画和音频。表8.3给出了编码邮件体内容的编码方式,最常用的是Base64编码,它将任意二进制位流以6位为单位分组,在ASCII字符集中选择64个可打印字符,对应6位二进制数的64种不同的值。每一种6位二进制数值用对应的8位可打印ASCII码表示,以此将邮件体任意二进制位流编码为一组可打印的ASCII字符。
Date:Mon,16 Mar 2009,11:11:11
From:[email protected]
Subject:Weekend Plan
MIME-Version:1.0
Content-Type:multipart/mixed;boundary=ZZYYXX
--ZZYYXX
CBD和DEF:
周末郊外踏青,后面附郊外风景照。
ABC
--ZZYYXX
Content-Type:image/gif
Content-Transfer-Encoding:base64
(风景照像素数据)
--ZZYYXX--
以上是一个MIME邮件,它由两个独立的子报文组成,一个只包含字符信息的子报文和一个包含图像数据的子报文,首部中关键词Content-Type:后面的参数multipart/mixed说明了这一点。boundary=ZZYYXX定义了分隔字符串,如果出现紧跟两个连字符“--”后面的字符串“ZZYYXX”,表明新的子报文开始。分隔字符串后面紧跟两个连字符“--”,表明整个multipart结束。
-课程先导语
--先导语
-1.1 网络内涵
--网络内涵
-1.2 互联网发展过程
--互联网发展过程
-1.2 互联网发展过程--作业
-1.3 交换方式
--电路交换
-- 虚电路交换
--数据报交换
--三种交换方式比较
--html
-1.3 交换方式--作业
-1.4 计算机网络体系结构和协议
--分层结构
--OSI体系结构
-1.4 计算机网络体系结构和协议--作业
-第一讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-2.1 数据传输系统
-2.1 数据传输系统--作业
-2.2 信号
--2.2 信号
-2.2 信号--作业
-2.3 编码和调制
--2.3-1 编码
--2.3-2 调制
-2.3 编码和调制--作业
-2.4 差错控制
-2.4 差错控制--作业
-2.5 传输媒体
--2.5 传输媒体
-2.5 传输媒体--作业
-2.6 Packet Tracer6.2使用说明
-第二讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-以太网发展过程与内容简介
-以太网发展过程与内容简介--作业
-3.1 总线形以太网
-3.1 总线形以太网--作业
-3.2 网桥与冲突域分割
-3.2 网桥与冲突域分割--作业
-3.3 交换式以太网与VLAN
-3.3 交换式以太网与VLAN--作业
-3.4 以太网标准
-3.4 以太网标准--作业
-第三讲内容的启示
--html
-例题分析
--例题分析
-案例设计
--案例设计
-测验--作业
-本讲内容简介
--无线局域网
-4.1 无线局域网概述
-4.1 无线局域网概述--作业
-4.2 无线局域网应用方式
-4.2 无线局域网应用方式--作业
-4.3 无线局域网MAC层
-4.3 无线局域网MAC层--作业
-4.4 终端接入无线局域网过程
-4.4 终端接入无线局域网过程--作业
-4.5 无线局域网设计和分析
-第四讲内容的启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- IP与网络互连
-5.1 网络互连机制
-5.1 网络互连机制--作业
-5.2 网际协议
-5.2 网际协议--作业
-5.3 IP分组传输过程
-5.3 IP分组传输过程--作业
-5.4 路由表建立过程
-5.4 路由表建立过程--作业
-5.5 IP over以太网
-5.5 IP over以太网--作业
-5.6 三层交换机与VLAN间通信过程
-5.7 Internet控制报文协议
-5.7 Internet控制报文协议--作业
-第五讲内容启示
--html
-案例设计
--案例设计
-例题分析
-测验--作业
-本讲内容简介
--本讲内容简介
-6.1 Internet接入控制机制
-6.1 Internet接入控制机制--作业
-6.2 以太网和ADSL接入技术
-6.2 以太网和ADSL接入技术--作业
-6.3 家庭局域网接入方式与无线路由器
-6.3 家庭局域网接入方式与无线路由器--作业
-6.4 接入综合演示实验
-6.4 接入综合演示实验--作业
-第六讲内容的启示
--html
-例题分析
--第六讲 例题分析
-测验--作业
-本讲内容简介
--传输层
-7.1 传输层服务特性
--传输层服务特性
-7.1 传输层服务特性--作业
-7.2 端口号
--端口号
-7.3 用户数据报协议UDP
-7.3 用户数据报协议UDP--作业
-7.4 传输控制协议TCP
--TCP特点和格式
-- TCP的几点说明
-7.4 传输控制协议TCP--作业
-第七讲内容启示
--html
-例题分析
--例题分析
-测验--作业
-本讲内容简介
-- 应用层
-8.1 应用结构
--应用结构
-8.1 应用结构--作业
-8.2 域名解析
-8.2 域名解析--作业
-8.3 动态主机配置协议
-8.3 动态主机配置协议--作业
-8.4 万维网
-- 万维网
-8.4 万维网--作业
-8.5 电子邮件
--html
-8.6 文件传输协议
--html
-例题分析
--例题分析
-案例设计
--CH8 案例设计
-应用层启示
--html
-测验--作业
-本讲内容简介
-9.1 网络安全概述
-9.1 网络安全概述--作业
-9.2 网络安全基础
-9.2 网络安全基础--作业
-9.3 病毒检测与防御技术
-9.3 病毒检测与防御技术--作业
-9.4 以太网安全技术
-9.4 以太网安全技术--作业
-9.5 无线局域网安全技术
-9.5 无线局域网安全技术--作业
-9.6 防火墙
-9.6 防火墙--作业
-9.7 安全协议
--9.7 安全协议
-9.7 安全协议--作业
-例题分析
--例题分析
-防火墙演示实验
-- 防火墙演示实验
-案例设计
--案例设计
-网络安全的启示
--html
-测验--作业
-附录1:综合应用分析
--综合应用分析
-附录2:Cisco实际设备网络构建与配置
-期末考试--考试试题