当前位置: 首页 > news >正文

应用层——电子邮件、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&#xff1…...

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篇&#xff…...

黑马JavaWeb-day02

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

laravel清除不同缓存

1、清除应用程序缓存: php artisan cache:clear2、清除路由缓存: php artisan route:cache3、清除配置缓存: php artisan config:cache4、清除编译后的视图文件: php artisan view:clear5、清除事件和监听器缓存: ph…...

【Git】解决分支冲突、分支合并、版本回退、版本管理

解决本地冲突 1. 合并分支 假设你正在 main 分支上,想要合并 feature 分支。 git checkout main git merge feature如果两个分支都对同一文件做了不同的修改,Git 会提示你有冲突,并显示冲突文件。 2. 查看冲突文件 使用以下命令查看冲突…...

linux file结构体与inode结构体

在 Linux 系统中,inode 结构体和 file 结构体都是与文件系统相关的重要数据结构。它们各自承担着不同的角色,帮助操作系统管理文件和目录。以下是它们的异同点: inode 结构体 1.定义:inode(索引节点)是文件…...

探索迷宫的奥秘:用 C++ 打造你的迷宫游戏之旅!

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

JSON 注入攻击 API

文章目录 JSON 注入攻击 API"注入所有东西"是"聪明的"发生了什么? 什么是 JSON 注入?为什么解析器是问题所在解析不一致 JSON 解析器互操作性中的安全问题处理重复密钥的方式不一致按键碰撞响应不一致JSON 序列化(反序列化)中的不一致 好的。JSON 解析器…...

MyBatis入门程序之客户添加、更新与删除

【图书介绍】《SpringSpring MVCMyBatis从零开始学(视频教学版)(第3版)》-CSDN博客 《SpringSpring MVCMyBatis从零开始学 视频教学版 第3版整合开发实战快速开发与项目实战框架技术精讲与整合案例 计算机与互联网 编程语言与程序…...

查缺补漏----数据结构树高总结

① 对于平衡二叉树而言,树高的规律: 高度为h的平衡二叉树的含有的最少结点数(所有非叶节点的平衡因子均为1): n01,n11,n22 含有的最多结点数: (高度为h的满二叉树含有的结点数) ②…...

jenkins添加新服务

jenkins添加新服务 新建item 添加流水线 node{def envname "ENVIRONMENT:1234-dev"def projectGitUrl http://xxxxx/xxxxxx/12345.gitdef imageServer harbor.xxxxx.com //镜像仓库地址def projectAppName 12345-applicationdef projectGitBranch dev//git分…...

网络连接设备的功能与应用概述

目录 一、集线器 二、交换机 三、网桥 四、路由器 五、集线器、交换机、网桥与路由器的比较 备注 一、集线器 定义: 集线器(Hub)是一种物理层设备,它提供多个端口,用于将多个计算机或其他网络设备连接在一起&am…...

【SpringCloud】04-Gateway网关登录校验

1. 网关请求处理流程 2. 网关过滤器 3. 网关实现登录校验 Component // 参数构造器 RequiredArgsConstructor public class AuthGlobalFilter implements GlobalFilter, Ordered {private final AuthProperties authProperties;private final JwtTool jwtTool;private final A…...