因特网中的电子邮件
和普通的邮件一样,电子邮件是一种 异步通信媒介,就是当我们方便的时候就可以进行邮件的收发,不用和他人商量好了什么时间进行收发工作。特性:包括具有附件、超链接、HTML格式文本和图片的报文
主要组成部分: 用户代理、邮件服务器、简单邮件传输协议(SMTP)
用户代理允许用户阅读、回复、转发、保存、撰写报文。当用户撰写完毕之后,用户的邮件代理向其邮件服务器发送邮件,此时邮件就存在于服务器的 外出报文队列中。当接收邮件的用户需要阅读报文的时候,他的用户代理在其邮件服务器的邮箱中获取报文。
典型的发送过程:
- 从发送方的用户代理开始,传输到发送方的邮件服务器
- 传输到对方的邮件服务器中,然后被分发到邮件接收方的邮箱中
接收一方需要读取报文的时候,他的邮件服务器通过用户名和密码来鉴别收信一方的身份
发送一方如何处理接收方的邮件故障呢?如果发送一方的服务器不能够将邮件交付给接收方的服务器,那么发送方的邮件服务器就会在一个 报文队列中保存报文,每隔30min重新发送,如果几天后还是不行就删掉并且发消息给发送方
SMTP
发送传输的过程同上文讲述的是一致的,下面看一个实例
SMTP客户(C)和SMTP服务器(S)之间交换报文文本的示例。
客户的主机名是:
crepes.fr
, 服务器的主机名是:hamburger.edu
前面类似于HELO, MAIL, FROM,PCPT TO,DATA,QUIT都是自解释的,对应的服务器发送的数字都是代表他们接收到你上一行的内容了。从354下一行开始到以’.'结束的就是用户发送的邮件的内容了(每个邮件以CRLF.CRLF结束,其中CR和LF代表回车和换行)
其中SMTP用的是 持续连接(前几篇文章讲过):如果发送邮件服务器有多个报文发往同一个接收邮件服务器,可以通过同一个TCP连接发送所有的报文。对于每一个报文,客户用一个新的MAIL FROM:crepes.fr开始,同一个独立的句点表示该邮件的结束,当所有的邮件都发送完毕了才发送 QUIT
特点:
- 使用持久性连接
- 要求消息必须由7位ASCII码构成
- SMTP服务器利用CRLF.CRLF确定消息的结束
和THHP的简单对比
- HTTP主要是一个 拉协议(pull protocol),即是在方便的时候,某些人在Web服务器装载信息,用户使用HTTP从该服务器拉取这些信息。特别是TCP是由 想要接收文件的机器发起的。SMTP是一个 推协议(pull protocol),发送邮件服务器把文件推向接收邮件服务器,TCP是由 发送该文件的机器发送的
- SMTP要求每个报文采用7比特ASCII码格式
- HTTP将每个对象封装到它的HTTP响应报文中,而SMTP把所有的报文对象放在一个报文之中
邮件报文格式
当发送电子邮件的时候,一个包含环境信息的首部行位于报文体的前面,这些环境信息包括在一系列的首部行中。每个首部行必须包含From:首部行和一个To:首部行 一个首部行也许包含了一个Subject:首部行以及其他的首部行。
邮件的首部行和该报文的体用空行(即回车换行)进行分隔
典型样例:
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life.
MIME:多媒体邮件扩展
那你只能包含ASCII字符,如果我想传输其他的东西例如视频啊照片什么的应该如何进行传输呢?
A: 在邮件的头部增加额外的行声明:
- 邮件里面有多媒体内容
- 采用什么样的编码格式
- 用什么方式进行解码
扩展的样例:
邮件访问协议
我们的SMTP是一个邮件传输协议,那我们的接收方在接收邮件的时候也需要遵守一个邮件访问协议
POP:主要是认证你的信息和授权下载
IMAP:更加复杂的协议
HTTP:163,QQ Mail等
POP3协议
POP3的几种模式:
- 下载并且删除的模式:如果你在一台电脑接受、下载了邮件,你回到家用家中的电脑是不能够重读邮件的
- 下载并且保持模式:不同的客户端都可以保留消息的拷贝
- POP3是无状态的
IMAP协议:
- 所有的消息统一保存在一个地方:服务器
- 允许用户利用文件夹组织消息
- IMAP支持跨会话的用户状态:1.文件夹的名字2.文件夹与消息ID之间的映射