http协议和https协议
HTTP和HTTPS概述
HTTP(Hypertext Transfer Protocol)和HTTPS(HTTP Secure)是超文本传输协议的两种形式。HTTP作为互联网上应用最为广泛的一种协议,它使得浏览器与服务器之间的信息传递成为可能。而HTTPS,作为HTTP的安全版本,通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)技术,为数据传输提供了加密保障,确保了数据在互联网上的安全传输。
HTTP和HTTP在OSI网络模型中同属于第七层。
HTTP协议
HTTP协议概念
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于在客户端(如浏览器)和服务器之间传输超文本(如网页)。
HTTP 是万维网(WWW)的基础,支持网页浏览、文件下载、API 调用等应用场景。
HTTP协议默认端口是80
HTTP协议特性
-
无状态
-
每次请求都是独立的,服务器不会保存客户端的状态。
-
通过 Cookie 或 Session 实现状态管理。
-
-
支持多种请求方法
-
GET请求:获取数据
-
POST请求:写入数据
-
DELETE请求:删除数据
-
PUT请求:修改数据
-
...还有其它的请求方式
-
-
支持多种数据格式
- 支持json、xml、html等数据格式
-
请求与响应模式
- 客户端发起响应,服务端进行响应
-
明文传输
- HTTP传输数据是进行明文传输,既是特点又是缺点
HTTP协议版本
HTTP 有多个版本,主要区别在于性能和功能:
-
HTTP/1.0:
短连接,每次请求需要重复建立新的连接,占用服务器资源,性能较差,基于TCP协议
-
HTTP/1.1:
加入长连接功能、keep alive功能(网站响应后不会立即断开,保留下这个连接),性能提升较1.0版本有提升,基于TCP协议。
-
HTTP/2:
增加并发访问,访问速度更快,性能显著提升,基于TCP协议。
-
HTTP/3:
基于 QUIC 协议(QUIC是基于UDP协议),进一步优化性能和安全性。
HTTP请求与响应
HTTP请求解析
使用curl命令访问网站,打印出详细的过程
root@master-01:~# curl -v www.baidu.com
* Trying 110.242.70.57...
* TCP_NODELAY set
* Connected to www.baidu.com (110.242.70.57) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Wed, 02 Apr 2025 11:32:36 GMT
< Etag: "588604c1-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:29 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>
#...
省略万字内容
...
<img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
* Connection #0 to host www.baidu.com left intact
root@master-01:~#
上面是使用curl访问百度的整体内容,其中包含了请求和响应的内容
#这部分是请求的内容,其中包含了请求的方法、路径、http协议的版本
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.64.0
> Accept: */*
当然实际生产环境中请求的内容比这个复杂,我们可以打开一个网站,例如京东、淘宝、或者博客园,我们使用F12来看一个接口的请求内容(这里默认你会的哦~)

图片中我们是访问的cnblogs的站点,可以看到一个是General部分,主要包含了请求的URL,请求的方法,请求状态code,以及远程的地址和端口(这里用的是IPV6,端口号是443),另一个部分是Request Headers,这里也叫做请求头,里面会包含很多内容,比如Cookie,这里的作用可以理解成维系会话的连接
HTTP响应解析
还是用到上面使用curl访问百度的例子,下面是响应的内容
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Wed, 02 Apr 2025 11:32:36 GMT
< Etag: "588604c1-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:29 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>
#...
省略万字内容
...
<img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
* Connection #0 to host www.baidu.com left intact
响应的内容中包含了HTTP协议的版本,响应的状态,keep-alive上面说过是属于http/1.1版本,这里也验证了,最下面是响应的内容
可以给一个结构图
-
请求

-
响应

HTTP请求与响应流程图
这里需要一些前置知识,可以查看这篇文章->计算机网络初始

HTTP常用状态码
这里只列举实际工作中常用及经常遇到的状态码,如果想要了解其它的状态码可自行败
-
200:访问正常
-
301:重定向,永久跳转
-
302:重定向,临时跳转
-
304:浏览器缓存
-
401:权限问题,用户未通过验证
-
403:权限拒绝,用户通过验证,但是请求权限不足。也有可能是首页文件问题
-
404:文件不存在,可检查请求路径
-
500:服务端错误
-
502:网关错误,一般发生在负载中,请求发送到后面,但是后面没有服务处理
-
503:服务临时不可用,后端负载异常
-
504:网关超时
HTTPS协议
HTTPS协议概念
HTTPS(Hypertext Transfer Protocol Secure)是HTTP(Hypertext Transfer Protocol)的加密版本。它是一种在网络通信中用于保护数据安全的协议。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。HTTPS 使用 443 作为默认端口号
HTTPS与HTTP区别
-
端口号不同
HTTP协议默认使用80端口,而HTTPS协议默认使用443端口 -
加密机制不同
HTTP协议是明文传输,数据在传输过程中没有加密,容易被网络中的设备(如路由器、代理服务器等)或恶意攻击者截获和篡改。
而HTTPS通过使用SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议对数据进行加密。SSL/TLS协议是目前广泛使用的安全协议,它在TCP/IP协议栈的传输层之上,应用层之下,为应用层协议(如HTTP)提供安全服务。 -
传输性能
HTTP明文传输,中间不需要加密解密的操作,相对HTTPS传输速度较快,而HTTPS则需要加密解密的操作,相对效率反而慢 -
应用场景
HTTP适合非敏感数据传输:适用于对安全性要求不高的场景,如公共信息的浏览(如新闻网站、博客等)。
HTTPS适合敏感数据传输:适用于对安全性要求较高的场景,如在线银行、电子商务网站、企业内部系统等,这些场景需要保护用户的隐私信息(如用户名、密码、信用卡号等)。 -
加密证书
HTTP不需要数字证书加密,而HTTPS则需要
HTTPS请求加密原理

- 客户端向服务端发起HTTPS请求,服务端向客户端返回一个数字证书(数字证书中包含了服务器的公钥、证书颁发机构的信息、证书有效期等)
- 客户端收到服务端的证书之后,会进行一系列验证操作,包括验证证书的有效性、颁发机构的可信度以及证书是否被篡改
- 如果证书验证失败,会在浏览器中进行提示连接可能不安全
- 如果证书验证成功,客户端会生成一个随机的密钥,并使用服务器的公钥进行加密
- 客户端将加密后的密钥发送给服务端,服务端使用自己的私钥解密得到该密钥
- 服务端会使用该密钥对响应内容进行加密发送给服务端,然后客户端对其进行解密,至此,加密会话建立
补充:常见的加密方式
对称加密
-
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的
-
常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2 等
-
特点:算法公开、计算量⼩、加密速度快、加密效率高
非对称加密
需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
用法:
- 通过公钥对明文加密, 变成密文
- 通过私钥对密文解密, 变成明文
也可以反着用
- 通过私钥对明文加密, 变成密文
- 通过公钥对密文解密, 变成明文
数据摘要 && 数据指纹
数据摘要为什么叫做数据指纹,因为数据摘要具有唯一性,跟人的指纹一样具有唯一性
- 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
- 摘要常见算法:有 MD5、SHA1、SHA256、SHA512 等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)
- 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比
比如数据库明文密码保存——不推荐,我们就可以将密码进行摘要保存
补充:CA证书
服务端在使用 HTTPS 前,需要向 CA 机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性。

这个证书可以理解成是一个结构化的字符串, 里面包含了以下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/18806406,微信Vac666666,欢迎交流

浙公网安备 33010602011771号