Http与Https协议的爱恨情仇

17 篇文章 1 订阅
3 篇文章 0 订阅
本文概述了HTTP和HTTPS的发展史,重点介绍了HTTP的特点和HTTPS的加密原理,以及如何通过HTTPS通信和实现数据安全。涵盖了从HTTP升级到HTTPS的必要性,以及HTTPS如何确保内容加密和身份验证。
摘要由CSDN通过智能技术生成

目录

一.http和https发展历史

 1.HTTP

2.HTTPS

二.http通信传输

三.https实现原理


一.http和https发展历史

 1.HTTP

超文本传输协议,是一个基于请求于响应,无状态的,应用层的协议,常基于Tcp/IP协议

传输数据,互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个标准

,设计http的初衷是为了提供一种发布和接收HTML页面的方法。

HTTP/0.9:不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求

HTTP/1.0:传输内容格式不限制,增加PUT,PATCH,HEAD,OPTIONS,DELETE命令

HTTP/1.1:持久连接,节约带宽,HOST域,管道机制,分块传输编码

HTTP/2:多路复用,服务器推送,头信息压缩,二进制协议等

http报文格式

 

2.HTTPS

HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,

经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。https使用的主要目的是提供

对网络服务器的身份认证,同时保护交换数据的隐私与完整性。

  • HTTP与HTTPS

http特点:

1.无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作

2.无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。

3.基于请求和响应:基本的特性,由客户端发起请求,服务端响应

4.简单快速、灵活

5.通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

(注意)HTTP协议传输数据以明文形式显示

对于无状态的一些解决方法:

通过Cookie/Session技术

HTTP/1.1持久连接方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接

https特点:

基于http协议,通过SSL或TLS提供加密处理数据,验证对方身份以及数据完整性保护

数据不是明文传输,且有如下特点:

内容加密:采用混合加密技术,中间者无法查看明文内容

验证身份:通过证书认证客户端访问的是自己的服务器

保护数据完整性:防止传输的内容被中间人冒充或者篡改

二.http通信传输

客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。HTTP属于TCP/IP模型中的运用层协议,所以通信的过程其实是对应数据的入栈和出栈。

 

报文从运用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接。

为什么需要三次握手呢?

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。

为什么需要四次挥手呢?

TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP

连接。

三.https实现原理

  1. client向server发送请求https://baidu.com,然后连接到server的443端口,发送的信息主要是随机值1和客户端执行的加密算法
  2. server接收到信息之后给予client响应握手信息,包括随机值2和匹配好的协商加密算法,这个加密算法一定是client发送给server加密算法的子集
  3. 随即serverclient发送第二个响应报文是数字证书。服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问
  4. 客户端解析证书,这部分工作是由客户端的TLS来完成的
  5. 客户端认证证书通过之后,接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。
  6. 传送加密信息,这部分传送的是用证书加密后的会话秘钥,目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。
  7. 服务端解密得到随机值1、随机值2和预主秘钥,然后组装会话秘钥,跟客户端会话秘钥相同
  8. 客户端通过会话秘钥加密一条消息发送给服务端,主要验证服务端是否正常接受客户端加密的消息。
  9. 同样服务端也会通过会话秘钥加密一条消息回传给客户端,如果客户端能够正常接受的话表明SSL层连接建立完成了。

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yookay zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值