HTTPS、DNS、正则表达式

HTTPS原理

HTTPS(Hypertext Transfer Protocol Secure)是一种安全的通信协议,它基于HTTP协议,在数据传输过程中使用了加密技术来保护通信的安全性和完整性。HTTPS的工作原理主要包括以下几个步骤:

  1. 客户端发起HTTPS请求:客户端(如Web浏览器)向服务器发送一个HTTPS请求。

  2. 服务器获取证书:服务器收到请求后,会将自己的证书发送给客户端。证书中包含了服务器公钥、服务器的身份信息以及证书的签发机构等信息。

  3. 客户端验证证书:客户端在收到服务器的证书后,会对证书进行验证。验证过程包括检查证书的有效期、签名是否有效以及证书是否由可信任的证书颁发机构签发等。

  4. 客户端生成会话密钥:如果证书验证通过,客户端会生成一个随机的会话密钥,用于后续的数据加密和解密。

  5. 客户端使用服务器公钥加密会话密钥:客户端使用服务器的公钥对会话密钥进行加密,并将加密后的会话密钥发送给服务器。

  6. 服务器使用私钥解密会话密钥:服务器收到加密的会话密钥后,使用自己的私钥进行解密,得到原始的会话密钥。

  7. 数据传输:客户端和服务器使用会话密钥对数据进行加密和解密,保证数据在传输过程中的安全性。

通过以上步骤,HTTPS协议可以确保通信过程中的数据安全性和完整性。加密技术的使用可以防止数据被窃取或篡改,同时证书的验证可以确保服务器的身份可信。这使得HTTPS成为了保护用户隐私和防止网络攻击的重要协议。

DNS原理

DNS(Domain Name System)是互联网中用于将域名转换为 IP 地址的系统。它的工作原理可以简单地分为以下几个步骤:

1. 用户发起域名解析请求:当用户在浏览器中输入一个域名时(如www.example.com),浏览器会向本地计算机的 DNS 客户端发送一个 DNS 查询请求。

2. 本地 DNS 客户端查询本地缓存:本地 DNS 客户端首先会查询本地缓存,看是否已经存储了该域名的 IP 地址。如果有,就直接返回给用户。

3. 本地 DNS 客户端查询根域名服务器:如果本地缓存中没有该域名的 IP 地址,本地 DNS 客户端会向根域名服务器发送查询请求。根域名服务器是全球 DNS 系统的顶级服务器,负责管理顶级域名(如.com、.org等)的 DNS 服务器地址。

4. 根域名服务器返回顶级域名服务器地址:根域名服务器会将负责该顶级域名的顶级域名服务器的地址返回给本地 DNS 客户端。

5. 本地 DNS 客户端查询顶级域名服务器:本地 DNS 客户端会向负责该顶级域名的顶级域名服务器发送查询请求。

6. 顶级域名服务器返回权威域名服务器地址:顶级域名服务器会将负责该域名的权威域名服务器的地址返回给本地 DNS 客户端。

7. 本地 DNS 客户端查询权威域名服务器:本地 DNS 客户端会向负责该域名的权威域名服务器发送查询请求。

8. 权威域名服务器返回域名对应的 IP 地址:权威域名服务器会将该域名对应的 IP 地址返回给本地 DNS 客户端。

9. 本地 DNS 客户端将 IP 地址返回给用户:本地 DNS 客户端收到 IP 地址后,将其返回给用户的浏览器。

10. 用户的浏览器发起连接请求:用户的浏览器使用获取到的 IP 地址,向对应的服务器发起连接请求,建立与服务器的通信。

通过以上步骤,DNS 实现了将用户输入的域名转换为对应的 IP 地址,从而使得用户能够通过域名访问到对应的网站或服务。DNS 的分布式设计和缓存机制可以提高解析效率和网络性能。

正则表达式

正则表达式是表达文本模式的方法。

  • .:匹配任何单个字符。

  • ?:上一项是可选的,最多匹配一次。

  • *:前一项将被匹配零次或多次。

  • +:前一项将被匹配一次或多次。

  • {N}:上一项完全匹配N次。

  • {N,}:前一项匹配N次或多次。

  • {N,M}:前一项至少匹配N次,但不超过M次。

  • --:表示范围,如果它不是列表中的第一个或最后一个,也不是列表中某个范围的终点。

  • ^:匹配行首的空字符串;也代表不在列表范围内的字符。

  • $:匹配行尾的空字符串。

  • \b:匹配单词边缘的空字符串。

  • \B:匹配空字符串,前提是它不在单词的边缘。

  • \<:匹配单词开头的空字符串。

  • \>:匹配单词末尾的空字符串。

\d匹配一个数字字符。等价于[0-9]。
\D匹配一个非数字字符。
\f匹配一个换页符。
\n匹配一个换行符。
\r匹配一个回车符。
\s匹配任何不可见字符,包括空格、制表符、换页符等等。
\S匹配任何可见字符。
\t匹配一个制表符。
\v匹配一个垂直制表符。
\w匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,
\W匹配任何非单词字符。

元字符

元字符是表示特殊函数的字符,包括以下这些^ $ . [ ] { } - ? * + ( ) | \\。除了元字符,其他字符在正则表达式中,都表示原来的含义。

  • . 匹配任意字符,但不含空字符

  • ^ 匹配文本行开头

  • $ 匹配文本行结尾

$ grep -h '.zip' dirlist*.txt

上面命令在文件中查找包含正则表达式“.zip”的文本行。注意,上面命令不会匹配zip程序,因为zip只有三个字符,而.zip要求四个字符。

$ grep -h '^zip' dirlist*.txt
$ grep -h 'zip$' dirlist*.txt

上面命令分别在文件列表中搜索行首,行尾以及行首和行尾同时包含字符串“zip”(例如,zip 独占一行)的匹配行。 注意正则表达式‘^$’(行首和行尾之间没有字符)会匹配空行。

方括号

方括号之中的字符,表示可以任意匹配其中的一个。

$ grep -h '[bg]zip' dirlist*.txt

上面命令匹配包含字符串“bzip”或者“gzip”的任意行。

注意,元字符放入方括号之中,会失去其特殊含义。但有两种情况除外,^在方括号的开头,表示否定,否则只是一个普通字符,表示原义。

$ grep -h '[^bg]zip' dirlist*.txt

上面命令匹配不以bg开头的zip字符串。注意,上面命令不会匹配zip,因为一个否定的字符集仍然要求存在一个字符。

-在方括号之中表示一个字符区域。

$ grep -h '^[A-Z]' dirlist*.txt

上面命令匹配所有以大写字母开头的文本行。类似的,^[A-Za-z0-9]表示以大写字母、小写字母、数字开头的文本行。

注意,连字号如果不构成一个字符区域,则表示其本来的含义。

$ grep -h '[-AZ]' dirlist*.txt

上面命令匹配包含一个连字符,或一个大写字母“A”,或一个大写字母“Z”的文件名。

预定义字符类

由于locale设置不同,Shell展开正则表达式[A-Z]时,可能不是解释为所有大写字母,而是解释为包括所有字母的字典顺序。

$ ls /usr/sbin/[A-Z]*

上面命令在某些发行版里面,会返回所有大写字母或小写字母开头的文件。

为了避免这个问题,可以使用正则表达式的预定义字符类。

  • [:alnum:] 字母数字字符。在 ASCII 中,等价于:[A-Za-z0-9]

  • [:word:][:alnum:]相同, 但增加了下划线字符。

  • [:alpha:] 字母字符。在 ASCII 中,等价于[A-Za-z]

  • [:blank:] 包含空格和 tab 字符。

  • [:cntrl:] ASCII 的控制码。包含了0到31,和127的 ASCII 字符。

  • [:digit:] 数字0到9

  • [:graph:] 可视字符。在 ASCII 中,它包含33到126的字符。

  • [:lower:] 小写字母。

  • [:punct:] 标点符号字符。

  • [:print:] 可打印的字符。等于[:graph:]中的所有字符,再加上空格字符。

  • [:space:] 空白字符,包括空格,tab,回车,换行,vertical tab, 和 form feed.在 ASCII 中, 等价于[ \t\r\n\v\f]

  • [:upper:] 大写字母。

  • [:xdigit:] 用来表示十六进制数字的字符。在 ASCII 中,等价于[0-9A-Fa-f]

$ ls /usr/sbin/[[:upper:]]*

上面命令返回所有大写字母开头的文件名。

选择

|表示匹配一系列字符串之中的一个。注意与方括号区分,方括号表示匹配一系列字符之中的一个。

$ echo "AAA" | grep -E 'AAA|BBB'
AAA
$ echo "BBB" | grep -E 'AAA|BBB'
BBB
$ echo "CCC" | grep -E 'AAA|BBB'
$

上面代码中,AAA|BBB表示匹配字符串AAA或者是字符串BBBgrep程序使用-E参数,表示按照正则表达式规则匹配。并且,这个正则表达式放在单引号之中,为的是阻止Shell把|解释为管道操作符。

|可以多个连用,也可以与其他正则规则结合使用。

$ echo "AAA" | grep -E 'AAA|BBB|CCC'
​
$ grep -Eh '^(bz|gz|zip)' dirlist*.txt

量词操作符

量词操作符表示一个元素被匹配的次数。

  • ? 匹配前面的元素出现0次或1次

  • * 匹配前面的元素出现0次或多次

  • + 匹配前面的元素出现1次或多次

  • {n} 匹配前面的元素出现了n

  • {n,m} 匹配前面的元素它至少出现了n次,但是不多于m

  • {n,} 匹配前面的元素至少出现了n

  • {,m} 匹配前面的元素,如果它出现的次数不多于 m 次。

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

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

相关文章

Python中的数据科学实验库有哪些?

Python中有许多数据科学实验库可供使用。以下是一些常用的库&#xff1a; NumPy&#xff1a;用于处理大型多维数组和矩阵的基础数学库。Pandas&#xff1a;用于数据处理和分析的库&#xff0c;提供了灵活的数据结构和数据操作工具。Matplotlib&#xff1a;用于创建静态、动态和…

CSS鼠标样式(cursor)

CSS cursor 属性值 属性值示意图描述auto默认值&#xff0c;由浏览器根据当前上下文确定要显示的光标样式default 默认光标&#xff0c;不考虑上下文&#xff0c;通常是一个箭头none不显示光标initial将此属性设置为其默认值inherit从父元素基础 cursor 属性的值context-menu…

“深入理解Spring Boot:从入门到进阶“

标题&#xff1a;深入理解Spring Boot&#xff1a;从入门到进阶 摘要&#xff1a;本文将介绍Spring Boot的基本概念、核心特性以及进阶用法&#xff0c;通过详细的示例代码帮助读者深入理解Spring Boot的使用和原理。 正文&#xff1a; Spring Boot简介 Spring Boot是一个基于…

微信小程序中使用echarts方法

小程序中使用echarts echarts是一个基于JS的数据可视化图标库&#xff0c;它提供了直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性定制的数据可视化图表。一般在vue中会使用到&#xff0c;并且官网也详细的说明了如何在vue中使用&#xff0c;但是今天我想来探讨的…

vue-echarts配置项详解

起因 最近接手了一个vue3项目&#xff0c;echarts用的是"vue-echarts": “^6.0.0”&#xff0c;每次查看文档的时候痛苦不已&#xff0c;找一个配置要花费大量时间&#xff0c;所以这篇文章&#xff0c;主要就是为了记录比较常见的一些配置。 主要会写三种图的配置…

SAP财务系统中的“增值税”

1. 前言 在前一篇博客《SAP财务系统中的“复式记账法”》中&#xff0c;介绍了复式记账的基本原理&#xff0c;同时给出了在采购和销售流程中常见的记账科目&#xff0c;但也遗留了一些知识点&#xff0c;例如增值税等概念。 在本篇博客中&#xff0c;我们将覆盖这些知识点&a…

二、SQL-5.DQL-8).案例练习

1、查询年龄为20,21,22,23岁的员工信息 select * from emp where age in(20, 21, 22, 23) and gender 女; 2、查询性别为男&#xff0c;并且年龄在20-40岁&#xff08;含&#xff09;以内的姓名为三个字的员工 select * from emp where gender 男 && age between 2…

如何进行SQL优化

一、SQL优化的主要步骤 在应用的的开发过程中&#xff0c;由于初期数据量小&#xff0c;开发人员写 SQL 语句时更重视功能上的实现&#xff0c;但是当应用系统正式上线后&#xff0c;随着生产数据量的急剧增长&#xff0c;很多 SQL 语句开始逐渐显露出性能问题&#xff0c;对生…

Electron 学习_BrowserWindow

BrowserWindow创建并控制浏览器窗口(主进程) 条件&#xff1a;在 app 模块 emitted ready 事件之前&#xff0c;您不能使用此模块。 1.在加载页面时&#xff0c;渲染进程第一次完成绘制时&#xff0c;如果窗口还没有被显示&#xff0c;渲染进程会发出 ready-to-show 事件 。 在…

广德上汽通用汽车平行试车场

技术栈&#xff1a;使用vue2JavaScriptElement UIvuexaxioscesium 项目描述&#xff1a;广德上汽通用汽车平行试车场是依托千寻孪界开发的一套展示实时车辆位置同步展示光照&#xff0c;时间&#xff0c;阴影等特效&#xff0c;完成平行时空效果的一款软件。 工作内容&#xff…

在线阅读版:《2023中国软件供应链安全分析报告》全文

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 专栏供应链安全 数字化时代&#xff0c;软件无处不在。软件如同社会中的“虚拟人”&#xff0c;已经成为支撑社会正常运转的最基本元素之一&#xff0c;软件的安全性问题也正在成为当今社会的根本性、基础性问题。 随…

Istio Pilot源码学习(二):ServiceController服务发现

本文基于Istio 1.18.0版本进行源码学习 4、服务发现&#xff1a;ServiceController ServiceController是服务发现的核心模块&#xff0c;主要功能是监听底层平台的服务注册中心&#xff0c;将平台服务模型转换成Istio服务模型并缓存&#xff1b;同时根据服务的变化&#xff0c…

【LS科技芯团队成立】基础研究是科学之本、技术之源、创新之魂

目录 LS科技芯团队简介 团队创建人 成立本团队的核心目的 来自各个省份的大佬专家们 加入LS科技芯团队吧&#xff01; LS科技芯团队简介 “LS科技芯”团队于2023年7月25日下午成立。汇聚了来自各个省份的技术博主&#xff0c;涵盖了电子技术&#xff0c;程序设计&#xff0c;…

【云原生】Docker镜像的创建,Dockerfile

一、Docker镜像的创建 创建镜像有三种方法&#xff0c;分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 1.基于现有镜像创建 &#xff08;1&#xff09;首先启动一个镜像&#xff0c;在容器里做修改docker run -it --name web centos:7 /bin/…

财报解读:谷歌成功绝地反击?厮杀尚未真正开始!

在经历了一轮激烈的攻防战之后&#xff0c;谷歌、微软同一天发布了财报&#xff0c;从数据来看&#xff0c;谷歌成功抵御了微软携OpenAI发起的挑战&#xff0c;业绩表现全面超预期&#xff0c;而微软的业绩虽然整体也超预期&#xff0c;但相比其四面出击的高调则黯淡了许多。 巨…

stable diffusion如何确保每张图的面部一致?

可以使用roop插件&#xff0c;确定好脸部图片后&#xff0c;使用roop固定&#xff0c;然后生成的所有图片都使用同一张脸。 这款插件的功能简单粗暴&#xff1a;一键换脸。 如图所示&#xff1a; 任意上传一张脸部清晰的图片&#xff0c;点击启用。 在其他提示词不变的情况下…

Spring核心概念、IoC和DI的认识、Spring中bean的配置及实例化、bean的生命周期

初始Spring 一、Spring核心概念1.1IoC(Inversion of Contral)&#xff1a;控制反转1.2IoC代码实现1.2DI代码实现 二、bean的相关操作2.1bean的配置2.1.1bean的基础配置2.1.2bean的别名配置2.1.3bean的作用范围配置 2.2bean的实例化 - - 构造方法2.3bean的实例化 - - 实例工厂与…

python基础

变量和简单的数据类型 变量 变量的命名规则&#xff1a; 1、只能包含字母、数字和下划线&#xff0c;并且不能以数字开头 2、变量名中不能是python中的保留字 字符串 字符串的几种定义方法 name Bob name "Bob" name """Bob"""…

Excel录制宏批处理:避免重复工作,轻松提升效率

在处理大量数据时&#xff0c;我们常常需要进行一些重复且繁琐的操作&#xff0c;这不仅费时费力&#xff0c;还容易出错。而Excel的录制宏批处理功能可以帮助我们避免这些重复的工作&#xff0c;提高工作效率。本文将为您介绍如何使用Excel的录制宏批处理功能&#xff0c;让您…

web APIs-练习一

轮播图点击切换&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…