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. ssh免交互

    sshpass -p the_password ssh -o StrictHostKeyChecking=no root@domainname_or_ip remote_command  #远程执行命 ...

  2. linux子网掩码修改记录

    1.输入密码进入linux,并且进入root2.输入ifconfig.返回网卡信息,释:其中eno1为当前以太网名称.Inet IP/子网掩码位置数 Bcast广播地址 或者mask子网掩码3.修改子 ...

  3. sql注入的一丢丢

  4. vue3 + element plus 使用字节跳动图标

    使用场景: 提一下vue2 用法>> 下面回到正题 vue3 用法 1  安装包: npm install @icon-park/vue-next --save 2  字节跳动图标库取图地 ...

  5. BFS算法套路框架

    一.概念 1.定义 Broad First Search 2.与DFS区别 BFS找到的路径最短 3.本质 找出图中从起点到终点的最近距离 二.二叉树的最小高度111 1.代码 /** * Defin ...

  6. 【Java SE】课程目录

    〇.课程简介 一.前言入门 二.数据类型.运算符.方法 三.流程控制 四.Idea.方法 五.数组 六.类.对象.封装.构造 七.Scanner类.Random类.ArrayList类 八.Strin ...

  7. C++日期和时间编程总结

    一,概述 二,C-style 日期和时间库 2.1,数据类型 2.2,函数 2.3,数据类型与函数关系梳理 2.4,时间类型 2.4.1,UTC 时间 2.4.2,本地时间 2.4.3,纪元时间 2. ...

  8. Go 快速入门指南 - 序言

    这本书是写什么的? 这是一本 Go 语言快速入门手册,目标读者是有任一编程语言基础,希望以最快的时间 (比如一个周末) 入门 Go 语言. 这本书应该怎么读? 书中几乎没有较长篇幅的理论知识,更多的是 ...

  9. 分布式日志:Exceptionless的安装与部署

    安装步骤 首先exceptionless依赖elasticsearch,而elasticsearch需要java环境,所以先安装jdk jdk下载地址:https://www.oracle.com/t ...

  10. Python3.7.3环境搭建

    Python3.7.3安装(Win10) 到2019年初,Python3已经更新到了Python3.7.3,Python有两个大版本Python2和Python3,Python3是现在和未来的主流. ...