[杂学笔记]HTTP与HTTPS的区别、HTTPS进行TLS握手的过程、HTTPS如何防止中间人攻击、HTTP1.1与HTTP2.0的区别、TCP的拥塞控制

目录

[1. HTTP与HTTPS的区别](#1. HTTP与HTTPS的区别)

[2. HTTPS进行TLS握手的过程](#2. HTTPS进行TLS握手的过程)

[3. HTTPS如何防止中间人攻击](#3. HTTPS如何防止中间人攻击)

[4. HTTP1.1与HTTP2.0的区别](#4. HTTP1.1与HTTP2.0的区别)

5.TCP的拥塞控制


1. HTTP与HTTPS的区别

  • 安全性:HTTP是文本传输协议,传递的是明文信息,存在安全风险;HTTPS是加密传输协议,在HTTP协议的基础上假如了SSL/TLS安全协议,使得数据可以加密传输。

  • 连接过程:HTTP在连接时只需要三次握手,而HTTPS则需要三次握手后,进行SSL/TLS握手。

  • 端口号:HTTP默认端口号是80,HTTPS默认端口号是443

  • HTTPS协议需要向CA机构申请数字证书,来保证自己的身份是可靠的。

2. HTTPS进行TLS握手的过程

准备工作:

服务端首先需要创建一对非对称密钥,准备公钥、服务端个人信息等数据提交给CA机构去进行认证,认证成功后会返回一个CA证书,证书中携带了公钥等明文信息和经过私钥加密后的明文信息的数据指纹。客户端通过判断CA证书可以确定服务端的身份。

握手过程:

  • 客户端向服务器发送加密请求,并携带支持的TLS协议版本与加密算法

  • 服务端确认加密请求,判断采用什么版本的TLS协议以及使用什么加密算法;并将服务端的CA数字证书发送个客户端

  • 客户端使用公钥解密CA证书中的数据指纹,并判断数据指纹与明文数据是否相符;符合后,在客户端创建一个对称密钥,并使用CA证书中携带的公钥加密对称密钥。

  • 服务端接收到对称密钥,并使用私钥进行解密;此后双方使用对称密码进行加密解密操作。

3. HTTPS如何防止中间人攻击

身份检测(CA证书) + 加密(非对称加密 + 对称加密)

  • 身份检测:服务端会发送CA证书给客户端用于表明自己的身份。

  • 加密:在HTTPS握手期间,会通过非对称加密的方式来协商出对称密钥

中间人攻击的关键在于:中间人冒充服务器与客户端进行沟通。中间人虽然可以修改CA证书中的明文公钥,但是客户端在验证的时候就会不通过。并且中间人也无法获取私钥,从而无法解析对称密钥。

4. HTTP1.1与HTTP2.0的区别

  • 传输数据格式:HTTP1.1采用的是纯文本格式传输报文,这种格式对人类友好,但对机器的解读效率低,机器需要先转化为二进制数据;HTTP2.0采用的是二进制格式进行传输报文,提高了机器解析的效率。

  • 头部压缩:HTTP请求和响应过程中会发送大量重复的头部字段(如Cookie、User-Agent等),产生额外开销。

    • HTTP2.0采用了头部压缩的技术,客户端与服务器都会维护一张头部字段表,当需要发送一个头部字段的时候会先查看头部字段表中是否存在,如果存在的话则直接发送该头部字段的索引,而非完整的头部字段。

    • 如果不存在的话,也会用霍夫曼编码进行压缩,减少头部字段的大小。

  • 多路复用:

    HTTP1.1存在的问题:

    • 队头阻塞:在加载一个网页的时候,HTTP会发送大量的请求来获取资源,而这些请求在一个TCP连接中,必须是串行执行的,如果说一个请求处理的很慢,那么后面的请求也只能阻塞等待。

    • 连接数过多:为了解决上述问题,浏览器会为一个网页建立多个TCP连接,采用并行的方式获取数据资源,但创建和维护多个连接会造成额外的开销。

HTTP2.0解决方案:多路复用在单个、持久的 TCP 连接上,同时交错地发送多个请求和响应,这样不会因为一个请求的阻塞而影响其他请求的处理。同时又不需要创建多个TCP连接。

  • 服务器主动推送:HTTP1.1需要客户端明确的请求每一个资源,例如请求了一个资源A后,解析发现需要资源B和C,会再去请求资源B和C;HTTP2.0则是在响应A数据后,服务器预测并主动的将B和C数据发送给客户端。客户端自行判断是否需要这些资源

5.TCP的拥塞控制

(1)一个网络环境下会有大量设备在网络中发送数据包进行通信,也就会导致网络拥堵。一旦网络拥堵,TCP还传递大量的数据包,不但发送不过去,进行超时重传,而且会加剧网络拥堵。所以TCP一旦检测到网络拥堵的话,会降低发送数据量来缓解网络拥堵。

如何确定发送数据的量呢?基于拥塞控制,提供了一个拥塞窗口,发送数据的量是16位窗口大小与拥塞窗口的最小值来确定的。如果网络不拥堵,拥塞窗口则会变大,网络拥堵则会变小。

(2) 拥塞控制的核心算法:

  • 慢启动:从2^0开始,成指数形增加,每次收到一个ACK应答报文,则会增加一个指数。

  • 拥塞避免:提供一个阈值,达到阈值后,则会改变拥塞窗口变化策略,每次只会加1。

  • 拥塞发生:

    • 发生超时重传:阈值 = 拥塞窗口大小 / 2, 同时拥塞窗口重新设置为1,重新进行慢启动。

    • 发生快重传:阈值 = 拥塞窗口大小 = 拥塞窗口大小 / 2, 进行快速回恢复算法

  • 快速恢复:

    • 快速重新发送丢失的数据包,并每次接收到一个ACK应答报文,拥塞窗口+1

    • 快重传完毕后,窗口大小恢复到阈值处,并进行拥塞避免。

相关推荐
拾忆,想起1 小时前
Dubbo服务超时与重试策略配置指南:构建 resilient 微服务架构
服务器·网络·微服务·云原生·架构·dubbo
on_pluto_2 小时前
【debug】关于如何让电脑里面的两个cuda共存
linux·服务器·前端
万象.2 小时前
高并发服务器组件单元测试&集成测试&系统测试
服务器·单元测试·集成测试
CodeByV2 小时前
【Linux】进程信号深度解析:从中断本质到信号捕捉全流程
linux
n***84072 小时前
Linux安装RabbitMQ
linux·运维·rabbitmq
Y***89082 小时前
SQL Server 中行转列
运维·服务器
拾光Ծ4 小时前
【Linux】冯诺依曼体系结构和操作系统概述
linux·硬件架构
hfut02884 小时前
第25章 interface
linux·服务器·网络
Sinowintop7 小时前
易连EDI-EasyLink SFTP文件传输
运维·服务器·网络·sftp·edi·ftp·国产edi软件