计算机网络基础06-Email应用
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 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。IMAP是有状态的
计算机网络基础06-Email应用的更多相关文章
- javaSE基础06
javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...
- javascript基础06
javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...
- 计算机网络基础——OSI七层网络模型
计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称 ...
- 转帖--计算机网络基础知识大总汇 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是 ...
- socket编程之中的一个:计算机网络基础
在開始学习网络之前先复习下计算机网络基础吧. 鲁迅说,天下文章一大抄.看你会炒不会炒,基础知识就抄抄书吧. 一 分层模型 1 为什么分层 为了简化网络设计的复杂性.通讯协议採用分层结构.各层协议之间既 ...
- Flask基础(06)-->视图常用逻辑
Flask基础(06)-->视图常用逻辑 返回json 重定向:url_for 自定义状态码 返回json:在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中 ...
- 计算机网络基础笔记 运输层协议UDP/TCP
目录 UDP 首部结构 主要特点 TCP 首部结构 主要特点 TCP 可靠性实现 停止等待ARQ协议 连续ARQ协议&滑动窗口协议 拥塞控制 TCP 运输连接管理 连接建立:三次握手 连接释放 ...
- Python网络编程基础 ❶ 计算机网络基础 初用socket模块
1.计算机网络基础 C/S 客户端/服务器端 B/S 浏览器端/服务器端 mac地址,ip地址,子网掩码,与计算得到网段,端口号每台计算机的网卡都有全球唯一的地址,在生产时已经写进去了. ip地址 ...
- 计算机网络基础之IP地址详解
计算机网络基础之IP地址详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IP地址概述 1>.什么是IP地址 我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采 ...
- 计算机网络基础之TCP/IP 协议栈
计算机网络基础之TCP/IP 协议栈 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.TCP/IP 协议栈概述 1>.什么是TCP/IP协议栈 Transmission C ...
随机推荐
- vulnhub靶场之VIKINGS: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...
- codeforces补题计划
11.15 Codeforces Round #833 (Div. 2) 知识点: D:高位和对低位无影响 E:笛卡尔树上dp 补题传送门
- requests模块/openpyxl模块/简单爬虫实战
内容概要 第三方模块的下载及使用 网络爬虫及requests模块 网络爬虫实战爬取二手房信息 自动化办公领域模块openpyxl 练习题及答案 第三方模块的下载 第三方模块就类似与别人写好的模块,我们 ...
- vivo大数据日志采集Agent设计实践
作者:vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中,数据采集是其中的首要环节.然而,当前行业内的相关开源数据采集组件,并无法满足企业大规模数据采集的需求与有效的数据采集 ...
- day10 Test
public class Test{ public static void main(String[] args){ fun1(); } /**1. * 有2个数组,第一个数组内容为:[黑龙江省,浙江 ...
- 下载安装MinGW-w64详细步骤
一.MinGW-w64介绍 MinGW 的全称是:Minimalist GNU on Windows ,实际上是将gcc(c/c++编译器)移植到了 Windows 平台下,并且包含了 Win32AP ...
- 【大数据面试】【框架】kafka:组成、台数/参数配置、持久化、ISR队列、宕机、丢数据、重复数据、数据积压、优化各种配置(刷盘、存盘、副本、压缩)、zk、其他
一.基本信息 1.组成 生产者 broker 消费者 zookeeper:brokerid.consumer信息(不包含生产者的信息) 2.需要安装多少台 2 * (生产者的峰值生产速率 * 副本 / ...
- 视图 触发器 事务 MVCC 存储过程 MySQL函数 MySQL流程控制 索引的数据结构 索引失效 慢查询优化explain 数据库设计三范式
目录 视图 create view ... as 触发器 简介 创建触发器的语法 create trigger 触发器命名有一定的规律 临时修改SQL语句的结束符 delimiter 触发器的实际运用 ...
- 线程、GIL全局解释器锁、进程池与线程池
目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 多线程实现TCP服务端并发 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程 ...
- Kotlin + SpringBoot + JPA 服务端开发
Kotlin + SpringBoot + JPA 服务端开发 本篇主要介绍一下 kotlin + springboot的服务端开发环境搭建 1.概述 Kotlin 是一个基于JVM的编程语言, 是I ...