HTTPS原理——计算机网络原理

HTTP(Hyper Text Transfer Protocol)

超文本传输协议

在这里插入图片描述

HTTP协议格式

请添加图片描述

这个报文中的空行是为什么呢?

其实为了解决黏包问题。主要原因如下:
(1)因为HTTP协议并没有规定报头部分的键值对有多少个,使用空行就相当于报文的结束标记。
(2)因为TCP协议中面向字节流传输,也是为了解决TCP传输中的黏包问题。

请求格式

在这里插入图片描述

这里先说明URL的概念

URL (Uniform Resource Locator 统一资源定位符),互联网上的每个文件都有一个唯一的URL,指出了文件的位置与唯一标识。

请添加图片描述

GET方法(首行)

用于获取服务器上的某个资源。

GET请求的特点:

  • 首行里的第一个部分就是GET
  • URL里面的query string可以为空,也可以不为空
  • GET请求的body一般是空的

POST方法(首行)

用于提交用户输入的数据给服务器

POST请求的特点:

  • 首行里的第一个部分就是POST
  • URL里面的query string一般是空的
  • GET请求的body一般不为空

GET方法和POST方法是可以相互转化的,因为提交给请求本身就是相互转化的

Q:GET和POST的区别?

A:GET方法和POST方法主要是使用习惯的不同,主要有以下三点:

  • GET方法习惯于通过query string来传输,POST习惯于通过body来传输

  • GET方法习惯于从服务器获取数据,POST方法习惯于客户端给服务器提交数据

  • 一般情况下,GET请求的数据会实现成幂等的,而POST则不要求。

    (关于幂等的内容,可参考博文)

协议头

整体结构是键值对结构,每个键值占一行,键和值之间使用冒号+空格进行分割。

key value
HOST 表示服务器主机的地址和端口
Content-Length 表示body的数据长度
Content-Type 表示body的数据格式
User-Agent 表示浏览器的属性

响应格式

在这里插入图片描述

状态码

200 OK 表示访问成功
404 Not Found 表示访问资源不存在
403 Forbidden 表示访问被拒绝
504 Gateway Timeout 表示服务器超时

HTTPS的诞生

由于HTTP协议并不能保证信息的安全性,因此HTTPS协议出炉

HTTPS(HTTP OVER SSL):SSL(Secure Socket Layer)安全套接字层,工作于传输层与应用层之间,为应用提供数据的加密传输,就是在HTTP传输的基础上增加了SSL协议的加密能力。

SSL的原理:非对称加密(RSA)

将对称加密中的密钥使用非对称加密传输,这样保证了安全性和效率性。

算法的简单介绍:RSA算法

简单来说:就是以下的步骤:

  1. 甲和乙分别根据RSA生成一对密钥,互相发送公钥
  2. 甲使用乙的公钥给乙加密信息
  3. 乙收到信息后,用自己的私钥进行解密

-——但是仅仅如此还不够,很容易通过伪装实现欺骗——

这就产生了数字证书(Certificate Authority):保证交流双方的安全性

访问一个HTTPS网站的大致流程

浏览器 操作 服务器
发送请求,包括协议内容和一个随机数
使用RSA算法把数字证书签名,身份信息发送给浏览器,包括一个随机数
验证证书的真实性,获得对应公钥,用服务器的公钥发送密钥X给服务器
服务器用私钥解密出信息,得到密钥X

这部分建议可以再深入学习一下这篇文章:

彻底搞懂HTTPS的加密原理

posted @ 2022-11-29 11:51  深海之燃  阅读(54)  评论(0编辑  收藏  举报