目录
2、webhook --》web领域 --》 服务器里数据发生变化、 可以主动推给客户机
在用户点击url为http://www.baidu.com/index.html 的链接后、 浏览器和web服务器分别发生了什么?
8、HTTP协议中,Cookie和Session是两种常用的状态管理技术,它们的主要区别如下:
1、Cookie:(Cookie存储在客户端,相对不安全,但可以实现跨页面的状态共享)
2、Session:(Session存储在服务器端,相对安全,但需要占用服务器资源)
2、与传统的基于Cookie的Session验证方式相比,Token具有以下优势:
11、HTTP的报文结构 1、请求报文: 客户端发给服务器 request 2、响应报文: 服务器发给客户端 response
1、其中,请求行包含了请求方法、请求URI和HTTP协议版本,格式为:
2、请求头部包含了请求的附加信息,例如请求的主机、浏览器类型、可接受的编码方式等等,格式为:
3、空行是请求头部和请求数据之间的空行,用于分隔两者。 (回车)
4、请求数据是可选的,例如在POST请求中,请求数据就是表单数据。在GET请求中,请求数据为空。 (实体数据)
1、其中,状态行包含了HTTP协议版本、状态码和状态描述,格式为:
2、响应头部包含了响应的附加信息,例如响应的内容类型、响应的长度、响应的日期等等,格式为:
4、响应数据是服务器返回给客户端的数据,例如HTML页面、图片、JSON数据、视频等等。
HTTPS是HTTP协议的安全版本,它通过使用SSL或TLS加密数据来保护通信安全。其工作原理如下:
一、HTTP协议是什么?
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 [9] 消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
1.1什么是超文本传输协议HTTP?
是一种按照URL指示, 将超文本文档从一台主机(web服务器)传输到另一台主机(浏览器)的应用层协议、 以实现超链接的功能
应用层协议:理解为某个应用软件使用的协议、 http协议就是web服务器(nginx等)和浏览器之间的使用的
1.2什么是url呢?
URL既是统一资源定位符、 用来统一标识万维网中的某一个文档、 URL协议由协议、 主机和端口号(默认为80)以及文件名三部分组成
www 表示 : world wide web 万维网: 世界范围内的网站、 全世界都可以看得到 --》internet
1、使用场景:
1、用户通过浏览器访问web服务器
请求报文 客户端 --》 web服务器
响应报文 web服务器 --》 客户端
2、webhook --》web领域 --》 服务器里数据发生变化、 可以主动推给客户机
Webhook是一种用于Web应用程序之间实现实时通信的技术。它是一种"反向API",允许Web应用程序向其他应用程序提供实时更新,而不需要定期轮询或查询API。 web服务器 --》 客户端
1.什么是webhook?
webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送。举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhooks 的典型场景。
简单来说,WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不同,使用WebHooks,你可以实时接受到变化。
这又是一种对客户机-服务器模式的逆转,在传统方法中,客户端从服务器请求数据,然后服务器提供给客户端数据(客户端是在拉数据)。在Webhook范式下,服务器更新所需提供的资源,然后自动将其作为更新发送到客户端(服务器是在推数据),客户端不是请求者,而是被动接收方。这种控制关系的反转可以用来促进许多原本需要在远程服务器上进行更复杂的请求和不断的轮询的通信请求。通过简单地接收资源而不是直接发送请求,我们可以更新远程代码库,轻松地分配资源,甚至将其集成到现有系统中来根据API的需要来更新端点和相关数据,唯一的缺点是初始建立困难。
http://www.feng.com/data --> 该网址会返回数据给我 --》 API接口
APT: application interface 应用程序的接口:
其实本质上就是url、 用户访问这个url、 我们的web服务器返回数据给客户机、 获取数据的入口
2、经典问题:
在用户点击url为http://www.baidu.com/index.html 的链接后、 浏览器和web服务器分别发生了什么?
1、浏览器分析超链接中的URL
2、浏览器向DNS请求解析www.baidu.com 的IP地址
3、DNS将解析出的IP地址202.2.16.21返回浏览器
4、浏览器和web服务器建立TCP连接 (80端口)
5、浏览器发送请求报文、 想要获取首页文档index.html: GET/index.html
6、web服务器给出响应报文、 将文档index.html发送给浏览器
7、浏览器渲染出index.html的效果
8、默认情况下65s后服务器会释放TCP连接
渲染:浏览器将web服务器发送过来的响应报文的内容在浏览器里显示出来、 这个过程叫渲染
114.114.114.114 中国的dns服务器 通用的DNS服务器
一个网站打不开、 你如何去判断故障
1、检查域名解析是否出现问题、 能否解析出一个ip地址
2、ping 服务器ip地址、 看服务是否开启
3、检查服务器的web服务是否开启 或者 检查服务器的web服务器的端口号是否打开
4、检查服务器的防火墙是否开启、是否被防火墙拦截
5、检查web服务器的日志、 看看web服务器是否有限制(nginx配置文件是否配置了阻止进入)
思路:由外而内、一层一层的去检查
3、http协议的版本:
0.9
1.0
非持久性连接: 短连接
无状态模式:不知道你是否曾经访问过
1.1 --》 在平时使用的比较多
持续性连接:长连接
keepalive_timeout: 65
有状态模式:使用cookie、session等技术来保存客户端的状态信息。
2.0 --》 在平时使用的比较多 --》 主流的
http在传输的时候是明文传输的、 里面有哪些内容、 抓数据包可以看到
4、HTTP协议的版本不同主要体现在以下几个方面的差异:
1、请求报文和响应报文的格式:HTTP/1.0使用的请求报文和响应报文格式比较简单,只包含请求行、请求头和空行、响应行、响应头和响应体等基本信息;而HTTP/1.1引入了更多的请求头和响应头字段,支持更多的功能和特性。
2、持久连接:HTTP/1.0默认使用非持久连接,每次请求都需要建立新的TCP连接、而HTTP/1.1则默认使用持久连接,可以在同一个TCP连接上进行多次请求和响应。
3、分块传输编码:HTTP/1.1支持分块传输编码,可以将响应体分成多个块进行传输,可以在不知道响应体大小的情况下进行传输。
4、缓存机制:HTTP/1.1引入了更为复杂的缓存机制,包括缓存验证、缓存过期等,可以更有效地利用缓存提高性能。
5、Host头字段:HTTP/1.1引入了Host头字段,使得一台Web服务器可以提供多个Web站点,提高了Web应用程序的灵活性和扩展性。
6、错误处理:HTTP/1.1引入了更加详细的状态码和状态描述,可以更好地处理HTTP请求和响应中的错误。
需要注意的是,不同的HTTP协议版本之间存在差异,但是它们之间是向下兼容的,也就是说,一个支持HTTP/1.1的Web服务器可以处理HTTP/1.0的请求,反之亦然。这种向下兼容的设计可以确保Web应用程序的可扩展性和互操作性。
5、HTTP协议是版本越高越好吗?
HTTP协议版本越高并不一定意味着速度更快、安全性更高或者bug更少,不同的HTTP协议版本有不同的特性和优势,应根据具体的应用场景和需求进行选择。
1、速度更快
HTTP/1.1引入了持久连接和流水线化等技术,可以在同一个TCP连接上进行多次请求和响应,从而减少了TCP连接建立和关闭的开销,提高了网络传输效率。此外,HTTP/2.0引入了二进制分帧技术,可以更有效地利用网络带宽,提高传输速度。
2、安全性更高
HTTP/2.0支持加密传输,可以通过TLS协议保护HTTP通信的安全性,防止信息被窃听、篡改或伪造。此外,HTTP/1.1和HTTP/2.0都支持HTTP头字段中的一些安全特性,如Referer策略、Cookie安全策略等,可以提高Web应用程序的安全性。
3、Bug更少
HTTP协议的版本更新通常会修复一些已知的漏洞和问题,从而提高了协议的安全性和稳定性。此外,新版本的HTTP协议通常会引入更为严格的语义和规范,可以减少一些常见的错误和问题。
总而言之,HTTP协议的版本更新不仅可以提高网络传输效率、安全性和稳定性,还可以引入更多的功能和特性,提高Web应用程序的灵活性和扩展性。但是,协议版本更新也可能会面临一些兼容性和迁移成本的问题,需要进行充分的评估和测试。
6、HTTP连接可以分为持久性连接和非持久性连接两种类型。
1、非持久性连接:
在HTTP/1.0中,非持久性连接是默认的连接方式,每个HTTP请求都会通过单独的TCP连接发送。也就是说,每个请求都需要重新建立一次TCP连接,发送完毕后立即关闭连接。这样做的缺点是每次都需要重新建立连接,建立和断开连接的时间会占用网络资源,导致网络传输效率低下。
2、持久性连接:
为了解决非持久性连接带来的问题,HTTP/1.1引入了持久性连接。持久性连接可以在同一个TCP连接上发送多个HTTP请求和响应,而不必每次都重新建立连接。客户端和服务器可以在TCP连接上进行多次请求和响应,直到其中一方决定关闭连接。持久性连接可以提高网络传输效率,减少了建立和断开连接的时间,从而提高了HTTP协议的性能。
需要注意的是,持久性连接并不是无限期的,HTTP协议规定了一个超时时间,超过这个时间就会自动关闭连接。这个超时时间可以通过TCP的Keep-Alive机制进行调整,可以让连接保持一段时间的空闲状态,从而更有效地利用网络资源。
综上所述,持久性连接的优点在于可以减少建立和关闭连接的时间,提高网络传输效率,适用于大型网站和数据传输量较大的场景。而非持久性连接的优点在于简单易实现,适用于小型网站和数据传输量较小的场景。选择哪种连接方式需要根据具体的应用场景和需求进行权衡。
7、HTTP协议可以分为有状态和无状态两种模式。
1、有状态模式:
有状态模式是指服务器在处理客户端请求时需要保存客户端的状态信息。每个请求都是独立的,服务器需要根据前面的请求记录来处理当前请求。例如,购物车功能就需要保存用户的购物车状态,这就是一种有状态模式。
2、无状态模式:
无状态模式是指服务器在处理客户端请求时不需要保存客户端的状态信息。每个请求都是独立的,服务器不会记录任何状态信息,而是根据当前请求的内容进行处理。例如,搜索功能就是一种无状态模式。
有状态模式和无状态模式的区别在于服务器是否保存客户端的状态信息。有状态模式需要在服务器端保存客户端的状态信息,服务器需要对每个请求进行处理,需要占用一定的服务器资源。无状态模式不需要保存客户端的状态信息,服务器不需要对每个请求进行处理,不会占用服务器资源。
需要注意的是:
无状态模式并不是完全没有状态,而是指服务器不保存客户端的状态信息,客户端可以在每个请求中传递自己的状态信息。
实现有状态模式的功能,可以使用cookie、session等技术来保存客户端的状态信息。
8、HTTP协议中,Cookie和Session是两种常用的状态管理技术,它们的主要区别如下:
1、Cookie:(Cookie存储在客户端,相对不安全,但可以实现跨页面的状态共享)
cookie是一种存储在客户端的小型文本文件,用于存储客户端的状态信息。服务器可以通过设置cookie来告知客户端保存某些信息,例如登录状态、购物车内容等。在下一次请求时,客户端会自动在请求头中带上相应的cookie信息,服务器可以根据这些信息来识别客户端并返回相应的结果。cookie的优点是可以实现跨页面的状态共享,缺点是不安全,可能会被黑客利用来进行攻击。
2、Session:(Session存储在服务器端,相对安全,但需要占用服务器资源)
session是一种服务器端的状态管理技术,用于存储客户端的状态信息。客户端发送请求时,服务器会创建一个session对象(开辟一个字典),用于存储客户端的状态信息。服务器可以通过session来判断客户端的状态,例如登录状态、购物车内容等。在下一次请求时,客户端会自动在请求头中带上相应的session ID信息,服务器可以根据这些信息来识别客户端并返回相应的结果。session的优点是相对安全,缺点是需要占用服务器资源,对服务器的性能有一定的影响。
综上所述,Cookie和Session都是用于管理客户端的状态信息的技术,它们的主要区别在于存储的位置和安全性。Cookie存储在客户端,相对不安全,但可以实现跨页面的状态共享;Session存储在服务器端,相对安全,但需要占用服务器资源。选择哪种技术需要根据具体的应用场景和需求进行权衡。
9、HTTP中运用的Token验证方式:
HTTP协议本身并不支持Token验证方式,Token通常是在HTTP协议之上的应用层协议中使用的验证方式。在Web应用程序中,Token通常是指一种身份验证令牌,用于验证用户身份和授权访问资源。
1、Token的基本工作流程如下:
1、用户向服务器发送身份验证请求,例如输入用户名和密码;
2、服务器验证用户身份信息,如果验证通过,则生成Token,并返回给客户端;
3、客户端保存Token,下次发送请求时,将Token携带在请求中,服务器验证Token的合法性,如果通过,则返回请求的资源内容。
2、与传统的基于Cookie的Session验证方式相比,Token具有以下优势:
1、无状态:Token本身包含了用户的身份信息,服务器不需要在本地存储用户的会话状态,从而可以支持无状态的分布式应用部署;
2、安全性高:Token采用了加密算法,可以有效地防止Token被伪造或篡改;
3、可扩展性强:Token可以包含任意的用户信息,例如用户的权限、角色等,可以根据具体需求进行扩展;
4、跨域支持:Token可以在不同的域名之间传递,从而可以支持跨域访问资源;
5、性能更好:Token相对于Cookie的Session验证方式,可以减少网络传输的数据量,从而可以提高应用程序的性能。
总之,Token是一种灵活、安全、可扩展、跨域支持和性能更好的身份验证方式,已经被广泛应用于各种Web应用程序中。
10、HTTP2.0比HTTP1.0有什么优势?
HTTP/2.0相比HTTP/1.0主要有以下优势:
1、多路复用:HTTP/2.0使用二进制分帧,可以在一个TCP连接上同时进行多个请求和响应,避免了HTTP/1.0中的队头阻塞问题,提高了传输效率。
2、头部压缩:HTTP/2.0使用HPACK算法对头部信息进行压缩,减少了重复的头部信息,降低了传输的数据量, 传输的时间更短了。
3、服务器推送:HTTP/2.0可以在客户端请求之前将一些资源主动推送给客户端,避免了客户端进行多次请求的情况,提高了页面的加载速度。
4、优化流程控制:HTTP/2.0使用流的概念,可以对每个请求和响应进行优化流程控制,避免了传输过程中的带宽浪费,提高了传输效率。
例如 HTTP1.0 js, css 文件里的代码 --》 html --》 响应头部 --》 发送
HTTP2.0 js, css 文件里的代码 --》 响应头部 --》 发送 --> 比http1.0少一步
5、安全性增强:HTTP/2.0默认使用TLS加密传输数据,可以提供更安全的传输保障,避免了数据被窃听和篡改的风险。
综上所述,HTTP/2.0相比HTTP/1.0在传输效率、头部压缩、服务器推送、流程控制和安全性等方面均有优化,可以更好地满足现代Web应用的需求。
提升效率就是提升速度、 减少传输时间、 让客户端能更快的接收到资源
11、HTTP的报文结构
1、请求报文: 客户端发给服务器 request
2、响应报文: 服务器发给客户端 response
报文: 头部信息 + 身体
herder + body
头部信息相当于我们发快递的快递单、 里面有发件人和收件人等信息、 例如电话号码、 地址、 货物类型等
身体:就是具体的数据、 发快递的时候、 里面具体的货物
1、请求报文里有哪些字段?
HTTP请求报文的结构如下:
1、请求行
2、请求头部
3、空行 (回车健)
4、请求数据
请求头部包括:请求行 + 请求头部
空行用来分隔 请求头部 和 请求数据
1、其中,请求行包含了请求方法、请求URI和HTTP协议版本,格式为:
<method> <request-URI> HTTP/<version>
方法 URL HTTP版本
获取网页信息的方法: GET、 POST
协议版本
host字段: 方法的url
例如:
GET /index.html HTTP/1.1
2、请求头部包含了请求的附加信息,例如请求的主机、浏览器类型、可接受的编码方式等等,格式为:
<field-name>: <field-value>
首部字段名 : 值
例如:
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 使用的浏览器等信息
Accept-Encoding: gzip, deflate, sdch
If-None-Match "641c046d-266" --》网页文件的一个摘要值、 通过这个摘要值、 可以判断我们的文件是否发送变化
If-Modified-Since Thu, 23 Mar 2023 07:49:01 GMT --> 网页的文件上次修改的时间
User-Agent: 我们使用的浏览器
connection: close 表示连接已经断开了、 超时 or keep-alive: 表示没有超时、 连接没有断开
Accept: 表示我们的浏览器接受数据的类型、 支持哪些类型或者格式的数据
Accept-Encoding:接收的数据的编码、 是否进行压缩、 gzip 表示使用gzip压缩的数据、 压缩数据再传输、 可以节约传输的次数、减少时间 提升传输的速度
cookie: 客户机访问服务器的时候、 会携带数据、 这些数据是用来验证用户是否连接过、 用来判断是老用户还是新用户
3、空行是请求头部和请求数据之间的空行,用于分隔两者。 (回车)
4、请求数据是可选的,例如在POST请求中,请求数据就是表单数据。在GET请求中,请求数据为空。
(实体数据)
2、响应报文里有哪些字段?
HTTP响应报文的结构如下:
1、状态行
2、响应头部
3、空行
4、响应数据
响应头部包括:状态行 + 响应头部
空行用来分隔 响应头部 和 响应数据
1、其中,状态行包含了HTTP协议版本、状态码和状态描述,格式为:
HTTP/<version> <status-code> <reason-phrase>
HTTP版本 状态码 状态描述
例如:
HTTP/1.1 200 OK
2、响应头部包含了响应的附加信息,例如响应的内容类型、响应的长度、响应的日期等等,格式为:
<field-name>: <field-value>
例如:
Content-Type: text/html; charset=utf-8 --》 发送的body的内容是一个文本/html类型的文件
Content-Length: 1234 --》body内容的大小 内容的长度
Date: Mon, 01 Jan 2000 00:00:00 GMT --》 响应报文发送的日期
ETag "641c046d-266" --》网页文件的一个摘要值、 通过这个摘要值、 可以判断我们的文件是否发送变化
Last-Modified Thu, 23 Mar 2023 07:49:01 GMT --> 网页的文件上次修改的时间
Referer: http://www.xiao.com/ --》 表示从哪个网址跳转过来的 reference 参考引用
3、空行是响应头部和响应数据之间的空行,用于分隔两者。
4、响应数据是服务器返回给客户端的数据,例如HTML页面、图片、JSON数据、视频等等。
注:当请求报文的If-None-Match 与 响应报文的ETag相同时 发送304状态码
3、你知道哪些状态码?他们分别代表了什么含义呢?
200状态码:服务器正常发送了响应报文给客户机 --》 OK
304状态码:服务器通过请求报文里的 If-Modified-Since和If-None-Match协议的数据是否相同来判断我们的服务器是否进行修改、 如果没有修改就直接发送响应包围的头部信息、 body部分就不封装数据了、 并告诉客户机网页内容并没有改变、 可以直接调用缓存里的数据
302状态码:临时重定向、 从一个网站跳转到另一个网站
404 网页不存在
403 没有权限
503 服务器临时不可用(限制了服务器内某些资源的访问)
4、HTTP有哪些方法呢?
有哪些HTTP的方法:
GET 请求web服务器给我们的客户机某个内容
POST 请求web服务器给我们的客户机某个内容
GET和POST的差异?
DELETE 要求web服务器删除某个内容(数据)
PUT 要求web服务器存储某个内容(数据)
GET和POST的差异?
共同点:都是客户端去服务器获取数据
差异点:
1、GET方法是再URL里传递参数、 参数是明文的、 而且携带的参数是有限的
2、POST方法是在body里传递参数给服务器、 非常经典的应用就是表单信息的提交、 可以携带非常多的数据
例子:
Google浏览器
General : 普遍的
Request URL: http://www.xiao.com/ --》 请求URL
Request Method: GET --》请求方法为GET
Status Code: 304 OK --》 输出状态码 和 状态描述信息
Remote Address: 192.168.2.200:80 --》 远程访问的IP地址和端口
Referrer Policy: strict-origin-when-cross-origin --》用来控制在浏览器中如何向目标站点传递Referrer信息
(Referrer信息是指用户在访问一个站点时,浏览器会自动向目标站点发送一个来源地址即Referrer,该地址可以包含用户的一些敏感信息,例如用户的搜索关键字、来源页面等。Referrer Policy可以控制浏览器是否发送Referrer信息,以及发送的具体内容。)
Response Headers: 响应头部
Connection: keep-alive --》 保持持续连接状态
Date: Thu, 23 Mar 2023 08:50:53 GMT --》响应报文发送的日期
ETag: "641c046d-266" --》网页文件的一个摘要值、 通过这个摘要值、 可以判断我们的文件是否发生变化、 用于标识一个资源的特定版本
Last-Modified: Thu, 23 Mar 2023 07:49:01 GMT --》服务器响应中返回该资源最后一次修改的时间
Server: nginx --》服务器为 nginx 服务器
Request Headers: 请求头部
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 --》 表示我们的浏览器接受数据的类型、 支持哪些类型或者格式的数据
Accept-Encoding: gzip, deflate --》接收的数据的编码、 是否进行压缩、 gzip 表示使用gzip压缩的数据、 压缩数据再传输、 可以节约传输的次数、减少时间 提升传输的速度
Accept-Language: zh-CN,zh;q=0.9 --》表示我们的浏览器接受的为中文、字体大小
Cache-Control: max-age=0 --》 用于指定缓存如何缓存某个请求或响应。它可以控制缓存的行为,例如缓存时间、缓存位置、是否允许缓存等等。
Connection: keep-alive --》 表示我们的连接一直保持持续连接状态
Host: www.xiao.com --》 表示本网站域名为 www.xiao.com
If-Modified-Since: Thu, 23 Mar 2023 07:49:01 GMT --》服务器请求时该资源最后一次修改的时间
If-None-Match: "641c046d-266" --》网页文件的一个摘要值、 通过这个摘要值、 可以判断我们的文件是否发生变化、 用于标识一个资源的特定版本
Upgrade-Insecure-Requests: 1 --》 是一个请求头,用于指示浏览器将所有HTTP的请求自动升级为HTTPS请求,以提高安全性。当浏览器向服务器发出请求时,如果请求头包含Upgrade-Insecure-Requests:1,则服务器会将所有HTTP请求自动升级为HTTPS请求,而不是使用原始的HTTP请求。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 --》 表示使用的浏览器是什么、 版本是什么
HTTP 官方网站:
https://www.w3.org/Protocols/rfc2616/rfc2616.html
(可以用来查看每个报文中字段意思、 和每个状态码表示的意思)
二、HTTPS
1、https是什么?
超文本传输安全协议 (安全的http协议)
HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。
好处:
1、数据传输是加密的 --》防止数据的窃听或者是截获
2、需要核实服务器的身份 --》防止钓鱼网站
保障网络的安全
钓鱼网站:就是假冒一个真正的网站、 骗取用户的信息或者钱财。
制作的和真正的网站一摸一样、 从页面看不出差异。
HTTPS的工作原理是什么?
HTTPS是HTTP协议的安全版本,它通过使用SSL或TLS加密数据来保护通信安全。其工作原理如下:
1、客户端向服务器发起HTTPS连接请求。
2、服务器返回数字证书,证书包含了服务器的 公钥 和一些身份信息。
3、客户端验证证书的合法性,包括证书的颁发机构和有效期等信息。
4、如果证书验证通过,客户端生成一个随机的 对称密钥 ,并使用服务器的公钥进行加密,然后将加密后的密钥发送给服务器。
5、服务器使用 私钥 解密客户端发送的密钥,然后使用对称密钥对数据进行加密操作,然后将加密后的数据发给客户端,让客户端对其进行解密操作。
6、最后一旦双方的握手过程完成,HTTPS连接将建立,服务器和客户端之间的通信将使用对称密钥进行加密和解密操作,从而保证通信的机密性和完整性。
总结:HTTPS通过数字证书验证和对称密钥加密技术保证了网络通信的安全性,是一种安全可靠的网络传输协议。
经典的hash加密算发:
123456 --》 加密算法 --》 一串字符 --》 加密的密码
SHA512
md5sum
对称加密算法:
对称加密算法是一种加密方式,使用同一个密钥进行加密和解密,因此也称为共享密钥加密算法。对称加密算法的特点是速度快、加密强度高,适合对大量数据进行加密和解密操作,常见的对称加密算法有DES、AES、RC4等。
对称加密算法的基本流程如下:
1、选择一个密钥,用于加密和解密数据;
2、将明文数据分组,并使用密钥进行加密;
3、将加密后的密文发送给接收方;
4、接收方使用相同的密钥进行解密,得到明文数据。
对称加密算法的优点是速度快、加密强度高,缺点是密钥的安全性难以保证。因为密钥需要在发送和接收方之间共享,如果密钥被泄露,那么加密数据的安全性将无法保证。因此,在使用对称加密算法时需要注意密钥的安全性,可以采用密钥交换协议、密钥管理系统等方式来提高密钥的安全性。
非对称加密算法:
非对称加密算法是一种加密方式,使用一对不同的密钥进行加密和解密,其中一个密钥用于加密数据,另一个密钥用于解密数据,因此也称为公钥加密算法。非对称加密算法的特点是安全性高、密钥分发方便,常见的非对称加密算法有RSA、DSA、ECC等。
非对称加密算法的基本流程如下:
1、生成一对密钥,包括公钥和私钥;
2、将公钥发送给发送方,私钥保存在接收方;
3、发送方使用公钥对数据进行加密,并将加密后的密文发送给接收方;
3、接收方使用私钥对密文进行解密,得到明文数据。
非对称加密算法的优点是密钥安全性高,因为私钥只保存在接收方,不会被泄露;密钥分发方便,因为只需要将公钥发送给发送方即可。缺点是加密解密速度较慢,适合加密较小的数据,例如数字证书、数字签名等。
在实际应用中,通常采用对称加密算法和非对称加密算法相结合的方式(例如:https),使用非对称加密算法来分发对称加密算法所使用的密钥,从而提高加密数据的安全性和效率。
数字签名:
数字签名是一种数字证书技术,用于确保数字文档的完整性、真实性和不可否认性。数字签名通常使用非对称加密算法实现,包括以下几个步骤:
1、原始数据的摘要:将原始数据使用哈希函数计算摘要,得到一个固定长度的摘要值;
2、私钥加密:使用私钥对摘要值进行加密,得到数字签名,数字签名的长度通常与密钥长度相同;
3、数字签名附加:将数字签名附加到原始数据后面,形成签名数据;
4、公钥验证:接收方使用发送方的公钥对数字签名进行解密,得到摘要值,然后使用相同的哈希函数计算原始数据的摘要值,将两个摘要值进行比较,如果相同,则说明数字签名有效,原始数据未被篡改。
数字签名的主要作用是确保数字文档的完整性、真实性和不可否认性、不可抵赖性。数字签名可以防止数字文档在传输或存储过程中被篡改,可以证明数字文档的来源和真实性,还可以防止发送方否认自己发送的数字文档。数字签名在电子商务、电子政务、电子合同等领域得到了广泛应用。
数字证书:
数字证书是一种数字形式的身份证明,用于在互联网上验证个人或组织的身份。数字证书通常使用公钥加密算法实现,包括以下几个组成部分:
1、主体信息:数字证书中包含了证书持有者的信息,例如姓名、电子邮件地址、组织名称等;
2、公钥信息:数字证书中包含了证书持有者的公钥信息,用于加密、签名等操作;
3、证书颁发机构信息:数字证书中包含了颁发证书的机构信息,证明该证书的合法性;
4、有效期限:数字证书中包含了证书的有效期限,证书在该期限内有效;
5、签名:数字证书中包含了证书颁发机构对证书信息的签名,用于验证证书的合法性。
使用数字证书可以确保通信双方的身份和数据传输的安全性,数字证书通常用于以下场景:
6、网络身份验证:数字证书可以用于认证网站、服务器、客户端等的身份,确保通信双方的安全性;
7、数字签名:数字证书可以用于数字签名,确保数字文档的完整性、真实性和不可否认性;
8、加密通信:数字证书可以用于加密通信,确保数据传输的安全性。
数字证书的管理和颁发通常由数字证书颁发机构(CA)进行,并且需要经过身份验证和审核,以确保证书的真实性和安全性。常见的数字证书颁发机构包括Verisign、Comodo、Symantec等。
CA运用的算法:
hash算法
非对称加密
对称加密
数字签名
数字证书 --》 CA颁布的
实践:
nginx --》 通过SSL软件来实现公钥和私钥的认证(数字签名)
先在阿里云购买域名、 然后根据域名去申请免费的证书(也可以去购买)
证书是捆绑到域名上的 --》 对域名进行担保的
购买一个域名 + 云服务器