http与https知识点总结

HTTP

HTTP是一种无状态的传输协议,它随着事件不断演变,目前已经演变到HTTP2.0版本

HTTP 0.9

HTTP0.9作为HTTP协议的第一个版本,是非常弱的,请求只有一行,比如

GET www.csdn.com

从如此简单的请求体,没有POST、没有HTTP头可以看出,那个时代的HTTP客户端只能接收一种类型:纯文本。并且,如果得不到所求的信息,也没有404、500等错误状态码信息。

HTTP 1.0

HTTP1.0最大的改变是引入了POST方法,使得客户端通过HTML表单向服务器发送数据成为可能,这也是WEB应用程序的一个基础。另外一个巨大的改变是引入了HTTP头,使得HTTP不仅返回错误状态码,并且HTTP协议所传输的内容不仅限于纯文本,还可以是图片,动画等一系列格式。通过设置Connection:Keep-Alive的头域,可以建立长连接

HTTP1.1

HTTP1.1不需要设置Connection的头信息,默认使用的是长连接。HTTP1.1在缓存方面增加Cache-Control(HTTP1.0中存在Expires)、ETag(HTTP1.0中存在Last-Modified)和If-None-Match等请求头信息,使缓存更加灵活。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中入股欧内忧Host头域会报告一个错误。此外,还引入了Range头,使得客户端通过HTTP下载时只加载内容的一部分,这使得多线程下载成为可能

HTTP2.0

在HTTP2.0中可以多路复用,多路复用允许同时通过单一的HTTP2.0连接发起多重的请求-响应消息(在HTTP1.1协议中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制,超过下载数目的请求会被阻塞)。
这里写图片描述
因此HTTP2.0可以很容易的去实现多流并行而不用依赖建立多个TCP连接,HTTP2.0把HTTP协议通信的基本单位缩小为帧,这些帧对应着逻辑流中的消息。并行地在同一个TCP连接上双向交换消息。

二进制分帧:HTTP2.0在应用层(http2.0)和传输层(TCP/UDP)之间增加了一个二进制分帧层。在二进制分帧层中,http2.0会将所有传输的信息分割为更小的消息和帧,并对他们进行二进制格式的编码,其中HTTP1.x的首部会被封装到HEADER frame,而相应的Request Body则封装到DATA frame里面
这里写图片描述

首部压缩 : HTTP1.x的header由于cookie和user agent很容易膨胀,而且每次都要重复发送。http2.0使用encoder来减少需要传输的header的大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。高效的压缩算法可以很大的压缩header,减少发送包的数量从而降低延迟。

服务器端推送:服务端推送是一种在客户端请求之前发送数据的机制。在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应。Server Push 让 HTTP1.x 时代使用内嵌资源的优化手段变得没有意义;如果一个请求是由你的主页发起的,服务器很可能会响应主页内容、logo 以及样式表,因为它知道客户端会用到这些东西。这相当于在一个 HTML 文档内集合了所有的资源,不过与之相比,服务器推送还有一个很大的优势:可以缓存!也让在遵循同源的情况下,不同页面之间可以共享缓存资源成为可能

HTTPS

http协议是一种无状态的、明文传输的协议,存在的问题如下

  • 明文通信,内容可以直接被监听(不会对请求和响应的内容进行加密,报文直接使用明文发布)

保护信息安全的方法:通信加密(http协议基于TCP/IP协议族,没有加密机制,但可以通过SSL(Secure Socket Layer安全套接层)建立安全的通信线路,再进行HTTP通信,即HTTPS),对请求和响应的内容加密(客户端(服务器端)加密发送到服务器 服务器(客户端)解密)

  • 无法验证报文的完整性,可能被篡改

无法判断发出的请求/响应和接收到的请求/响应是前后相同的,在请求和响应传输途中,被拦截、篡改的攻击就是中间人攻击 防止方法:MD5散列值校验

  • 通信方身份不验证

可能遇到假的客户端或服务器(可能造成DOS攻击:给服务器发送海量的无意义的请求)解决方法:查明对方证书(SSL提供了叫做“证书”的手段,用于确定通信方的身份)

针对http的一些缺点,https的协议应运而生

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。https协议需要到ca申请证书,一般免费证书很少,需要交费。另外,http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

HTTPS并非是应用层的新协议,而是HTTP通信接口部分用SSL协议代替而已。本来,HTTP是直接和TCP通信的。在HTTPS中,它先和SSL通信,SSL再和TCP通信
HTTP连接的工作原理(盗图自HTTP与HTTPS的区别
这里写图片描述
大概流程如下:
1、客户端发起HTTPS请求

这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

2、服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥(公钥负责加密 私钥负责解密)
3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

参考文献:HTTP/2 新特性浅析
HTTP/2.0 相比1.0有哪些重大改进?
HTTP与HTTPS的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值