IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 浅谈HTTP与HTTPS -> 正文阅读

[网络协议]浅谈HTTP与HTTPS

前言----密码学基础

在正式了解HTTP与HTTPS之前,我们需要先了解一些密码学的知识。
明文: 明文指的是未被加密过的原始数据。
密文:明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。
密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥,分别应用在对称加密和非对称加密上。

对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
其加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下: 密文 + 解密算法 + 私钥 => 明文

对称加密中用到的密钥叫做私钥,私钥表示个人私有的密钥,即该密钥不能被泄露。
其加密过程中的私钥与解密过程中用到的私钥是同一个密钥,这也是称加密之所以称之为“对称”的原因。由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难。

非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的密钥,如果一方的密钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。

被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文

由于加密和解密使用了两个不同的密钥,这就是非对称加密“非对称”的原因。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

引用于:https://www.jianshu.com/p/14cd2c9d2cd2

一、HTTP和HTTPS的基本概念

1.1 HTTP(Hyper Text Transfer Protocol)

超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
协议】是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则。也就是大家事先约定好的,统一执行的标准。
HTTP是无状态的,无连接的。无连接指在HTTP 1.0中,每次建立起的TCP连接只处理一个请求,收到客户的应答之后就立即断开连接。

1.2 HTTPS (Hyper Text Transfer Protocol Secure)

HTTPS是由SSL(Secure Sockets Layer 安全套接层)+HTTP 构建的可进行加密传输、身份认证的网络协议。是以安全为目标的HTTP通道,是HTTP的安全版。
简单的理解,HTTPS 就是将 HTTP 中的传输内容进行了加密,然后通过可靠的连接,传输到对方的机器上。加密的协议是 TLS,其前身是 SSL。

二、HTTP和HTTPS的区别

  • 在安全性上,HTTPS是要远大于HTTP的,因为HTTP在传输过程的数据是明文,是不加密的,而HTTPS在SSL的加密操作下,在网络中传输的数据是密文,外人无法通过正常手段获取数据。但安全性的相对的,HTTPS的安全性也会受到外来的攻击,只是攻击者要麻烦很多。
  • 它们使用不同的连接方式,端口也不同,一般而言,HTTP的端口为80,HTTPS的端口为443。
  • 申请证书上,HTTPS需要使用CA申请证书。为了进一步提高HTTPS的安全性,应运而生了这样的官方组织机构,即数字证书认证机构(Certificate Authority,缩写为CA),该机构主要用来认证公钥。

三、HTTP与HTTPS的工作原理

3.1 HTTP的工作原理

HTTP由请求和响应构成,是一个标准的客户端服务器模型(C/S)。HTTP永远都是客户端发起请求,服务器回送响应。

  1. 地址解析。域名系统DNS解析域名得到主机的IP地址
  2. 封装HTTP请求数据包。封装的内容有以上部分结合本机自己的信息
  3. 封装成TCP包,建立TCP连接(TCP的三次握手)
  4. 客户机发送请求命令。建立连接后,客户机向服务器发送一个请求
  5. 服务器响应。服务器接到请求后,给予相应的响应信息
  6. 服务器关闭TCP连接。一般Web服务器向浏览器发送了请求数据,它要关闭TCP连接
  7. 客户端解析报文,解析HTML代码,并渲染

3.2 HTTPS的工作原理

HTTPS通信时,首先建立SSL层的连接,客户端将SSL版本号和加密组件发到服务器端,服务器端收到后,对SSL版本号和加密组件进行匹配,同时将CA证书及密钥发送到客户端。客户端对证书进行验证,验证通过后使用非对称加密对数据通信时的密钥进行协商。协商后得到一致的对称加密密钥。然后使用对称加密算法进行TCP连接,后续的过程与HTTP的过程一致。三次握手,数据交换,四次挥手,通信结束。

过程如下:

  1. 客户端和服务器端通过TCP建立连接
  2. 客户端向服务器发送HTTPS请求
  3. 服务器响应请求,并将数字证书发送给客户端,数字证书包括公共密钥、域名、申请证书的公司
  4. 客户端收到服务器端的数字证书之后,会验证数字证书的合法性
  5. 如果公钥合格,那么客户端会生成一个用于进行对称加密的密钥client key,并用服务器的公钥对客户端密钥进行非对称加密
  6. 客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器
  7. 服务器接受到客户端发来的密文之后,会用私钥对其进行非对称解密,得到客户端密钥。并使用客户端密钥进行对称加密,生成密文并发送
  8. 客户端收到密文,并使用客户端密钥进行解密,渲染网页

四、HTTPS的优点与缺点

4.1 优点

  1. 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
  2. HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比HTTP安全,可防止数据在传输数据过程中不被窃取、篡改,确保数据的完整性
  3. HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
  4. 谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”

4.2 缺点

  1. HTTPS握手阶段比较费事,会使页面的加载时间延长近50%,增加10%到20%的耗电
  2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而收到影响
  3. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要购买证书
  4. SSL证书通常需要绑定IP,不能在同一上绑定多个域名,IPv4资源不可能支撑这个消耗
  5. HTTPS的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

引用于:https://blog.csdn.net/JAck_chen0309/article/details/105020259

五、HTTP 消息结构

5.1 客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
在这里插入图片描述

5.2 服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
在这里插入图片描述

六、HTTP 请求方法

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改
PUT从客户端向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面
CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,主要用于测试或诊断
PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新

虽然 HTTP 的请求方式有 8 种,但是我们在实际应用中常用的也就是 get 、 post、put和delete

七、HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

八、总结

HTTP的应用在web开发中有着举足轻重的地位,优秀的web开发人员应该有着充沛的HTTP知识。要想充分理解与使用HTTP相关的知识,还是需要时间的积累与实战的经验支持,任重而道远。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:59:17  更:2021-07-31 16:59:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:34:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码