HTTP、HTTPS、Socket、WebSocket的区别

HTTP与HTTPS的区别?

如果以前别人这么问我,我会说HTTPS需要证书是安全的传输协议HTTP不带证书传输数据不安全容易被拦截。大体上确实也是如此,但是如果问道具体是怎么做的?为什么是安全的?我不知道怎么回答。今天大概梳理了一下。

HTTP与HTTPS

  1. 看下图,实际上http与https的区别就在与ssl层。

  • tls是ssl3.0以后的版本,可以理解为ssl3.1
  1. ssl层是做什么的?

使用过捉包工具的都知道,https需要配证书。ssl层就是用于验证证书的。

大概流程如上,那么证书又是做什么的。

证书

  1. 证书的申请
  • 由服务器向CA机构提供非对称加密的公钥申请,也可以自己生成,例如捉包工具的证书就是自己生成的。但是自己生产的客户端跟浏览器都是不维护的,获取不到对应的信息,默认不受信任。而CA机构的证书是公开的,客户端跟浏览器可以获取到。
  1. 证书包含的主要信息
  • 证书颁发机构
  • 证书颁发机构签名
  • 证书绑定的服务器域名
  • 证书版本、有效期
  • 签名使用的加密算法
  • 公钥
  1. 怎么验证证书是否有效?

服务器:

  • 用哈希算法对报文提取定长摘要
  • 用私钥对摘要进行加密,作为数字签名
  • 将数字签名附加到报文末尾发送给客户端

客户端:

  • 用公钥对服务器的数字签名进行解密
  • 用同样的算法重新计算出报文的数字签名
  • 比较解密后的签名与自己计算的签名是否一致。

对称加密与非对称加密

简单的说对称加密是双方使用一样的加密方法进行加密,所以可以使用对应的方法解密。非对称加密是产生唯一的公钥和私钥。使用公钥加密的数据只能用私钥解密,使用私钥加密的数据只能用公钥解密。

安全与不安全问题

假设使用http并且使用加密的通讯被拦截了

为什么捉包配置证书后可以拦截信息?

其实使用捉包真正发起请求跟接受请求的都是捉包工具,客户端只要配置捉包工具的证书跟捉包工具通讯即可

来自博客 blog.csdn.net/zwjemperor/…的图片

Socket与WebSocket、HTTP的区别

看过Okhttp源码的都知道,okhttp底层是用socket发送请求的。因此会产生疑问,为什么可以用socket代替http。

WebSocket、Socket、TCP、HTTP区别这篇博客讲的不错,简单的来说。Socket封装了TCP协议、HTTP与WebScoket封装了Socket协议

  • Socket是与传输层与应用层之间的一层封装。方便提供通讯能力
  • 服务器通过识别传输的内容,例如http的请求头、请求体等等。识别是长连接或是短连接(Http)
  • WebSocket不同与Socket,Socket可以直接与服务器通讯,WebSocket需要借助HTTP协议进行第一次握手,握手成功后转为TCP/UDP变成长连接。所以Websocket绝不仅仅只是适用在web端。

最后

虽然写的比较浅,但是也算梳理了一下网络通讯协议。有些也是一边查资料一边整理的,所以可能存在一点错误。而我想的是,如果写一篇博客自己不能学习的话可能根本不想写,毕竟自己技术有限还没也有到大牛那种可以拿出来分享的阶段。


最开始坚持的地方,记录学习与生活的点点滴滴

转载于:https://juejin.im/post/5c7c631b6fb9a049f746eb37

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值