【计算机网络】因特网中的电子邮件

文章目录

  • 简单邮件传送协议SMTP
  • 邮件访问协议
    • POP3
    • IMAP
    • HTTP
  • 参考资料

电子邮件为异步通信媒介
因特网电子邮件系统
image.png
image.png
电子邮件系统的三个构件:用户代理、邮件服务器、邮件发送和读取协议
用户代理
User Agent 即UA
电子邮件客户端软件,用户与电子邮件系统的接口,如Apple Mail、Outlook
功能:实现邮件的撰写、显示、处理、通信
邮件服务器
Mail Server,邮件传输代理
功能:发送和接收邮件,向发信人报告邮件传送的情况,客户服务器模式
邮件发送和读取协议
简单邮件发送协议 SMTP:在UA向邮件服务器、邮件服务器之间发送邮件
邮局协议POP3:UA从邮件服务器读取邮件
注意

  1. 邮件服务器在电子邮件系统中是同时充当了客户和服务器两个角色,在UA向Mail Server发送邮件过程中Mail Server充当服务器,在该Mail Server发送邮件时充当客户端,在该Mail Server接收邮件时充当服务器。每台邮件服务器上既运行SMTP的客户端也运行SMTP的服务器端。
  2. SMTP和POP3(或IMAP)协议都使用TCP连接实现邮件可靠传输
  3. 邮件不会在互联网中的某个中间邮件服务器落地

举个例子
发送方Alice发电子邮件给接收方Bob
Alice撰写邮件,其UA向对应的Mail Server发送邮件,邮件被放在该Mail Server的外出报文队列中,Alice的Mail Server将邮件传输到Bob的Mail Server,邮件被分发到Bob的邮箱,当Bob要阅读邮件时,Bob的UA在其Mail Server的邮箱中取得该邮件。
术语说明
报文队列(message queue):存放从该Mail Server发送的邮件,若邮件在发送方Mail Server到接收方的Mail Server之间的传送失败,发送方的Mail Server将尝试重新发送。若一段时间后仍不能发送成功,则发送方Mail Server将删除该报文并将以电子邮件的形式通知发送方
邮箱(mailbox):每个接收方(如Bob)在对应的邮件服务器上有一个邮箱(mailbox),mailbox管理和维护着发送给接收方的报文
电子邮件
组成:由信封 (envelope) 和内容 (content) 两部分组成
envelope是电子邮件传输协议传送邮件的依据
地址格式:收件人邮箱名@邮箱所在主机的域名
举个例子
image.png

简单邮件传送协议SMTP

基本介绍
SMTP协议规定了在两个相互通信的 SMTP 进程之间建立TCP连接交换信息的方法,使用客户端服务器方式
通信三阶段
image.png

分析报文通过SMTP协议从发送方Mail Server到接收方Mail Server的传送过程

  1. 连接建立:包括建立TCP连接和SMTP连接的握手阶段
  2. 邮件传送:传送内容包括信封、首部、空行和邮件主体
  3. 连接释放:客户SMTP传送完所有报文后,释放TCP连接(这里的TCP连接是持久的)

建立TCP连接
三次握手
image.png
SMTP握手阶段
客户SMTP使用HELO命令,指示发送方主机名
服务器SMTP回答:“250 OK” ,表示已准备好接收。
image.png

邮件传送阶段
报文结束标志为回车换行.回车换行
image.png
连接释放
image.png

注意
SMTP用的是持续TCP连接,从同一个发送Mail Server到同一个接收Mail Server的报文可以通过同一个TCP连接发送。报文以MAIL FROM: xx作为开始标志

尝试SMTP通信
使用telnet命令
多媒体数据传输
更改电子邮件的内容部分
在首部中说明MIME-Version,数据编码格式,多媒体文件格式等信息
image.png
举个具体的例子
image.png
SMTP与HTTP对比
相同点:

  1. 作用:用于从一台主机向另一台主机传送文件。HTTP从Web服务器向Web客户传送文件;SMTP从一个邮件服务器向另一个邮件服务器传送文件。
  2. 文件传送过程中二者使用的都是持续的TCP连接进行可靠数据传输
  3. 二者都是应用层协议

不同点:

  1. HTTP是一个拉协议(pull protocol),用户使用使用客户端从服务器拉取数据,TCP连接是由想接收文件的机器发起的。SMTP是一个推协议(push protocol),发送邮件服务器把文件推向接收邮件服务器,TCP连接是由要发送该文件的机器发起的。
  2. SMTP协议要求报文数据采用7比特ASCII码格式。
  3. 对于包含多种数据类型的文档的处理。HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

关于客户Mail Server和服务器Mail Server的讨论
若接收方的Mail Server和UA都位于其PC上,则其PC必须不间断地运行着并一直保持在线,这并不现实。因此通常情况下,Mail Server是共享的且由用户的ISP进行维护,本地PC上运行UA
发送方Mail Server的引入解决了发送方UA无法到达一个不可达的目的地Mail Server的问题,即发送方的Mail Server可以重复尝试向接收方Mail Server发送报文直到接收方Mail Server变得可运行

邮件访问协议

引入原因
接收方从Mail Server上的邮箱取得邮件是一个拉操作,而SMTP是一个推协议,这是不能完成的。
需要引入一个能完成拉操作的协议,即邮件访问协议
邮件访问常用协议

  1. 第三版的邮局协议(PostOffice Protocol—Version 3 , POP3)
  2. 因特网邮件访问协议(Internet Mail Access Protocol,IMAP)
  3. HTTP协议
    image.png

POP3

使用客户服务器方式,基于TCP实现通信
用户代理(客户)打开一个到邮件服务器(服务器)端口 110上的TCP连接
工作的三个阶段

  1. 特许(authorization):UA发送(以明文形式)用户名和口令以鉴别用户。命令包括user < user name >pass < password >
  2. 事务处理:UA取回报文、对指定报文做删除标记、获取邮件的统计信息。命令包括listretrdele
  3. 更新:当用户发出quit命令结束POP3会话之后,Mail Server将删除被标记为删除的报文

IMAP

使用客户服务器方式,基于TCP实现通信,端口143,这是一个联机协议
提出原因
解决POP3不能在远程服务器上建立层次文件夹等问题
特点

  1. IMAP服务器把每个报文与一个文件夹联系起来,能够实现用户在远程Mail Server上创建文件夹、移动文件、阅读查询删除文件
  2. 允许UA只获取报文某些部分。举个例子,一个用户代理可以只读取一个报文的报文首部
  3. 要想查阅邮件,必须先联网

HTTP

使用Web浏览器作为UA,进行邮件收取和邮件发送
于是电子邮件报文可以使用HTTP协议而非STMP协议从发送方UA发送到发送方Mail Server,使用HTTP协议而非POP3或者IMAP协议从接收方Mail Server拉取到接收方UA
image.png
使用 HTTP POST方法提交要发送的邮件
使用 HTTP GET 方法读取邮件
传统UA和基于Web的UA比较
传统UA必须在计算机中安装用户代理软件且收发邮件不方便
基于Web的UA不需要在计算机中再安装用户代理软件,只要计算机能联网就能非常方便地收发电子邮件

参考资料

  1. James F.Kurose&Keith W.Ross Computer Networking A Top-Down Approach(7th ed) 中文版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145478.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试记录_

1&#xff1a;面试杉岩数据&#xff08;python开发&#xff09; 1.1.1 选择题 for(int i0;i<n;i){for(int j0;j<n;jji) } }O(n) * (O(0) O(n/1) O(n/2) O(n/3) ... O(n/n)) 在最坏情况下&#xff0c;内部循环的迭代次数为 n/1 n/2 n/3 ... n/n&#xff0c;这是…

【QT开发(6)】0926-QT 中加入 fastDDS 通信库的程序使用说明

在智能驾驶中&#xff0c;DDS有可能被广泛使用&#xff0c;因此推出这篇说明教程。 1、基于【QT开发&#xff08;5&#xff09;】教程的项目文档进行开发 2、安装DDS 查看《【eProsima Fast DDS&#xff08;1&#xff09;】安装eProsima Fast DDS》 至少安装: foonathan_m…

论文笔记(整理):轨迹相似度顶会论文中使用的数据集

0 汇总 数据类型数据名称数据处理出租车数据波尔图 原始数据&#xff1a;2013年7月到2014年6月&#xff0c;170万条数据 ICDE 2023 Contrastive Trajectory Similarity Learning with Dual-Feature Attention 过滤位于城市&#xff08;或国家&#xff09;区域之外的轨迹 过…

AOP:分页参数统一校验

需求说明 为了保证系统的安全性&#xff0c;需要对所有的 查询列表 接口&#xff0c;添加分页参数&#xff0c;并对分页参数进行校验&#xff0c; &#xff0c;保证参数的合法性。 比如&#xff0c; pageSize&#xff08;每页显示条数&#xff09;&#xff0c;如果不做校验&a…

完整指南:如何使用 Node.js 复制文件

文件拷贝指的是将一个文件的数据复制到另一个文件中&#xff0c;使目标文件与源文件内容一致。Node.js 提供了文件系统模块 fs&#xff0c;通过该模块可以访问文件系统&#xff0c;实现文件操作&#xff0c;包括拷贝文件。 Node.js 中文件拷贝方法 在 Node.js 中&#xff0c;有…

Python3数据科学包系列(一):数据分析实战

一: 数据分析高级语法&#xff1a;序列(Series) # -*- coding:utf-8 -*-from pandas import Seriesprint(-------------------------------------序列Series定义与取值-------------------------------------------) print("""Series序列可以省略,此时索引号默…

What is an HTTP Flood DDoS attack?

HTTP 洪水攻击是一种针对 Web 和应用程序服务器的第 7 层分布式拒绝服务 &#xff08;DDoS&#xff09; 攻击。HTTP 洪水攻击通过使用 HTTP GET 或 HTTP POST 请求执行 DDoS 攻击。这些请求是有效的&#xff0c;并且针对可用资源&#xff0c;因此很难防范 HTTP 洪水攻击。 匿名…

【AI视野·今日Robot 机器人论文速览 第四十四期】Fri, 29 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 29 Sep 2023 Totally 38 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;NCF,基于Neural Contact Fields神经接触场的方法实现有效的外部接触估计和插入操作。 (from FAIR ) 操作插入处理结果&am…

Go_原子操作和锁

原子操作和锁 本文先探究并发问题&#xff0c;再探究锁和原子操作解决问题的方式&#xff0c;最后进行对比。 并发问题 首先&#xff0c;我们看一下程序 num该程序表面看上去一步就可以运行完成&#xff0c;但是实际上&#xff0c;在计算机中是分三步运行的&#xff0c;如下…

相机数据恢复!详细步骤解析(2023新版)

和朋友在外面旅游用相机拍了好多有意义的照片和视频&#xff0c;但是导入电脑后不知道是被我删除了还是什么原因&#xff0c;这些照片都不见了&#xff0c;请问有方法恢复吗&#xff1f;” 在数字摄影时代&#xff0c;我们依赖相机记录珍贵的瞬间。然而&#xff0c;相机数据丢失…

LeNet网络复现

文章目录 1. LeNet历史背景1.1 早期神经网络的挑战1.2 LeNet的诞生背景 2. LeNet详细结构2.1 总览2.2 卷积层与其特点2.3 子采样层&#xff08;池化层&#xff09;2.4 全连接层2.5 输出层及激活函数 3. LeNet实战复现3.1 模型搭建model.py3.2 训练模型train.py3.3 测试模型test…

MyBatisPlus(七)等值查询

等值查询 条件查询&#xff1a;使用 Wrapper 对象&#xff0c;传递查询条件。 QueryWrapper&#xff08;不要使用&#xff09; 代码 Testvoid eq() {QueryWrapper<User> wrapper new QueryWrapper<>();wrapper.eq("name", "张三");List<…

httpserver 下载服务器demo

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…

Vue控制textarea可输入行数限制-案例

控制只能输入六行内容 UI部分代码 //我使用了antd ui库 <a-form-model-item ref"address_group" label"规则描述" prop"address_group" > <a-textarea:rows"6"style"width: 60%"placeholder"一次最多输入6行…

【数据结构】队列和栈

大家中秋节快乐&#xff0c;玩了好几天没有学习&#xff0c;今天分享的是栈以及队列的相关知识&#xff0c;以及栈和队列相关的面试题 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作…

MySQL数据查询性能如何分析--Explain介绍说明

1、Explain是什么 Explain是MySQL执行查看执行计划命令的指令&#xff0c;使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 2、Explain官网介绍 http://dev.mysql.com/doc/refma…

【MySQL】数据类型(二)

文章目录 一. char字符串类型二. varchar字符串类型2.1 char和varchar比较 三. 日期和时间类型四. enum和set类型4.1 set的查询 结束语 一. char字符串类型 char (L) 固定长度字符串 L是可以存储的长度&#xff0c;单位是字符&#xff0c;最大长度是255 MySQL中的字符&#xff…

Makefile学习

一、Makefile的介绍 1.1 什么是Makefile 相信在Linux系统中经常会用到make这个命令来编译程序&#xff0c;而执行make命令所依赖的文件便是Makefile文件&#xff0c;make命令通过Makefile文件编写的内容对程序进行编译。make命令根据文件更新的时间戳来决定哪些文件需要重新编…

纯css html 真实水滴效果

惯例,不多说直接上图 秉承着开源精神,我们将这段代码无私地分享给大家&#xff0c;因为我们深信&#xff0c;信息的共享和互相学习是推动科技进步的关键。我们鼓励大家在使用这段代码的同时&#xff0c;也能够将其中的原理、思想和经验分享给更多的人。 这份代码是我们团队用心…

一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据

一、目的 经过6个月的奋斗&#xff0c;项目的离线数仓部分终于可以上线了&#xff0c;因此整理一下离线数仓的整个流程&#xff0c;既是大家提供一个案例经验&#xff0c;也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 &#xff08;五&#xff09;步骤五、在Hive的…