抛砖引玉 HTTP 和 HTTPS

Posted carrot-cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抛砖引玉 HTTP 和 HTTPS相关的知识,希望对你有一定的参考价值。

<一个幼儿园小班的前端的成长随笔,错误与不足之处,望各位大牛批评指点,谢谢!>

HTTP/80

超文本传输协议: 是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据

目的: 设计HTTP是为了提供一种发布和接收HTML页面的方法

  1. HTTP特点:

    • 无状态:协议对客户端没有状态存储, 访问一个网站需要反复进行登录操作

    • 无连接:HTTP/1.1之前, 由于无状态特点, 每次请求需要通过TCP三次握手四次挥手, 和服务器重新建立连接[短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求]

    • 基于请求和响应: 客户端发送请求,服务端响应

    • 简单快捷

    • 通信使用明文, 请求和响应不会对通信方进行确认, 无法保护数据的完整性

  2. 针对无状态 特性的解决策略:

    • 通过cookie/session技术

    • HTTP/1.1 持久连接 : 在请求首部字段中的Connection: keep-alive即为表明使用了持久连接

  3. TCP

    • 运输层通过 TCP三次握手和服务器建立连接,四次挥手释放连接

    • TCP三次握手:

      1. 客户端发送连接请求到服务端

      2. 服务端收到请求响应给客户端同意建立连接

      3. 客户端收到服务端的响应,并确认建立连接

      若不采用"三次握手" 那么只要server发出响应同意建立连接,那连接就建立了,如果此时先前发送过来的连接请求是由网络结点长时间滞留,以致延误到连接释放后才到达server的请求,那此时的客户端不会确认服务端的响应,也不会向服务端发送数据,但服务端却会认为连接已经建立,并一直等待客户端发送数据,就会浪费服务端资源

    • TCP四次挥手:

      1. 客户端发出FIN报文给服务端,关闭客户端到服务端的数据传送

      2. 服务端收到FIN,响应一个ACK

      3. 服务端发送一个FIN给客户端,关闭服务端到客户端的连接

      4. 客户端返回一个ACK确认

      简单理解:

      1)c告诉s: 我吃饱了

      2)s回应c: 我知道你吃饱了

      3)s告诉c: 我也吃饱了

      4)c和s说: 那结账走吧

  4. HTTP原理:

    • 客户端输入url回车跳转

    • 检查应用缓存

      1. 本地缓存 [先判断是否存在]

      2. 代理缓存 [再判断是否存在]

    • DNS解析域名得到服务器的IP地址

    • 服务器在80端口监听客户端请求

    • 端口通过TCP/IP协议(可以通过Socket实现)建立连接

    • 客户端发送请求

    • 服务器响应

    • TCP四次挥手后释放连接

     

HTTPS/443

HTTPS(安全超文本传输协议)是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密处理数据,验证对方身份及数据的完整性

HTTP + SSL/TLS 建立全信道,加密数据包

目的: 提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性

  1. HTTPS特点:

    • 内容加密: 采用混合加密技术,中间者无法直接查看明文内容

      混合加密: 结合非对称加密和对称加密技术

      1)客户端使用对称加密生成密钥对传输数据进行加密

      2)使用非对称加密的公钥再对秘钥进行加密

      -> 网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,因此即使被截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取到明文数据

    • 验证身份: 通过证书认证客户端访问的是自己的服务器

    • 保护数据完整性: 防止传输的内容被中间人冒充或者篡改

  2. HTTPS实现原理

    1. client向server发送请求,然后连接到server的443端口

    1. 服务端必须要有一套数字证书

      • 自己制作,需要客户端验证通过

      • 向组织申请,受信任的公司申请的证书则不会弹出提示页面

    2. 传送证书(公钥)

    1. 客户端解析证书

      • 由客户端的TLS完成,验证公钥是否有效

      • 生成一个随机值(秘钥),然后用证书(公钥)对该随机值加密

    2. 传送加密信息

      • 传送的是用证书加密后的秘钥,

    3. 服务端加密信息

      • 服务端用私钥解密秘密秘钥,把内容通过该值进行对称加密

    4. 传输加密后的信息

      • 是服务端用私钥加密后的信息,可以在客户端被还原

    5. 客户端解密信息

      • 客户端用之前生成的私钥解密服务端传过来的信息

  3. HTTPS弊端:

    • SSL证书购买成本

    • 使用HTTPS协议会是页面加载时间延长50%,增加10%~20%耗电

    • HTTPS连接缓存不如HTTP高效, 流量成本高

    • HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本

SSL/TLS

SSL: 安全套接层,

TLS: 传输层安全, 是传输层加密协议, 安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性

是为了网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密

  1. SSL协议提供的安全通道特性:

    • 机密性: SSL协议使用密钥加密通信数据

    • 可靠性: 服务器和客户都会被认证,客户的认证是可选的

    • 完整性: SSL协议会对传送的数据进行完整性检查

参考连接: [https://blog.csdn.net/xiaoming100001/article/details/81109617]

以上是关于抛砖引玉 HTTP 和 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

图解HTTP网络

http和https的区别?

HTTPS原理

http 与 https

网络相关

浅析https