IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP、HTTPS与HTTP2详解 -> 正文阅读

[网络协议]HTTP、HTTPS与HTTP2详解

?我们几乎每天都在网上冲浪,接收或发出大量的数据,而这些是怎样被表示并发送接收的的呢?今天就来聊聊处在TCP/IP模型应用层的HTTP协议。

?中文名:超文本传输协议,是万维网的基础。服务器与用户通过这个协议完成了数据点到点的传输,Restful API也是基于它而定的一种架构标准。接下来直接进入正题,从http1.1版本开讲。

?1.1的版本虽然已诞生许久,但依然经久不衰。其特点简而言之就是基于TCP连接,以请求-应答的方式进行交互,明文的方式进行传输,处理是无状态的。它的缺点也非常明显,其一,以明文的方式进行传输,数据安全性较低,其二,虽然已经采用keep-alive的连接方式,Pipeline的复用机制,但由于需要按次序处理,所以依然容易造成队头阻塞的问题。其三,报头偏重,浪费资源。至于无状态,这就要分场景而言,例如在直播领域无状态反而由于开销较小,成了个优势。

HTTPS

?对于安全性这方面,前辈们选择添砖加瓦,创造了TLS/SSL协议,采用混合加密的方式保障信息的安全。这里的混合加密是指对称加密与非对称加密的结合。

?对称加密是我们较为熟知的方式,发送方用一个密码进行加密,接收方再用这个密码解密,较好理解。非对称加密则是采用私钥与公钥这种密钥对的方式进行加密解密。公钥可对外发布,私钥自己保留,公钥可加密解密私钥发来的信息,私钥对公钥亦然,其原理可以去看下椭圆曲线加密算法。这种非对称加密最常见的应用实例就是HTTPS的身份验证。

?权威的第三方机构生成密钥对,公钥加上一些机构和时间等信息形成证书,证书将直接内置于客户端,服务端则内置私钥与证书。在TCP连接建立完成后,客户端发送hello消息,说明自己支持的加密套件,服务端收到后回复hello信息,其中包含证书,选择的加密套件,客户端经过与内置的证书进行比对,确认无误后用此证书中的公钥加密对称密钥,回复给服务端,此后的信息都将进行对称加密。但是这里有个问题,如果server的hello信息被黑客截取,篡改了其中的证书信息,我们怎么来确定它的完整性呢?前辈们提出了数字签名的方案。服务端将证书的信息进行摘要计算(如MD5),再将摘要信息用私钥进行加密生成数字签名,和证书一同发送给客户端,客户端收到后,用公钥解密得到摘要信息,以相同的方式计算,如果得到相同结果则可以确认信息未被修改。

HTTP2

?安全的问题已经解决,接下来解决性能的问题,HTTP2登场。

  1. ?二进制分帧。将报文称之为消息,分成头报头帧和DATA帧,这些帧具有相同的ID。在传输时,同一ID的帧必须按顺序发送,不同ID的帧可以乱序发送。

  2. 更好的多路复用。在HTTP1.1中,对单个域名的有6—8的TCP连接数量的限制。在HTTP2中,一个域名只需要一个TCP连接,这个连接可以承载不限数量的双向传输序列(这种双向传输序列被称为流)。

  3. 头部压缩。服务器与客户端维持两个字典和一个表,静态字典(包含常见的头部方法与值,共61个表项),动态字典(可以动态添加)与静态哈夫曼表(对不包含在另两个字典的头部进行压缩)。当发送的报头在静态字典中时,一个字符即可表示,不在时则基于哈夫曼表进行编码发送,并且将这个包头加入到动态字典中,下次传输也只需要一个字符就可以代替。当然,这里讲的比较笼统,能否加入到动态字典也是有要求的,具体细节读者可查看RFC7541。

  4. 加入PUSH方法。原来客户端解析网页时需要读取HTML取资源,而现在服务器可通过PUSH直接将HTML连同所需资源一同发到客户端,降低了延迟。

  5. 加入就请求优先级。HTTP2中每个请求消息都带有一个31bits的优先级,0为最高级,客户端和服务器可根据不同的优先级采取不同的处理策略。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2021-12-07 12:22:55  更:2021-12-07 12:25:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/8 10:13:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码