美文网首页
HTTPS的理解

HTTPS的理解

作者: 雨天多久就 | 来源:发表于2019-10-13 20:10 被阅读0次

分享HTTPS之前,先简单分享一下其他几个概念

TCP
传输控制协议,是一种面向连接的,可靠的运输层协议。
双方建立了TCP协议后就可以传输数据。
建立TCP连接需要进行三次握手,简单来说就是下面这样:

  • 发起方(一般是客户端)发送SYN报文给服务端,然后进入SYN_SEND状态
  • 服务端收到SYN报文后,回应一个SYN+ACK报文,进入SYN_RECV状态
  • 客户端收到SYN报文后,回应一个ACK报文,进入Established状态
    这样三次握手就完成后连接就建立了,可以开始传输数据

Socket
套接字,它不是一种协议,是对TCP或者UDP的封装,可以理解为一种接口。
通过它可以发送或接收数据。一般通过socket建立的连接,除非一端主动断开,否则会长久保持这个连接,常常用来做IM通信使用。

HTTP协议
超文本传输协议,是一种应用层协议。它基于TCP建立通信连接,然后发起HTTP请求。
一次完整的HTTP请求如下:

  • 客户端根据请求域名,利用DNS域名解析服务去获取对应的IP地址(如果本身使用的就是ip地址,就省去这一步)
  • 根据IP地址等信息去建立TCP连接
  • 建立连接后,发起HTTP请求
  • 服务端响应HTTP请求,将数据返回给客户端

HTTP协议是“请求-响应”的模式。按照正常情况下,服务端返回给客户端数据后就会关闭TCP连接。
但是HTTP1.1版本,为了提高传输效率,会通过keep-alive字段来告诉服务端不要关闭连接,客户端会将这个tcp连接放入池子中等待复用,省去了再次建立TCP的过程,但是还有一点弊端,就是一次只能处理一个连接,在上一次请求没有完成前,都需要等待,而且每次新请求都建立一个tcp连接,池子中的tcp连接过多会对服务端资源产生较大浪费。
HTTP2.0版本解决了上面的问题,实现了可以多路复用解决上面的问题。可以实现多个请求同时在这个tcp连接上进行。实现原理是:将数据分成了多个stream,每个stream都有标识可以知道是哪个连接请求的,因此多个请求可以同时在这个TCP上进行数据传递。

SSL/TLS
安全套阶层。SSL是早期的版本,TLS是标准化后的版本,可以理解为一个东西不同时期的叫法。
个人理解,主要是用来协商如何加密的。

  • 客户端发送支持的加密协议以及版本等等信息
  • 服务端根据这些信息,选择合适的加密协议,返回SSL证书等
  • 客户端通过系统内置的CA受信任列表来验证SSL证书的合法性
  • 客户端生成对称密钥,通过证书中的公钥加密,发给服务端
  • 服务端用私钥解密,获取对称密钥,使用密钥加密数据告诉客户端“好的”
  • 客户端使用对称密钥加密数据开始进行HTTP请求
    ……

HTTPS
和上面的HTTP相比,多了一个S。
其实HTTPS就相当于HTTP+SSL/TLS

  • 为什么要加一个SSL?
    因为HTTP协议实在太不安全了,已经远远不能满足人们的需求。
    首先,HTTP是明文传输,大多数人利用工具就可以进行抓包截取,你的所有信息几乎裸露给了其他人。
    其次,它很容易受到中间人攻击。不法分子可以截断你和服务器的交流,自己伪装成服务器进行不法事情。

一次完整的HTTPS请求如下:

  • 客户端根据请求域名,利用DNS域名解析服务去获取对应的IP地址(如果本身使用的就是ip地址,就省去这一步)
  • 根据IP地址等信息去建立TCP连接
  • 建立连接后,开始协商如何加密
  • 协商加密完成后,开始加密数据进行HTTP请求
  • 服务端收到请求,将数据进行加密后返回

参考地址:
http://www.httpclient.cn/category/https/
https://blog.51cto.com/11883699/2160032

相关文章

  • HTTPS的理解

    1.Socket?后学习---------------------------------------------...

  • Https的理解

    Https的理解 http 协议的缺点 通信使用明文,内容可能会被窃听TCP/IP是可能被窃听的网络。 不验证对方...

  • HTTPS的理解

    分享HTTPS之前,先简单分享一下其他几个概念 TCP传输控制协议,是一种面向连接的,可靠的运输层协议。双方建立了...

  • https的理解

    学习笔记来自这两篇博客 图解 HTTPS:Charles 捕获 HTTPS 的原理 聊聊对称/非对称加密在HTTP...

  • HTTPS 理解

    HTTPS和HTTP 因为HTTP使用明文传输,这就催生了HTTPS。HTTPS与HTTP的区别在于,HTTPS会...

  • HTTPS理解

    如何理解HTTPS,翟志军写的这个博客文章觉得不错:通俗易懂。 也许,这样理解HTTPS更容易

  • 理解 HTTPS

    前言 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务...

  • HTTPS理解

      学习《图解http》笔记。总结一下https方面的内容。  互联网,是由能连通到全世界的网络组成的。无论世界哪...

  • Https理解

    简单的理解下https:https在http请求的基础上多加了一个证书认证的流程。认证通过之后,数据传输都是加密进...

  • 更好的理解HTTPS

    本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计...

网友评论

      本文标题:HTTPS的理解

      本文链接:https://www.haomeiwen.com/subject/jcjyyctx.html