http 和 https 的区别

一.HTTP 传输协议

1.1 什么是http协议

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于 TCP、IP 协议,互联网目前使用的最为广泛的网络协议,所有的 WWW 文件都必须遵守这个标准,设计 HTTP 协议的初衷,就是为了提供一种发送和接受 http 页面的方法。

版本 产生时间 内容
http 0.9 1991 不涉及数据包传输,规定客户端和服务器之间只能进行Get请求
http 1.0 1996 传输格式不显示,增加 Put,Patch,Head,Options,Delete命令
http 1.1 1997 增加了长链接,管道机制,分块传输编码
http 2.0 1996 多路复用

多路复用的功能

多个 stream 公用一个 TCP/IP 连接

http报文

HTTP请求报文和HTTP响应报文

https

https 是身披 SSL 外壳的HTTP,HTTPS 是一种通过计算机网络进行安全通信的传输协议,经过 HTTP 进行通信,利用 SSL/TLS 建立安全通信,加密数据包, HTTPS 主要就是通过对网站服务器的身份认证,同时保护交互数据的隐式与完整性

http特点

  • 无状态
  • 无连接(发完数据就断开联系
  • 基于请求和相应,由客户端发起,服务器端响应
  • 简单快速,灵活,(因为说断开就断开,说响应就相应)
  • 他是用明文的方法进行传输,而且不会对通信的双方,进行确认,无法保证数据的完整性。

https特点

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证,客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被人篡改

HTTP通信传输

客户端输入 URL 回车,DNS 解析域名得到服务器的IP 地址,服务器端在 80 端口监听客户端的请求,端口通过 TCP/IP 协议建立 HTTP 请求。

HTTPS 的原理

  • http 默认的端口号是80;
  • https 默认的端口号是:443;

连接过程

  • clientserver 发送请求,到服务器的443端口,内容包括,一个随机数 和一个客户端支持的 加密算法
  • 客户端收到信息以后,给服务器端一个相应握手机制,server 会返回给服务器端一个随机数,还有匹配好的加密算法,这个加密算法,一定是匹配好的加密算法 的子集。
  • 随后server 会往client 发送的是一个数字证书server 必须有一套自己的数字证书 ,他可以只制作,也可以向组织申请,区别在于自己制作的需要经过客户端认证,其实这个证书就是一个 公钥
  • 如果客户端认证了数字证书以后,就会产生一个随机值(预主密钥
  • 然后客户端将 随机数1随机数2预主密钥,组成 会话密钥,然后通过数字证书的公钥,来加密会话密钥
  • 服务器端解密,得到随机数1随机数2预主密钥,验证他们和客户端的相同
  • 客户端先发一条加密的消息给服务器,确定服务器能收到
  • 服务器也发送一条加密的消息给客户端,保证客户端能收到,那么SSL 连接就建成了

HTTPS的问题

  • https 加密也还是有限的,不能防止对服务器的攻击
  • SSL 证书也不是绝对安全的,比如某灯塔国家,可以控制 AC 证书,
  • SSL 证书需要购买,功能越强大,也就越贵
  • https 协议会让界面的加载速度延长 50%
  • https 缓存不如 http 连接高效
  • https 会占用很多的服务器资源,导致服务器压力增大,或者增大部署服务器的成本。

参考文献

【快速搞懂HTTP与HTTPS】 https://www.bilibili.com/video/BV1rt4y1m7o5/?p=5&share_source=copy_web&vd_source=80cf96a12f63a1720dfc645c2eb041c0
https://blog.csdn.net/LVXIANGAN/article/details/73187726

posted @ 2021-05-14 00:50  沧海一声笑rush  阅读(408)  评论(0编辑  收藏  举报