#全面了解HTTP和HTTPS(开发人员必备)

如题所述

第1个回答  2022-07-31

Http和Https属于计算机网络范畴,但作为开发人员,不管是后台开发或是前台开发,都很有必要掌握它们。
在学习Http和Https的过程中,主要是参考了 阮一峰老师的博客 ,讲的很全面,并且通俗易懂,有兴趣的同学可以去学习学习。
这篇文章主要是按照自己的思路来讲解对Http和Https的理解。文章将会从以下几个方面介绍。

目录树( 暂时还不知道编辑器怎么通过目录树进行页面内跳转,哪位同学知道希望不吝告知 ):

从目录结构可以看出,每个标题展开来说都是一个很大的主题。但本文旨在让各位同学对Http和Https相关知识有一个全面的认知,不会太过深入探讨各个主题,有兴趣的同学可以进行针对性研究。

网络结构有两种主流的分层方式: OSI七层模型 TCP/IP四层模型

OSI是指Open System Interconnect,意为开放式系统互联。
TCP/IP是指传输控制协议/网间协议,是目前世界上应用最广的协议。

Http是基于TCP/IP协议的应用程序协议,不包括数据包的传输,主要规定了客户端和服务器的通信格式,默认使用80端口。

Request格式:

Response格式:

说明一下请求头和响应头的部分字段:

Http和Https协议请求时都会通过Tcp三次握手建立Tcp连接。那么,三次握手是指什么呢?

那么,为什么一定要三次握手呢,一次可以吗?两次可以吗?带着这些问题,我们来分析一下为什么必须是三次握手。

通过三次握手, A和B都能确认自己和对方的收发信能力,相当于建立了互相的信任 ,就可以开始通信了。

下面,我们介绍一下三次握手具体发送的内容,用一张图描述如下:

首先,介绍一下几个概念:

知道了上面几个概念后,看一下三次握手的具体流程:

从图中可以看出,建立连接经历了 三次握手 ,当数据传输完毕,需要断开连接,而断开连接经历了 四次挥手

下面是Tcp报文段首部格式图,对于理解Tcp协议很重要:

Https协议是以安全为目标的Http通道,简单来说就是Http的安全版。主要是在Http下加入SSL层(现在主流的是SLL/TLS),SSL是Https协议的安全基础。Https默认端口号为443。
前面介绍了Http协议,各位同学能说出Http存在的风险吗?

SSL/TLS协议就是为了解决这些风险而设计,希望达到:

下面主要介绍SSL/TLS协议。

SSL/TLS协议基本思路是采用公钥加密法(最有名的是RSA加密算法)。大概流程是, 客户端向服务器索要公钥,然后用公钥加密信息,服务器收到密文,用自己的私钥解密
为了防止公钥被篡改,把公钥放在数字证书中,证书可信则公钥可信。公钥加密计算量很大,为了提高效率, 服务端和客户端都生成对话秘钥,用它加密信息,而对话秘钥是对称加密,速度非常快。而公钥用来机密对话秘钥

下面用一张图表示SSL加密传输过程:

详细介绍一下图中过程:

上面提到了,Https协议中需要使用到SSL证书。
SSL证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,需要从经销商购买。
证书有很多类型,按认证级别分类:

EV证书浏览器地址栏样式:

OV证书浏览器地址栏样式:

DV证书浏览器样式:

按覆盖范围分类:

认证级别越高,覆盖范围越广的证书,价格越贵 。也有免费的证书,为了推广Https,电子前哨基金会成立了 Let's Encrypt 提供免费证书。
证书的经销商也很多,知名度比较高的有 亚洲诚信(Trust Asia) 。

加密算法分为 对称加密 非对称加密 Hash加密 算法。

对称加密算法加解密效率高,速度快,适合大数据量加解密。常见的堆成加密算法有 DES、AES、RC5、Blowfish、IDEA
非对称加密算法复杂,加解密速度慢,但安全性高,一般与对称加密结合使用(对称加密通信内容,非对称加密对称秘钥)。常见的非对称加密算法有 RSA、DH、DSA、ECC
Hash算法特性是:输入值一样,经过哈希函数得到相同的散列值,但并非散列值相同则输入值也相同。常见的Hash加密算法有 MD5、SHA-1、SHA-X系列

下面着重介绍一下RSA算法和DH算法。

Https协议就是使用RSA加密算法,可以说RSA加密算法是宇宙中最重要的加密算法。
RSA算法用到一些数论知识,包括 互质关系,欧拉函数,欧拉定理 。此处不具体介绍加密的过程,如果有兴趣,可以参照 RSA算法加密过程 。
RSA算法的安全保障基于 大数分解问题 ,目前破解过的最大秘钥是700+位,也就代表1024位秘钥和2048位秘钥可以认为绝对安全。
大数分解主要难点在于计算能力,如果未来计算能力有了质的提升,那么这些秘钥也是有可能被破解的。

DH也是一种非对称加密算法, DH加密算法过程 。
DH算法的安全保障是基于 离散对数问题

Http和Https的区别如下:

经过了3天的学习总结,总算完成了这篇文章,本文可以帮助读者大体上把握Http和Https的知识框架。并没有深入探讨每个主题的内容,当读者有了自己知识框架之后,可以自行深入了解每个知识点的内容。
这边提供一份总结资料: 计算机网络相关知识汇总 。

相似回答