HTTP与HTTPS的区别?
若是之前别人这么问我,我会说HTTPS须要证书是安全的传输协议HTTP不带证书传输数据不安全容易被拦截。大致上确实也是如此,可是若是问道具体是怎么作的?为何是安全的?我不知道怎么回答。今天大概梳理了一下。html
HTTP与HTTPS
- 看下图,实际上http与https的区别就在与ssl层。
- tls是ssl3.0之后的版本,能够理解为ssl3.1
- ssl层是作什么的?
使用过捉包工具的都知道,https须要配证书。ssl层就是用于验证证书的。web
大概流程如上,那么证书又是作什么的。
证书
- 证书的申请
- 由服务器向CA机构提供非对称加密的公钥申请,也能够本身生成,例如捉包工具的证书就是本身生成的。可是本身生产的客户端跟浏览器都是不维护的,获取不到对应的信息,默认不受信任。而CA机构的证书是公开的,客户端跟浏览器能够获取到。
- 证书包含的主要信息
- 证书颁发机构
- 证书颁发机构签名
- 证书绑定的服务器域名
- 证书版本、有效期
- 签名使用的加密算法
- 公钥
- 怎么验证证书是否有效?
服务器:算法
- 用哈希算法对报文提取定长摘要
- 用私钥对摘要进行加密,做为数字签名
- 将数字签名附加到报文末尾发送给客户端
客户端:浏览器
- 用公钥对服务器的数字签名进行解密
- 用一样的算法从新计算出报文的数字签名
- 比较解密后的签名与本身计算的签名是否一致。
对称加密与非对称加密
简单的说对称加密是双方使用同样的加密方法进行加密,因此可使用对应的方法解密。非对称加密是产生惟一的公钥和私钥。使用公钥加密的数据只能用私钥解密,使用私钥加密的数据只能用公钥解密。安全
安全与不安全问题
假设使用http而且使用加密的通信被拦截了 服务器
为何捉包配置证书后能够拦截信息?
其实使用捉包真正发起请求跟接受请求的都是捉包工具,客户端只要配置捉包工具的证书跟捉包工具通信便可网络
来自博客
blog.csdn.net/zwjemperor/…的图片
Socket与WebSocket、HTTP的区别
看过Okhttp源码的都知道,okhttp底层是用socket发送请求的。所以会产生疑问,为何能够用socket代替http。socket
WebSocket、Socket、TCP、HTTP区别这篇博客讲的不错,简单的来讲。Socket封装了TCP协议、HTTP与WebScoket封装了Socket协议。工具
- Socket是与传输层与应用层之间的一层封装。方便提供通信能力
- 服务器经过识别传输的内容,例如http的请求头、请求体等等。识别是长链接或是短链接(Http)
- WebSocket不一样与Socket,Socket能够直接与服务器通信,WebSocket须要借助HTTP协议进行第一次握手,握手成功后转为TCP/UDP变成长链接。因此Websocket毫不仅仅只是适用在web端。
最后学习
虽然写的比较浅,可是也算梳理了一下网络通信协议。有些也是一边查资料一边整理的,因此可能存在一点错误。而我想的是,若是写一篇博客本身不能学习的话可能根本不想写,毕竟本身技术有限还没也有到大牛那种能够拿出来分享的阶段。
最开始坚持的地方,记录学习与生活的点点滴滴