1 构成组件

  邮件客户端

  邮件服务器

  SMTP协议 Simple Mail Transfer Protocol

1.1 邮件客户端

  读写Email消息

  和服务器交互,收发消息

1.2 邮件服务器

  邮箱:每位用户都有一个邮箱,存储发给该用户的Email

  消息队列:存储等待发送的Email

1.3 SMTP协议(RFC2881)

  邮件服务器之间传递消息所使用的协议

  客户端:发送消息的服务器

  服务端:接受消息的服务器

2 为什么采用这种架构

  为什么不直接从发送端到接收端,而要通过服务器?

    1)不能保证接收端一直在线

    2)如果对方不在线,那么发送端就得不断重试,发送端也不能关闭,知道成功发送

3 传输层协议

  采用TCP(保证数据的可靠性)进行Email消息的可靠传输

4 Email其他说明

  1)端口25

  2)传输过程的三个阶段

    握手

    消息传输

    关闭

  3)采用命令/响应交互模式

    命令:ASCII文本(由于Email出现很早,最初设计,Email只能包含7位ASCII码)

    响应:状态码和语句

  4)它是异步的

5 SMTP交互示例

  

    服务器:220 这里是hamburger.edu服务器

  客户端:这里是crepes.fr

  服务器:250 很高兴见到你

  客户端:邮件发送者是<alice@crepes.fr>

  服务器:250 发送者没问题

  客户端:接受者<bob@hamburger.edu>

  服务器:250 接受者没问题

  客户端:我要开始发送了

  服务器:354 可以,.表示结束

  客户端:邮件内容....

  客户端:邮件内容....

  客户端:. 结束

  服务器:250 我接受到了邮件

  客户端:好的,结束

  服务器:221 连接已断开

6 手动尝试SMTP交互

  使用telnet软件

7 SMTP的特点

  使用持久性连接

  要求消息体必须由7位ASCII码构成

  SMTP服务器利用CRLF.CRLF确定消息的结束

8 和HTTP简要对比

  HTTP:拉式(网页去找服务器要资源)   SMTP:推式(服务器推送邮件到客户端)

  都使用命令/响应交互模式

  命令和状态码都是ASCII码

  HTTP:每个对象封装在独立的响应消息中

  SMTP:多个对象在由多个部分构成的消息中发送

9 SMTP协议中消息格式

  分为头部行和消息体

   头部行包括发送者和接受者,邮件标题

   消息体包含消息本身

10 MIME(多媒体邮件扩展协议)

  由于消息体只能是ASCII字符,那么图片视频等文件怎么发送呢?

  这就用到了MIME:多媒体邮件扩展协议(RFC 2045,2056)

  通过在邮件头部增加额外的行以申明MIDE的内容类型

  

11 邮件访问协议

    

  发送端发送邮件(SMTP)到达发送者邮件服务器,然后到达(SMTP)接受者邮件服务器,最后从接收者服务器到达接受者,这里不是采用的SMTP,而是邮件访问协议

  邮件访问协议:

    POP:Post Office Protocol

    IMAP:iNTERNRT mAIL Access Protocol

    HTTP:基于浏览器收发邮件时

1)POP3协议

  允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。很明显POP是无状态的

2)IMAP

  提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。同时,IMAPPOP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。IMAP是有状态的

计算机网络基础06-Email应用的更多相关文章

  1. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  2. javascript基础06

      javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...

  3. 计算机网络基础——OSI七层网络模型

    计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称 ...

  4. 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是 ...

  5. socket编程之中的一个:计算机网络基础

    在開始学习网络之前先复习下计算机网络基础吧. 鲁迅说,天下文章一大抄.看你会炒不会炒,基础知识就抄抄书吧. 一 分层模型 1 为什么分层 为了简化网络设计的复杂性.通讯协议採用分层结构.各层协议之间既 ...

  6. Flask基础(06)-->视图常用逻辑

    Flask基础(06)-->视图常用逻辑 返回json 重定向:url_for 自定义状态码 返回json:在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中 ...

  7. 计算机网络基础笔记 运输层协议UDP/TCP

    目录 UDP 首部结构 主要特点 TCP 首部结构 主要特点 TCP 可靠性实现 停止等待ARQ协议 连续ARQ协议&滑动窗口协议 拥塞控制 TCP 运输连接管理 连接建立:三次握手 连接释放 ...

  8. Python网络编程基础 ❶ 计算机网络基础 初用socket模块

    1.计算机网络基础 C/S  客户端/服务器端 B/S  浏览器端/服务器端 mac地址,ip地址,子网掩码,与计算得到网段,端口号每台计算机的网卡都有全球唯一的地址,在生产时已经写进去了. ip地址 ...

  9. 计算机网络基础之IP地址详解

    计算机网络基础之IP地址详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IP地址概述 1>.什么是IP地址 我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采 ...

  10. 计算机网络基础之TCP/IP 协议栈

    计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...

随机推荐

  1. vulnhub靶场之VIKINGS: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

  2. codeforces补题计划

    11.15 Codeforces Round #833 (Div. 2) 知识点: D:高位和对低位无影响 E:笛卡尔树上dp 补题传送门

  3. requests模块/openpyxl模块/简单爬虫实战

    内容概要 第三方模块的下载及使用 网络爬虫及requests模块 网络爬虫实战爬取二手房信息 自动化办公领域模块openpyxl 练习题及答案 第三方模块的下载 第三方模块就类似与别人写好的模块,我们 ...

  4. vivo大数据日志采集Agent设计实践

    作者:vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中,数据采集是其中的首要环节.然而,当前行业内的相关开源数据采集组件,并无法满足企业大规模数据采集的需求与有效的数据采集 ...

  5. day10 Test

    public class Test{ public static void main(String[] args){ fun1(); } /**1. * 有2个数组,第一个数组内容为:[黑龙江省,浙江 ...

  6. 下载安装MinGW-w64详细步骤

    一.MinGW-w64介绍 MinGW 的全称是:Minimalist GNU on Windows ,实际上是将gcc(c/c++编译器)移植到了 Windows 平台下,并且包含了 Win32AP ...

  7. 【大数据面试】【框架】kafka:组成、台数/参数配置、持久化、ISR队列、宕机、丢数据、重复数据、数据积压、优化各种配置(刷盘、存盘、副本、压缩)、zk、其他

    一.基本信息 1.组成 生产者 broker 消费者 zookeeper:brokerid.consumer信息(不包含生产者的信息) 2.需要安装多少台 2 * (生产者的峰值生产速率 * 副本 / ...

  8. 视图 触发器 事务 MVCC 存储过程 MySQL函数 MySQL流程控制 索引的数据结构 索引失效 慢查询优化explain 数据库设计三范式

    目录 视图 create view ... as 触发器 简介 创建触发器的语法 create trigger 触发器命名有一定的规律 临时修改SQL语句的结束符 delimiter 触发器的实际运用 ...

  9. 线程、GIL全局解释器锁、进程池与线程池

    目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...

  10. Kotlin + SpringBoot + JPA 服务端开发

    Kotlin + SpringBoot + JPA 服务端开发 本篇主要介绍一下 kotlin + springboot的服务端开发环境搭建 1.概述 Kotlin 是一个基于JVM的编程语言, 是I ...