应用层——电子邮件、MIME、简单网络管理协议SNMP
电子邮件
电子邮件系统采用三个主要构件组成:用户代理、邮件服务器、电子邮件所需的协议
我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存再转发邮件的缓存,发送方使用用户代理通过邮件发送协议。例如SMTP将邮件发送给发送方。邮件服务器发送方邮件服务器同样通过邮件发送协议,将该邮件发送送给接收方。邮件服务器接收方在方便的时候,需要用户代理通过邮件读取协议。
电子邮件发送与接收的过程
1、发送方的用户代理作为SMTP客户与发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接是由SMTP协议来发送邮件给发送方邮件服务器,
2、发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送已收到的待转发邮件给接收方
3、邮件服务器接收方的用户代理作为pop 3客户与接收方邮件服务器中的pop 3服务器进行TCP连接。
4、然后基于这条连接使用pop 3协议,从接收方邮件服务器读取邮件
Q1:可不可以让邮件服务器程序就在发送方和接受方的计算机中运行。
A1:不行,并非所有计算机都可以运行邮件服务器程序——没有足够存储空间,或是没有足够CPU能力来运行邮件服务器程序。
其次,邮件服务器程序必须不间断地运行。
简单邮件传送协议SMTP
我们以发送方邮件服务器使用SMTP协议给接收方,邮件服务器发送待转发的邮件为例。
建立连接
1、发送方邮件服务器周期性的扫描邮件缓存的。如果发现有待转发的邮件,则发送方邮件服务器中的SMTP客户会与接收方邮件服务器中的SMTP服务器进行TCP连接, 端口号为25,
2、SMTP客户就可以基于这条TCP连接给SMTP服务器发送SMTP命令共14条,SMTP服务器也会给SMTP客户发送相应的应答共21种,SMTP客户与服务器之间通过命令与应答的交互方式,最终实现SMTP客户发送邮件给SMTP服务器。
传输电子邮件
SMTP服务器未能准备的代码解释
(其他的后续在整理)
连接释放
电子邮件的信息格式
首部中包含有一些关键字,后面加上冒号,例如关键字From后面填入发件人的电子邮件地址,一般由邮件系统自动填入关键字To,后面填入一个或多个收件人的电子邮件。
关键字CC后面填入一个或多个收件人以外的抄送人的电子邮件地址,抄送人收到邮件后可看可不看,邮件可回可不回。
邮件关键字Subject后面填入邮件的主题,它反映了邮件的主要内容。
最重要的关键字是To和Subject,它们往往是必填选项。
用户写好首部后,邮件系统将自动地将信封所需的信息提取出来,并写在信封上。所以用户不需要填写电子邮件信封上的信息。
在填写完首部各关键字的内容后,用户还需要撰写邮件的主体部分,这才是用户想传递给收件人的核心信息。
通用互联网邮件扩充MIME
所以,提出了多用途因特网邮件扩展MIME
MIME依旧使用原来的邮件格式,且增加了邮件主体结构,并定义了传送非ASCLL码的编码规则。
MIME主要包括以下三部分内容:
首部字段的内容及意义
内容传送编码Content-Transfer-Encoding
内容传送编码用于将非ASCII字符的数据转换为可通过电子邮件传输的ASCII字符格式。
由于传统的SMTP协议只能传输7位ASCII码字符,因此需要对包含非ASCII字符的数据进行编码,以确保其在传输过程中不被损坏。
Quoted-printable
这种编码方法的要点就是对于所有可打印的ASCII码,除特殊字符等号“=”外,都不改变。
首位是1的说明需要被改写内容,将每个字节的二进制代码拆成2个十六进制数字来表示,并且加上一个“=”。相当于将1个字节变成了3个字节。
Base-64编码
将二进制代码划分为24位长的单元,在将24位长单元划分为4个6位组,6位组转化ASCLL码的方式如下:
6位的二进制代码共有64种不同的值,从0到63——用A表示0,B表示1,直到26个大写字母排完后再是26个小写字母,再后面是10个数字,最后“+”表示62,“/”表示63。
再用两个连在一起的等号“==”和一个等号“=”,分别表示最后一组的代码只有8位或16位。回车和换行都忽略,它们可以插入任何地方。
内容类型
mixed子类型:允许单个报文含有多个相互独立的子报文,每个子报文可有自己的类型和编码。
alternative子类型:允许单个报文含有同一数据的多种表示。给多个使用不同硬件和软件系统的收件人发送备忘录这类报文就很有用。
parallel子类型:允许单个报文含有可同时显示的各个子部分。
digest子类型:允许单个报文含有一组其他报文。
MIME的举例
简单网络管理协议SNMP
网络管理基本概念
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。网络管理常简称为网管。
管理站又称为管理器,是整个网络管理系统的核心,它通常是个有着良好图形界面的高性能的工作站,并由网络管理员直接操作和控制。所有向被管设备发送的命令都是从管理站发出的。
管理站中的关键构件是管理程序。管理程序在运行时就成为管理进程。管理站或管理程序都可称为管理者或管理器
在被管网络中有很多被管设备,被管设备可以是主机、路由器、打印机或调制解调器等。 被管设备有时可称为网络元素或网元,且在被管设备中也有一些不能被管的对象。
在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信。这些运行着的程序叫作网络管理代理程序,或简称为代理。代理程序在管理程序的命令控制下,在被管设备上采取本地行动。
其中还有一个重要构件式网络管理协议,简称为网管协议。之后讨论它的作用。
简单网络管理协议SNMP中的管理程序和代理程序按客户服务器方式工作。管理程序运行SNMP客户程序,而代理程序运行SNMP服务器程序。在被管对象上运行的SNMP服务器程序不停地监听来自管理站的SNMP客户程序的请求,一旦发现了,就立即返回管理站所需的信息,或执行某个动作。
在网管系统中往往是一个客户程序与很多的服务器进行交互。
网络管理有个基本原理:必然会给该对象添加一些软件或硬件,但这种“添加”对原有对象的影响必须尽量小些。
若网络元素使用的不是SNMP协议而是另一种网络管理协议,那么SNMP协议就无法控制该网络元素。这时可使用委托代理。委托代理能提供如协议转换和过滤操作等功能对被管对象进行管理。
SNMP的网络管理由三个部分组成,即SNMP本身、管理信息结构SMI和管理信息库MIB。
SNMP定义了管理站和代理之间所交换的分组格式,所交换的分组包含各代理中对象(变量)名。SNMP负责读取和改变这些数值。
SMI定义了命名对象和定义对象类型(包括范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。这样做是为了确保网络管理数据的语法和语义无二义性。
MIB在被管理的实体中创建了命名对象,并规定了其类型。
总之,SMI建立规则,MIB对变量进行说明,而SNMP完成网管动作
SNMPV3的安全特性
只有被授权的人员才有资格执行网络管理的功能(如关闭某一条链路 ),和读取有关网络管理的信息(如读取一个配置文件的内容)。
管理信息结构SMI
SMI的功能有三个:
被管对象的命名
SMI规定,所有被管对象都必须处在对象命名树。
这棵树形结构为每个被管理对象提供了一个唯一的位置,从而确保了在整个网络中对象的标识是唯一的。对象命名树的根节点没有名字,其下分为多个分支,每个分支代表不同的组织或标准机构。
在mib-2下面包含了所有被SNMP管理的对象
被管对象的数据类型
SMI使用基本的抽象语法记法1来定义数据类型,但又增加了一些新的定义。
任何数据都有两种重要的属性,即“值”与“类型”
SMI把数据类型分为两大类:简单类型和结构化类型。
简单类型:
结构化类型:
相关文章:

应用层——电子邮件、MIME、简单网络管理协议SNMP
电子邮件 电子邮件系统采用三个主要构件组成:用户代理、邮件服务器、电子邮件所需的协议 我们可以简单的认为邮件服务器中有很多邮箱,还有用来缓存再转发邮件的缓存,发送方使用用户代理通过邮件发送协议。例如SMTP将邮件发送给发送方。 邮件服…...
我与C语言二周目邂逅vlog——8.编译和链接
C语言中的编译和链接过程详细总结 1. 概述 C 语言是一种经典的系统级编程语言,其开发过程包括多个阶段,其中最关键的就是编译和链接过程。编译和链接的理解对于掌握 C 语言程序的构建至关重要。在本篇文章中,我们将深入讲解 C 语言的编译和…...

Views Page 视图页面
下图中显示的 Views 页面允许自定义网格级别及其相应的 View。 Views (视图) 页面包含两个主要部分: 关卡设计师;请注意,其他设计器页面为在关卡设计器中选择的 View 提供设置;Properties (属性) 窗口&…...

Win10 IDEA远程连接HBase
Win10 IDEA远程连接HBase Win10 IDEA连接虚拟机中的Hadoop(HDFS) 关闭Hadoop和Hbase 如果已经关闭不需要走这一步 cd /usr/local/hbase bin/stop-hbase.sh cd /usr/local/hadoop ./sbin/stop-dfs.sh获取虚拟机的ip 虚拟机终端输入 ip a关闭虚拟机…...

1.centos 镜像
centos 它有官网的下载地址:https://vault.centos.org/ 选择想要的版本,我选择 centos7.8 进入到镜像目录 isos 选择 x86_64 选择想要的版本,我选择 CentOS-7-x86_64-DVD-2003.iso 安装就正常安装就行。我选择虚拟机安装。这个参考&…...
electron 操作 cookie
前言:在 Electron 中操作 Cookie 可以使用electron模块提供的session对象来实现。 一、获取 Cookie 通过defaultSession获取默认会话对象,然后调用cookies.get方法并传入要获取 Cookie 的 URL 地址,以获取该 URL 对应的 Cookie。 const el…...

黑马软件测试第一篇_Linux
Linux 操作系统 说明: 所有硬件设备组装完成后的第⼀一层软件, 能够使⽤用户使⽤用硬件设备的软件 即为操作系统 常见分类 桌⾯面操作系统: Windows/macOS/Linux移动端操作系统: Android(安卓)/iOS(苹果)服务器器操作系统: Linux/Windows Server嵌⼊入式操作系统: Android(底…...
npm run dev 启动前端项目的原理
在一个使用 Vite 构建工具的 Vue 项目中,当你运行 npm run dev 时,实际执行的命令是 vite。为了理解这一过程,我们需要了解几个关键点: package.json 文件中的 scripts 字段: "scripts": {"dev": "vite&…...

【2024年SCI一区新算法:黑翅鸢优化算法 】分布式电网故障定位
1 场景介绍 使用10节点网络 2 故障设置 分为单重故障和两重故障 %% 2 故障设置 %% 1)单重故障 I[1,-1,0,0,-1,-1,0,0,-1,-1]; % 区段1故障 节点状态实际编码(是否流过故障电流) % I[1,1,0,0,-1,-1,0,0,-1,-1]; % 区段2故障 % I[…...
PyTorch 中 12 种张量操作详解
创作不易,还请各位同学三连点赞!!收藏!!转发!!! 对于刚入门学习Python还找不到方向的小伙伴可以试试我的这份学习方法和籽料,免费自取!! PyTorc…...

雷池WAF自动化实现安全运营实操案例终极篇
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
微信小程序实现canvas电子签名
一、先看效果 小程序canvas电子签名 二、文档 微信小程序canvas 组件文档 微信小程序canvas API文档 H5Canvas文档 三、分析 1、初始话Canvas容器 2、Canvas触摸事件,bindtouchstart(手指触摸动作开始)、bindtouchmove(手指触摸…...

【SpringCloud】Seata微服务事务
Seata微服务事务 分布式事务问题:本地事务分布式事务演示分布式事务问题:示例1 分布式事务理论CAP定理一致性可用性分区容错矛盾 Base理论解决分布式事务的思路 初识SeataSeata的架构部署TC服务微服务集成Seata引入依赖配置TC地址 其他服务 动手实践XA模…...
重新阅读《马说》,感悟“伯乐相马”背后的被选择与选择的大智慧
“初闻不识曲中意,再听已是曲终人”。世有伯乐,然后有千里马。千里马常有,而伯乐不常有。无论你是考研考公等考试大军中的一员,还是已步入社会的打工人或者领导,当你面临被人选择或者选择人时,皆可从《马说…...

深入拆解TomcatJetty(三)
深入拆解Tomcat&Jetty(三) 专栏地址:https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示: 对组件之间的关系进行分析,…...
MySQL 实现简单的性能优化
一:硬件优化 更高的网络带宽:在处理大规模的远程请求时可以提高MySQL服务器的响应速度; 更大的内存空间:有助于缓存更多的数据库数据,减少磁盘I/O操作,提高整体性能; 换用企业级SSD࿱…...

AB包资源管理器
简介 ABMgr(Asset Bundle Manager)类是一个用于管理 Unity 中 AssetBundle 资源加载的管理器。它通过字典缓存和管理加载的 AB 包,同时支持同步和异步加载。还包含了卸载和清理 AB 包的方法。 功能解析: 主包加载与依赖管理&…...

Centos7源报错问题
原因:是因为centos7在024年6月份停止维护,导致默认镜像不能使用,更改镜像即可mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/…...

Openlayers高级交互(2/20):清除所有图层的有效方法
Openlayers项目中,经常会放置很多的图层,在业务操作的时候,会做出删除所有图层的行为。这里面给出了一个详细的方法,能够有效的解决 清除所有图层的问题。 效果图 专栏名称内容介绍Openlayers基础实战 (72篇ÿ…...

黑马JavaWeb-day02
什么是JavaScript? JavaScript:简称Js,是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互 JavaScript和Java是完全不同的语言,无论是概念还是设计。但是基础语法类似。 JavaScript JavaScript引入方式…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...