HTTP 与 HTTPS

HTTP协议

一、什么是HTTP协议

  • HTTP协议就是超文本传输协议
  • 用于 服务器客户端浏览器之间传输超文本数据(文字、图片、视频、音频)应用层协议

HTTP是属于应用层的协议,也是一个双向协议,他基于浏览器-服务器架构模型进行工作

二、HTTP 协议通信过程

HTTP是一个应用层的协议,默认端口是80(使用默认端口时,端口可省略不写)

在传输层使用 TCP 协议进行数据传输

b273efef5f2388e26414135672b00295.png

HTTP协议通信过程:

  1. 用户发起请求
  2. 客户端向服务器发送一次连接请求
  3. 服务器接受到请求并创建连接
  4. 浏览器生成HTTP格式的数据包,并发送给服务器
  5. 服务器接收到数据包并解析
  6. 然后执行相应的操作
  7. 然后生成一个HTTP格式的响应数据包并发送给浏览器
  8. 浏览器解析响应数据包,并呈现HTML页面给客户

三、URL

  • HTTP协议使用 URL (统一资源定位符)来定位资源
  • 格式:http://host[":"port][abs_path]
    示例:http://192.168.0.116:8080/index.html
什么是URI

URL 是 URI(统一资源标识符) 的子集,URL在URI的基础上增加了定位功能

URI.png

四、HTTP报文

1、请求报文

是浏览器向服务器发送请求时的报文,服务器会根据请求报文中携带的数据进行处理

(1)请求报文结构
  • 第一行是请求行,包含:请求方式、URL请求路径、协议版本
  • 然后就是HTTP的消息行,包含若干个首部字段
  • 一个空行来分割
  • 最后是请求的消息体

4.jpg

2、响应报文

当服务器处理完请求后,会将响应数据放入 http 响应报文中返回给浏览器

(1)响应报文结构
  • 第一行是状态行,包含:协议版本,状态码以及描述
  • 接下来是消息头(若干行)
  • 一个空行分割
  • 最后是消息体

4.jpg

五、HTTP请求方式

1、GET:获取资源

GET方法用于使用给定的URL从给定服务器中检索信息,完成从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不会对数据产生其他影响

2、POST:提交数据增加资源

POST方法用于将数据发送到服务器以创建或增加资源。使用post方法,如果两个请求相同,后一个请求不会覆盖第一个请求,所以post用于增加资源。

3、HEAD:获取响应报头

和 GET 方式相似,但是仅会返回响应报头部分

4、PUT:修改资源

PUT方法用来修改资源,要求在请求报文的主体中包含数据内容,然后保存到请求URL指定位置。使用put方法,如果两个请求相同,后一个请求会覆盖第一个请求,所以put用于修改资源

5、DELETE:删除资源

DELETE方法用来删除指定的资源

6、OPTIONS:查询支持的方法

查询指定的 URL能够支持的方法。会返回 Allow: GET, POST, HEAD, OPTIONS等请求方式内容

7、GET 和 POST 的区别
  • GET 用于获取数据、POST 用于提交数据
  • 报文格式不同
  • GET 使用 URL 传递请求参数,POST 使用 请求体提交数据
  • GET 是幂等的,POST 非幂等
    • 幂等就是指多次执行相同的操作,结果都是相同的

六、HTTP状态码

1、1xx 信息
  • 1xx 类状态码属于提示信息,是协议处理中的一种中间状态
2、2XX信息(表示服务器成功处理了客户端的请求)
  • 200:OK,最常见的成功状态码
  • 204:No Content,与200基本相同,但响应报文没有body数据
  • 206:Partial Content ,返回部分body数据
3、3XX信息(表示客户端请求的资源发生了变动,需要客户端重新发送)
  • 301:表示永久重定向,说明请求的资源已经不存在看,需改用新的URL再次访问
  • 302:表示临时重定向,说明请求的资源还在,需要用另一个URL访问
4、4XX信息(客户端发送的报文有错)
  • 400:表示客户端请求报文有错
  • 403:表示服务器禁止访问
  • 404:表示找不到资源
  • 405:表示服务器不支持客户端采用的请求方式
5、5XX信息
  • 500:服务器发生错误(代码抛异常)
  • 501:表示客户端请求的功能还不支持
  • 502:表示服务器自身工作正常,访问后端服务器发生错误
  • 503:服务器很忙,暂时无法响应

七、连接管理

1、短连接和长连接
  • HTTP 1.0 默认使用短连接,如果使用长连接,则使用 Connection : Keep-Alive
  • 短连接就是每次进行通信时,都要创建一次独立的TCP连接
  • HTTP 1.1 改用为长连接,也叫持久性连接,如果要断开连接,需要由客户端或者服务器端提出断开,使用 Connection : close
  • 长连接就是建立一次TCP连接,便可以完成多次通信
  • 长连接减轻了服务器端的负载

16-短连接与长连接.png

2、管线化连接
  • 批量提交多个 HTTP请求,这个过程中不需要先等服务器的回应
  • 管线化连接建立在长连接基础之↑做的改装

HTTP1_x_Connections.png

八、HTTP 和 HTTPS 的区别

  • HTTP 的信息是明文传输,存在安全性问题,HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL 安全协议,使得报文能够加密传输
  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL 的握手过程,才可进入加密报文传输
  • HTTP 的端口号是 80,HTTPS 的端口号是 443
  • HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的

九、HTTPS 的工作原理

  • 用户通过浏览器请求https网站,服务器收到请求,选择浏览器支持的加密和hash算法,同时返回数字证书给浏览器,证书中包含:颁发机构、网址、公钥、证书有效期等信息。
  • 浏览器对证书的内容进行校验,如果有问题,则会有一个提示警告。否则,就生成随机秘钥X,同时使用证书中的公钥进行加密,并且发送给服务器。
  • 服务器收到之后,使用私钥解密,得到随机秘钥X,然后使用随机秘钥X对网页内容进行加密,返回给浏览器。
  • 浏览器则使用随机秘钥X和之前约定的加密算法进行解密,得到最终的网页内容

https.webp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kⅈꫛᧁ269

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值