HTTP和HTTPS协议及工作原理分析
HTTP协议概念
HTTP协议(HyperText Transfer Protocol,超文本传输协议,属于应用层)是用于从服务器传输超内容到本地浏览器的传送协议。是一个无状态的协议
想了解http,就需要了解TCP,IP协议。因为http是基于TCP,IP层上面的。如下图所示:
整张图应该从下边向上看,假设别人想发一条信息给我的电脑。首先是通过网络把信息传导到的电脑,但不能说我的电脑对于所有的信息都接受,我会判断信息,之后在处理信息,这些就是七层模型做的事情。一步一步分开来看 ,并用打电话这一创建的例子来对应:
到这里为止,其实信息还没有传递到我们的电脑,可以理解为信息在路由网络间传递。
总结起来就是:
-
信息发出(www)
-
看到信息
对于HTTP网络应用,我们在网络层用的是IP,在传输层用的是TCP。
IP: internet protocal。顾名思义,网络协议。他能确保计算机之间在网络上互相通信,但是他不检查消息是否以发送次序到达而没有损坏,因此,我们需要上一层来检验消息。于是有了TCP层
TCP: 保证信息正确次序,内容不变。同时引入端口分发给不同的服务。同时分割数据为更小的ip包,到达时重组。
HTTP: 当信息解读好,我们传给HTTP层,即为应用层。超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
以上是对支撑HTTP的网络七层的概括,我们需要理解为什么要在http层下面有那么多层,每一层的目的是什么。
明白了这些之后,问题来了,这七层是怎么知道自己应该怎么解读数据,而不是说TCP层解读HTTP层。这里面就是网络数据的封装和传递了:
从这个图中,我们可以看到每一层的数据都会被一个这层的头信息包裹。
之后我们在接收到信息时再一层一层读取信息
讲完http,我们会发现,我们传递的信息在网络上经过那么多物理层的传输,保不准会被别人截获,而我们却一点也不知道。于是我们想到要加密我们传输的数据。因为只有http层信息是我们要的,所以在这一层下面加入一层来加密信息。这一层就是SSL层,同时我们如果想传给ssl层,我们用端口443.
ssl层简称安全套阶层,主要就是加密解密。
一开始我们会说,我们就让服务器给我们一个公钥,每次用他来解密不就行了。但是这种办法不可以,因为别人同样可以截获你的公钥,毕竟公钥也是在网络上传递的。
于是我们就要想一种办法,让我们的公钥也被加密,并且这个加密方式是在服务器或者我们电脑上进行的,这样才安全
HTTPS协议
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),简单来讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。其所用的端口号是443。
SSL:(Secure Socket Layer,安全套接字层),通过使用证书认证来确保客户端和网站服务器之间的通信数据是加密安全的。SSL协议位于TCP/IP协议与各种应用层协议之间。
TLS:TLS(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。SSL和TLS的主要区别?
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。
说到HTTPS肯定少不了加解密算法,我们来了解下相关内容
有两种基本的加解密算法类型:
1、对称加密(symmetrcic encryption):密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES,RC5,3DES等;例如我们创建一个带密码(口令)的加密压缩包。当你下次要把这个压缩文件解开的时候,你需要输入【同样的】密码。在这个例子中,密码/口令就如同刚才说的“密钥”。
对称加密主要问题是共享秘钥,除你的计算机(客户端)知道另外一台计算机(服务器)的私钥秘钥,否则无法对通信流进行加密解密。解决这个问题的方案是非对称加密。
2、非对称加密:使用两个秘钥:公共秘钥和私有秘钥。私有秘钥由一方密码保存(一般是服务器保存),另一方任何人都可以获得公共秘钥。一般来说指:加密时使用公钥,解密时使用私钥。
这种密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
如图:
总结及答疑
① 证书验证阶段
② 数据传输阶段
为什么数据传输是用对称加密?
非对称加密的加解密效率是非常低的,而在https 的应用场景中通常客户端端与服务端之间存在大量的ajax交互,非对称加密的效率是无法接受的;
另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
为什么需要 CA 认证机构颁发证书?
HTTP 协议被认为不安全是因为传输过程容易被监听、伪造服务器,而 HTTPS 协议主要解决的便是网络传输的安全性问题。
首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的“中间人攻击”问题。
“中间人攻击”的具体过程如下:
过程原理:
由于缺少对证书的验证,所以客户端虽然发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。
中间人攻击:总结起来一句话就是客户端不知道CA证书是不是合法的,谁都可以冒充合法的服务器,从而获取到真实的客户端生成的内容及随机数相关的值,然后中间人再利用获取到这些值去和真实的服务器进行https请求(这个过程是合法的,因为中间人这个服务器拿的真实的客户端数据,模仿真实的客户端请求)。
浏览器如何验证证书的合法性?
只有认证机构可以生成证书吗?
从技术上角度来看谁都可以生成证书,只要有证书就可以完成网站的 HTTPS 传输。但是浏览器会提示风险。
用了 HTTPS 会被抓包吗?
会,但是得是用户授权了同意了访问该网站,只要是用户主动授权访问风险网站,都可能造成数据被中间人抓包
总结
以上是生活随笔为你收集整理的HTTP和HTTPS协议及工作原理分析的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: JAVA实现网页版斗地主_Java实现斗
- 下一篇: rocketmq 初探(四)