【网络协议详解】——电子邮件系统协议(学习笔记)

news2024/11/26 16:39:45

目录

  • 🕒 1. 电子邮件系统概述
  • 🕒 2. 简单邮件传送协议SMTP
  • 🕒 3. SMTP协议的命令和响应
    • 🕘 3.1 命令
      • 🕤 3.1.1 HELO
      • 🕤 3.1.2 MAIL FROM
      • 🕤 3.1.3 RCPT TO
      • 🕤 3.1.4 DATA
      • 🕤 3.1.5 QUIT
      • 🕤 3.1.6 REST
      • 🕤 3.1.7 VRFY
      • 🕤 3.1.8 NOOP
      • 🕤 3.1.9 TURN
      • 🕤 3.1.10 EXPN
      • 🕤 3.1.11 HELP
      • 🕤 3.1.12 SEND FROM
      • 🕤 3.1.13 SOML FROM
      • 🕤 3.1.14 SAML FROM
    • 🕘 3.2 响应
  • 🕒 4. SMTP协议的邮件传输阶段
  • 🕒 5. 电子邮件的信息格式
  • 🕒 6. 多用途因特网邮件扩展MIME
    • 🕘 6.1 概述
    • 🕘 6.2 特点
    • 🕘 6.3 MIME首部
    • 🕘 6.4 MIME内容类型
    • 🕘 6.5 MIME传送编码
  • 🕒 7. 邮件读取协议
  • 🕒 8. POP3协议
    • 🕘 8.1 工作过程
    • 🕘 8.2 命令
    • 🕘 8.3 响应
    • 🕘 8.4 三种工作状态
  • 🕒 9. 基于万维网的电子邮件
  • 🕒 10. 实验

🕒 1. 电子邮件系统概述

电子邮件(e-mail)是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要、最实用的应用之一。

电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取。

电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。

现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。

电子邮件系统的三个主要组成构件:用户代理,邮件服务器,以及电子邮件所需的协议

  • 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件
  • 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱
  • 协议包括邮件发送协议(如SMTP)和邮件读取协议(如POP3IMAP)。

在这里插入图片描述

用户代理 UA (User Agent)

  • 用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。
  • 用户代理的功能:撰写、显示、处理和通信。

邮件服务器

  • 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
  • 邮件服务器按照客户——服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议。

注:

  • 一个邮件服务器既可以作为客户,也可以作为服务器。
  • 例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。
  • 当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B 是 SMTP 客户。

🕒 2. 简单邮件传送协议SMTP

简单邮件传送协议SMTP(Simple Mail Transfer Protocol)所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。

由于 SMTP 使用客户-服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。

🕒 3. SMTP协议的命令和响应

SMTP使用命令和响应在用户代理和邮件服务器之间传送邮件。

SMTP 规定了 14 条命令和 21 种应答信息。

  • 每条命令用 4 个字母组成
  • 每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。

🕘 3.1 命令

命令由用户代理发送给邮件服务器,命令包括关键词,后面跟着零个或多个参数。

一般形式是:COMMAND [Parameter] <CRLF>

命令参数命令参数
HELO发送方的主机名NOOP——
MAIL FROM发件人TURN——
RCPT TO预期的收件人EXPN邮件发送清单
DATA邮件的主体HELP命令
QUIT——SEND FROM预期的收件人
REST——SOML FROM预期的收件人
VRFY收件人名字SAML FROM预期的收件人

🕤 3.1.1 HELO

HELO命令用于用户标识自己,其参数是用户主机的域名

格式举例:HELO hins.mail.qq.com

🕤 3.1.2 MAIL FROM

MAIL FROM命令用于标识发件人

命令使用的参数是发件人的电子邮件地址(用户名加上主机的域名)。

格式举例:MAIL FROM: 10001@mail.qq.com

🕤 3.1.3 RCPT TO

RCPT TO 命令用于标识预期的收件人

命令使用的参数是收件人的电子邮件地址

若有多个收件人,则该命令要重复使用。

格式举例:RCPT TO: 10001@mail.qq.com

🕤 3.1.4 DATA

DATA 用于初始化数据传输

在DATA命令后面所有的行都被当作是邮件内容,邮件内容以只包含一个“.”的行表示结束。

格式举例:

DATA
This is a Test Message。
Please don’t reply.
.

🕤 3.1.5 QUIT

QUIT命令指示结束会话

格式举例:QUIT

🕤 3.1.6 REST

REST命令用于重置会话,取消当前传输。

所存储的关于发件人和收件人的信息都被删除。连接将被复位。

格式举例:REST

🕤 3.1.7 VRFY

VRFY命令用于验证指定的用户/邮箱是否存在;

由于安全方面的原因,服务器常禁止此命令。

格式举例:VRFY: mayun@mail.qq.com

🕤 3.1.8 NOOP

NOOP命令表示无操作,服务器应响应OK,通常用于测试。

格式举例:NOOP

🕤 3.1.9 TURN

TURN命令用于让发件人和收件人交换位置,即发件人变成收件人,收件人变成发件人。

大多数SMTP服务器并不支持该功能。

格式举例:TURN

🕤 3.1.10 EXPN

EXPN命令用于要求接收邮件的主机把作为参数的发送清单进行扩展,并返回组成清单的收件人的邮箱地址。

格式举例:EXPN:xyz

🕤 3.1.11 HELP

HELP命令用于查询服务器支持的命令

格式举例:HELP:TURN

🕤 3.1.12 SEND FROM

SEND FROM命令指明邮件是要交付到收件人的终端,而不是邮箱。

若收件人没有登录,邮件就被返回。参数就是收件人地址。

格式举例:SEND FROM: 10001@mail.qq.com

🕤 3.1.13 SOML FROM

SOML FROM 命令指明邮件是要交付到收件人的终端或邮箱。

表示若收件人已登录,邮件就只交付到终端;若收件人未登录,邮件就交付到邮箱

参数是收件人地址。

格式举例:SOML FROM: 10001@mail.qq.com

🕤 3.1.14 SAML FROM

SAML FROM命令指明邮件是要交付到收件人的终端和邮箱。

表示若收件人己登录,邮件就交付给终端和邮箱;若收件人未登录,邮件就只交付给邮箱

参数是收件人地址。

格式举例:SAML FROM:10001@mail.qq.com

🕘 3.2 响应

  • 响应是从邮件服务器发送到用户代理
  • 响应用三位十进制数字表示,后面跟着附加的文本信息。
  • 一般形式是:XXX Readable Illustration
  • 下表列出了常用的一些响应。
代码说明
——正面完成应答
211系统状态或系统帮助响应
214帮助信息
220服务器就绪
221服务关闭
250要求的邮件操作完成
251用户非本地,将转发向
——正面中间回答
354开始邮件输入,以“.”结束
——过渡负面完成回答
421服务器未就绪,关闭传输信道
450邮箱不可用
451放弃要求的操作,处理过程中出错
452系统存储不足,要求的操作未执行
——永久负面完成回答
500语法差错:不能识别的命令
501参数格式错误
502命令不可实现
503错误的命令序列
504命令参数不可实现
550要求的邮件操作未完成,邮箱不可用
551用户非本地,请尝试
552过量的存储分配,要求的操作未执行
553邮箱名不可用,要求的操作未执行
554操作失败

🕒 4. SMTP协议的邮件传输阶段

基本工作过程:

在这里插入图片描述

连接建立
当用户代理与SMTP邮件服务器熟知端口25建立了TCP连接后,SMTP邮件服务器准备进入连接建立阶段。该阶段包括3个步骤:
① 邮件服务器发送代码220(表示服务就绪)告诉用户代理已准备好接收邮件。若邮件服务器未就绪,发送代码421(表示服务不可用)。
② 用户代理发送HELO命令,并使用自己的域名地址进行标识。用于将用户的域名通知邮件服务器。
③ 邮件服务器响应代码250(请求命令完成)或根据不同情况给出其它代码。若邮件服务器响应代码250,表示连接建立成功。

邮件传送
在用户代理与邮件服务器之间建立连接后,发件人可以与一个或多个收件人交换单个邮件。该阶段包括8个步骤:
① 用户代理发送MAIL FROM命令声明邮件的发送人。包括发件人的邮件地址(邮箱和域名)。可以把需要返回邮件地址交给服务器,以便返回差错或报告邮件传递状况时使用。
② 服务器响应代码250(请求命令完成)或其它适当的代码。
③ 用户代理发送RCPT TO命令,需要在参数中声明收件人的邮件地址。
若收件人超过一个,则步骤③和 ④将重复进行。
④ 服务器响应代码250(请求命令完成)或其它适当的代码。若收件人超过一个,则步骤③和 ④将重复进行。
⑤ 用户代理发送DATA命令对邮件的传输进行初始化。
⑥ 服务器响应代码354(开始邮件输入)或其它适当的代码。
⑦ 用户代理用连续的行发送邮件的内容。每一行以二字符的行结束标记(回车和换行)终止,最终邮件以仅有一个点的行结束。
⑧ 服务器响应代码250(请求命令完成)或其它适当的代码。

连接终止
在邮件传送成功后,用户代理终止连接。该阶段包括两个步骤:
① 用户代理发送QUIT命令
② 邮件服务器响应代码221或其它适当的代码。在连接终止阶段后,TCP连接必须关闭。

🕒 5. 电子邮件的信息格式

电子邮件的信息格式并不是由SMTP定义的,而是在RFC 822中单独定义的。这个RFC文档已在2008年更新为RFC 5322。一个电子邮件有信封内容两部分。而内容又由首部主体两部分构成。

在这里插入图片描述

🕒 6. 多用途因特网邮件扩展MIME

🕘 6.1 概述

  • SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
  • SMTP不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文、俄文、甚至带有重音符号的法文或德文)也无法用SMTP传送。
  • SMTP 服务器会拒绝超过一定长度的邮件。
  • 某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。
  • 为解决SMTP传送非ASCII码文本的问题,提出了多用途因特网邮件扩展MIME (Multipurpose Internet MailExtensions)

🕘 6.2 特点

MIME 并没有改动 SMTP 或取代它。

MIME 的意图是继续使用目前的邮件格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。

  • 增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。
  • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
  • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

实际上,MIME不仅仅用于SMTP,也用于后来的同样面向ASCII字符的HTTP。

工作过程:

在这里插入图片描述

🕘 6.3 MIME首部

在这里插入图片描述

  • MIME-Version: 标志 MIME 的版本。现在的版本号是 1.1。若无此行,则为英文文本。
  • Content-Description: 这是可读字符串,说明此邮件是什么。和邮件的主题差不多。
  • Content-Id: 邮件的唯一标识符。
  • Content-Transfer-Encoding: 在传送时邮件的主体是如何编码的。
  • Content-Type: 说明邮件的性质。

🕘 6.4 MIME内容类型

  • MIME标准规定 Content-Type 说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。
  • MIME 标准定义了 7 个基本内容类型和 15 种子类型。
类型 子类型 说明
Text
(文本)
plain(纯文字)无格式的文本
richtext含有格式命令的文本
Multipart
(多部分)
mixed(混合)按规定顺序的几个独立部分部分
parallel(并行)必须同时读取的几部分
digest(摘要)每一个部分是一个完整的RFC 822邮件
alternative(交替)不同格式的同一邮件
Message
(报文)
rfc822主体是被封装的邮件
partial(部分)主体是更大邮件的分片
external-body(外部主体)主体是到另一个邮件的索引
Image
(图像)
jpegJPEG格式的图像
gifGIF格式的图像
Video
(视频)
mpegMPEG格式的视频信号
Audio
(音频)
basic(基本)8kHz的单声道语音编码
Application
(应用)
postscriptAdobe PostScript
octet-stream(字节流)不间断的字节序列
  • 文本
    • 原始邮件是7位的ASC II格式,不需要用MIME来转换。
    • 现在有两种子类型:plain(纯文字)、richtext
  • 多部分
    • 主体包含多个独立的部分。
    • 多部分首部需要定义每一个部分的边界。为此目的使用了一个参数。
    • 该参数是一个标记串,放在每部分的前面:单独占据一行,前面有两个“-”字符。
    • 主体结束的位置也使用边界标记,前面仍然有“-”字符,后面以两个“-”字符结束。
    • 该类型定义了4种子类型:混合、并行、摘要和交替
    • 多部分举例
Content-Type: multipart/mixed; boundary=xxxx

--xxxx
Content-Type: text/plain
………………………………………………….
--xxxx
Content-Type: image/gif
………………………………………………….
--xxxx—
  • 报文
    • 在邮件类型中,主体就是完整的邮件、邮件的一部分或到邮件的指针。
    • 现在使用的有3种子类型:
      • RFC822:主体被封装在另一个邮件中(包括首部和主体)
      • 部分:原始邮件被分片成不同的邮件,而邮件是分片之一
      • 外部主体:主体不包含真正的邮件,而仅有对原始邮件的索引(指针)。
  • 图像
    • 原始邮件是一幅静止图像,没有动画。
    • 当前使用的两种子类型:JPEG、GIF
  • 视频
    • 原始邮件是时变图像(动画)。
    • 唯一的子类型是mpeg。
    • 若动画包括声音,则必须使用音频内容类型分开发送。
  • 音频
    • 原始邮件是声音。
    • 唯一的子类型是使用8kHz标准音频数据的基本子类型。
  • 应用
    • 原始邮件是一种前面没用定义的数据类型。
    • 现在使用的只有两种子类型:
      • PostScript:数据为Adobe PostScript格式
      • 字节流:数据必须解释为8位字节序列(二进制文件)

🕘 6.5 MIME传送编码

MIME内容传送编码(Content-Transfer-Encoding)共有5种类型:

类型说明
7bitASCII字符和短行
8bit非ASCII字符和短行
二进制ASCII字符和长度不限的行
Base646位数据块被编码成8位ASCII字符
引用可打印非ASCII字符被编码成等号后跟随一个ASCII码
  • 7bit
    • 7位ASCII编码
    • 不能传输特殊的信息
    • 行的长度不能超过1000字符。
  • 8bit
    • 8位编码。
    • 非ASCII字符可以发送
    • 行的长度仍不能超过1000字符。
  • 二进制
    • ASCII字符和长度不限的行
  • Base64
    • 最常见的用于传输8bit字节码的编码方式之一;
    • 基于64个可打印字符来表示二进制数据的方法。
    • 编码表
代码代码代码代码代码代码
0A11L22W33h44s553
1B12M23X34i45t564
2C13N24Y35j46u575
3D14O25Z36k47v586
4E15P26a37l48w597
5F16Q27b38m49x608
6G17R28c39n50y619
7H18S29d40o51z62+
8I19T30e41p52063/
9J20U31f42q531
10K21V32g43r542

在这里插入图片描述

  • 引用可打印字符(Quoted-printable)
    • Base64的冗余编码方案;
    • 把24比特变为4个字符(32比特),开销为25%;
    • 若邮件数据由大部分的ASCII字符和一小部分非ASCII字符组成,可以使用可打印字符引用编码;
    • 若字符是ASCII,原样发送;若字符是非ASCII,用3个字符发送;
    • 第一个字符是等号“=”,后两个字符是用十六进制表示;
    • 适用于当所传送的数据中只有少量的非 ASCII 码。

在这里插入图片描述

🕒 7. 邮件读取协议

常用的邮件读取协议有以下两个:

  • 邮局协议POP (Post Office Protocol),POP3是其第三个版本,是因特网正式标准(RFC 1939)。
    • 非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户方计算机。不允许用户在邮件服务器上管理自己的邮件。(例如创建文件夹,对邮件进行分类管理等)。
  • 因特网邮件访问协议IMAP (Internet Message Access Protocol),IMAP4是其第四个版本,目前还只是因特网建议标准。
    • 功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
  • POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用熟知端口110,IMAP4使用熟知端口143

🕒 8. POP3协议

🕘 8.1 工作过程

在这里插入图片描述

两种工作方式

  • 删除方式
    • 每一次读取邮件后就把邮箱中的该邮件删除。
    • 通常用于用户使用固定计算机工作的场合,而用户在读取或回答邮件后可以保存或整理所收到的邮件。
  • 保存方式
    • 读取邮件后仍然在邮箱中保存该邮件。
    • 通常用于用户离开自己的主要计算机时来读取邮件。邮件读取后还保存在系统中,供日后读取和整理。

🕘 8.2 命令

POP3命令的一般形式是:COMMAND [Parameter] <CRLF>

  • COMMAND是ASCII形式的命令名
  • Parameter是相应的命令参数
  • 是回车换行符(0DH,0AH)

POP3命令不区分大小写,但参数区分大小写

命令参数使用在何种状态中描述
USERUsername认证此命令与下面的PASS命令若成功,将导致状态转换
PASSPassword认证此命令若成功,状态转化为处理状态
APOPName, Digest认证Digest是MD5消息摘要
STATNone处理请求服务器发回关于邮箱的统计资料
UIDL[Msg#]
(邮件号,下同)
处理返回邮件的唯一标识符
LIST[Msg#]处理返回邮件数量和每个邮件的大小
RETR[Msg#]处理返回由参数标识的邮件的全部文本
DELE[Msg#]处理服务器将由参数标识的邮件标记为删除,由QUIT命令执行
TOP[Msg# n]处理处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数
NOOPNone处理服务器返回一个肯定的响应,用于测试连接是否成功
QUITNone处理
认证
1. 若服务器处于“处理”状态,将进入“更新”状态以删除任何标记为删除的邮件,并重返“认证”状态,结束会话,释放连接。
2. 若服务器处于“认证”状态,则结束会话,退出连接。

🕘 8.3 响应

POP3邮件服务器响应是由一个或多个命令行组成

响应第一行“+OK”或“-ERR”开头,其后附加若干ASCII文本信息。

“+OK”和“-ERR”分别指出相应的操作状态成功还是失败。

🕘 8.4 三种工作状态

  • 认证状态
  • 处理状态
  • 更新状态

在这里插入图片描述

🕒 9. 基于万维网的电子邮件

  • 通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读和管理电子邮件。这种工作模式与IMAP很类似,不同的是用户计算机无需安装专门的用户代理程序,只需要使用通用的万维网浏览器。
  • 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
  • 这种工作模式在用户浏览器与邮件服务器网站之间使用HTTP协议,而邮件服务器之间使用SMTP协议

🕒 10. 实验

🔎 原来自己可以搭建邮箱服务器发送邮件

实验步骤:
一、准备两台PC机,PC1部署邮件服务器,PC2作为客户端,访问邮件服务器
二、在PC1上使用hmailServer部署邮件服务器
三、在PC2使用Wireshark进行抓包,并使用Foxmail软件进行邮件服务器的访问,包括收邮件和发邮件

使用hmailServer部署邮件服务器:
一路next安装后,进入hMailServer

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击【Advanced】中【TCP/IP ports】的【0.0.0.0/25/SMTP】、【0.0.0.0/110/POP3】、【0.0.0.0/143/IMAP】、【0.0.0.0/587/SMTP】,将TCP/IP address设置为本机IP。

在这里插入图片描述

使用Foxmail软件进行邮件服务器的访问:

  1. 选择“其他邮箱”
  2. 点击“手动设置”
  3. 如下图填入【接收服务器类型】,【邮件账号】,【密码】为123456,【POP服务器】、【SMTP服务器】填入hMailServer设置的IP地址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件设计与体系结构】 软件体系结构风格

软件体系结构&#xff08;Software Architecture&#xff09; 软件体系结构&#xff08;Software Architecture&#xff09;包括构成系统的设计元素的描述、 设计元素 之间的交互、 设计元素的组合模式以及在这些模式中的约束。 定义 软件体系结构表示系统的框架结构&#xf…

IIC接口

一、IIC总线简介 IIC总线是由飞利浦公司推出的一种串行、同步、半双工通信协议。它由两条线组成&#xff0c;时钟线&#xff08;SCL&#xff09;和数据线&#xff08;SDA&#xff09;。主机产生通信用的时钟&#xff0c;可以产生起始信号和结束信号来开始或者结束一次通信。 …

OFGF光流引导特征:用于视频动作识别的快速且稳健的运动表示【含源码】

论文地址:https://openaccess.thecvf.com/content_cvpr_2018/papers/Sun_Optical_Flow_Guided_CVPR_2018_paper.pdf 这个 repo 包含论文的实现代码: Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition,Shuyang Sun,Zh…

基于MATLAB的数字滤波器语音信号去噪

文章目录 一、滤波器的种类及简介二、设计流程三、滤波器设计实现与结果仿真参考文献基于MATLAB的FPR滤波器设计源代码 本课程设计通过分析FIR滤波器的基本原理&#xff0c;在MATLAB环境下利用窗函数法设计出FIR滤波器,实现FIR滤波器的仿真。首先是采集一段语音信号&#xff0c…

C++高级数据结构——ST表(倍增表)

从上次写文章到现在已经27天了&#xff0c;将近一个月蒟蒻没有更新了。 最近学的ST表太难理解了&#xff0c;再加上忙&#xff0c;一直没时间…… ----------------------------------------------------------------------------------------------------------------------…

Tarball管理

文章目录 Tarball管理Tarball安装的基本步骤一般 Tarball 软件安装的建议事项 Tarball管理 从源代码的说明我们知道制作一个二进制程序需要很多东西&#xff0c;这包括下面这些基础的软件。 gcc或cc等C语言编译器make及autoconfig等软件需要内核提供的Library以及相关的inclu…

win11使用命令行建立wifi热点,并可以设定名称密码等

主要是想自动化的实现打开wifi热点,ssid和wifi密码可控!手机设定比较简单,但是用程序行来设定还真是比较麻烦。 查了一下,有人使用netsh 无法解决,也就是说无法使用如下命令启动移动热点: netsh wlan set hostednetwork mode=allow ssid=wifi888 key=88888888 netsh wl…

信息安全实践1.2(重放攻击)

前言 这个实验是看一本书做的&#xff0c;就是李华峰老师的书——《Metasploit Web 渗透测试实战》&#xff0c;我之前写过一篇Slowloris DoS攻击的博客&#xff0c;也是看这本书写的&#xff0c;总的来说&#xff0c;有用处。这篇博客其实也只是很浅显的去做一下重放攻击。 要…

PyTorch 深度学习 || 专题二:PyTorch 编程基础

PyTorch 编程基础 文章目录 PyTorch 编程基础1. backword 求梯度2. 常用损失函数2.1 均方误差损失函数2.2 L1范数误差损失函数2.3 交叉熵损失函数 3. 优化器 1. backword 求梯度 import torchw torch.tensor([1.], requires_gradTrue) x torch.tensor([2.], requires_gradTr…

R实践——【rgplates】安装、介绍、入门

【rgplates】安装、介绍、入门 1. rgplates 安装1.1 easy way1.2 备案方法 2. rgplates 介绍3. rgplates 在线方法入门3.1 加载rgplates3.2 板块重建3.3 独立的地点坐标3.3.1 单个现存坐标点3.3.2 单个点的古坐标3.3.3 多个点的古坐标 3.4 现今的海岸线3.5 其他的重建模型3.6 在…

JMeter 性能测试基本过程及示例

jmeter 为性能测试提供了一下特色&#xff1a; 2023年最新出炉性能测试教程&#xff0c;真实企业性能压测全流程项目实战训练大合集&#xff01;_哔哩哔哩_bilibili2023年最新出炉性能测试教程&#xff0c;真实企业性能压测全流程项目实战训练大合集&#xff01;共计11条视频&…

javascript获取对象的键名列表、键值列表

Object.keys&#xff1a;获取对象的键名列表 Object.values&#xff1a;获取对象的键值列表 <script>var obj {name: 1,age: 2,order: 3}const klist Object.keys(obj)const vals Object.values(obj)console.log(obj, obj)console.log(键名列表, klist)console.log(键…

STM32F4_位带操作

目录 1. 位带简介 2. 别名区地址的计算 2.1 合并计算 3. 位带操作访问ODR和IDR寄存器 4. GPIOB->MODER&~(3<<(9*2));GPIOB->MODER|0<<9*2 / GPIOB->MODER&~(3<<(9*2));GPIOB->MODER|1<<9*2 位带操作在写单片机程序时&#xf…

springboot+vue 刘老师

课程内容 前端&#xff1a;vue elementui 后端&#xff1a;springboot mybatisplus 公共云部署 ------boot-------- 热部署 不用devtools&#xff0c;交给jrebel工具 RequestMapping ​ 参数 value 路径 method 方法consumes 请求媒体类型 如 application/jsonproduces …

DJ5-7 缓冲区管理

目录 5.7.1 缓冲的引入 5.7.2 单缓冲和双缓冲 1、单缓冲&#xff08;Single Buffer&#xff09; 2、双缓冲&#xff08;Double Buffer&#xff09; 3、双机通信时缓冲区的设置 5.7.3 循环缓冲 1、循环缓冲的组成 2、循环缓冲区的使用 3、进程同步 5.7.4 缓冲池 …

Spring Security源码剖析从入门到精通.跟学尚硅谷

1.1 概要 Spring 是非常流行和成功的 Java 应用开发框架&#xff0c;Spring Security 正是 Spring 家族中的成员。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”…

Mediapipe人体识别库

一、简介 官网&#xff1a;MediaPipe | Google for Developershttps://developers.google.cn/mediapipe Mediapipe 是2012年起开始公司内部使用&#xff0c;2019年google的一个开源项目&#xff0c;可以提供开源的、跨平台的常用机器学习(machine learning)方案。Mediapipe…

python-sqlite3使用指南

python下sqlite3使用指南 文章目录 python下sqlite3使用指南开发环境sqlite3常用APICRUD实例参考 开发环境 vscode ​ 开发语言&#xff1a; python vscode SQLite插件使用方法&#xff1a; 之后在这里就可以发现可视化数据&#xff1a; sqlite3常用API Python 2.5.x 以上…

信息安全实践1.3(HTTPS)

前言 做这个实验对Tomcat的版本有要求&#xff0c;最好是使用Tomcat8。因为我之前使用Tomcat10&#xff0c;然后一直做不出来。 要求 部署Web服务器端HTTPS功能&#xff0c;通过网络嗅探分析HTTPS通过SSL实施安全保护的效果 关键步骤 首先要给tomcat配置https&#xff0c;也…

设计模式之美-实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?

领域驱动设计&#xff08;Domain Driven Design&#xff0c;简称DDD&#xff09;盛行之后&#xff0c;这种基于贫血模型的传统的开发模式就更加被人诟病。而基于充血模型的DDD开发模式越来越被人提倡。所以&#xff0c;我打算用两节课的时间&#xff0c;结合一个虚拟钱包系统的…