计算机网络基础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 ...
随机推荐
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(34)-Fiddler如何抓取微信小程序的包-上篇
1.简介 有些小伙伴或者是童鞋们说小程序抓不到包,该怎么办了???其实苹果手机如果按照宏哥前边的抓取APP包的设置方式设置好了,应该可以轻松就抓到包了.那么安卓手机小程序就比较困难,不是那么友好了.所 ...
- Idea在windows和mac中的一些快捷指令
从 Windows 过度到 Mac 必备快捷键对照表 Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Contro ...
- C#多线程之高级篇(上)
前言 抛开死锁不谈,只聊性能问题,尽管锁总能粗暴的满足同步需求,但一旦存在竞争关系,意味着一定会有线程被阻塞,竞争越激烈,被阻塞的线程越多,上下文切换次数越多,调度成本越大,显然在高并发的场景下会损害 ...
- 【深入浅出 Yarn 架构与实现】3-3 Yarn Application Master 编写
本篇文章继续介绍 Yarn Application 中 ApplicationMaster 部分的编写方法. 一.Application Master 编写方法 上一节讲了 Client 提交任务给 ...
- Redux 的困扰与如何技术选型
文章的名字我想了很久,备选项有"我再不推荐 Redux","Redux 为什么令我头疼","Redux 进化启示录"等等.通过这一系列名字我 ...
- 设计链表-LeetCode707 基础题
LeetCode链接:https://leetcode.cn/problems/design-linked-list/ 题目:设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属 ...
- 【每日一题】【快速排序过程、循环过程无=、递归参数】2022年1月16日-NC140 排序
快速排序 对时间复杂度和空间复杂度有要求 方法1:快速排序-递归 import java.util.*; public class Solution { /** * 代码中的类名.方法名.参数名已经指 ...
- referer的反爬和爬虫下载视频
一.缘由 在梨视频等一些网站中会使用防盗链作为反爬的基础方法,这个反爬并不严重,只是平时的时候需要多加留意.此次实现对应链接中梨视频的下载. 二.代码实现 #1.拿到contid #2.拿到video ...
- 我今天吃了SHI,请对下联
最近看到不少好玩的.实用的 Github 项目,就来给大家推荐一把. 1. 跨平台终端 Tabby(前身是 Terminus) 是一个可高度配置的终端模拟器和 SSH 或串口客户端,支持 Window ...
- OpenJudge 1.8.11 图像旋转
11:图像旋转 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数. ...