各个HTTP与HTTPS的主要不同特点

news/2024/7/12 2:53:44 标签: http, https, 网络
http://www.w3.org/2000/svg" style="display: none;">

HTTP

HTTP协议是基于TCP/IP,并且使用了请求-应答的通信模式

特性

  1. 简单:报文格式就是header+body,易于理解
  2. 灵活和易拓展:HTTP协议里各类请求方法、状态码、投资端等都允许开发人员自定义和扩充;同时,由于它位于应用层,它的下层可以随意变化(HTTPS就是在TCP与HTTP层间加入了SSL/TLS的安全协议;HTTP/3将TCP换成了基于UDP的QUIC)
  3. 应用广泛和跨平台:HTTP协议应用广泛,且具有跨平台的优越性
  4. 无状态:好处:不需要额外的资源来记录状态信息,减轻CPU的负担;坏处:在处理关联性操作时很麻烦(解决:cookie)
  5. 明文传输:可以方便我们阅读,为调试工作带来了便利性;但会造成信息的不安全。
  6. 不安全明文通信不加密,内容会有被窃听的可能;不验证通信方的身份,有可能遭遇伪装;无法证明报文的完整性,有可能报文已经遭遇篡改。

HTTP/1.1

特点

  1. 提出了长连接的通信方式(持久连接),减少了TCP链接的重复建立和断开造成的额外开销,减轻服务端的负载;特点:只要任意一端没有明确提出断开连接,则保持TCP的连接状态
  2. 管道网络传输:由于采用了长连接的模式,使得管道网络传输成为了可能;即可在同一个TCP链接里面,客户端发起多个请求,只要第一个请求发出去了,不必等他回来就可以发送第二个请求,减少整体响应时间。但是服务器还是按照顺序,依次回应请求,如果前面回应的特别慢,后面就会有许多请求等待,这称为队头阻塞

缺点

  1. 请求/响应头部未经压缩就发送,首部信息越多延迟越大,只能压缩Body部分
  2. 发送冗长的首部,每次发送相同的首部造成浪费
  3. 服务器按请求顺序响应,会造成队头阻塞
  4. 没有请求优先级控制
  5. 请求只能从客户端开始,服务器只能被动响应

HTTP/2

  1. 头部压缩:如果同时发送多个请求,且头部是相似或一样的,协议会自动消除重复部分—这就是HPACK算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个信息表,生成一个索引号,以后就不发送相同的字段了,只发送索引号。
  2. 二进制格式:不再像HTTP/1.1中纯文本形式,采用了二进制格式,头部和数据体的信息都是二进制,统称为;至此,计算机收到报文后无需将明文的报文转化为二进制,而是直接解析二进制报文,提升了数据传输的效率
  3. 数据流:数据包不再是按需发送。每个请求或回应的所有数据包成为一个数据流,每个数据流都有一个标记,(其中规定客户端的数据流编号为奇数;服务器发出的数据流编号为偶数);
  4. 客户端还能指定数据流的优先级,优先级高的请求,服务器先响应
  5. 多路复用:可以在一个连接中发送多个请求或回应,不用按序一一回应,移除了HTTP/1.1的串行请求,不用排队等待也就不会出现队头阻塞,降低了延迟,提高了连接的利用率
  6. 服务器推送:改善了请求-应答的工作模式,服务器不再是被动响应,也可以主动发送信息。

缺点

多个HTTP请求复用在一个TCP连接中,下层的TCP协议不知道有多少个HTTP请求,一旦发生了丢包,就会触发TCP的重传机制,因此一个TCP连接中所有的HTTP请求必须等待这个丢失的包被传送回来

HTTP/3

基于TCP传输层的问题,HTTP/3吧下层的TCP改成了UDP。UDP不能可靠传输,但基于UDP的QUIC协议可以实现类似TCP的可靠传输

特点

  1. UDP不管顺序、不管丢包,因此不会出现1.1中的队头阻塞或者2中的丢一个包就要全部重传的问题
  2. QUIC有一套机制可以保证传输的可靠性,当某个流发生丢包时,就阻塞这个流,其他的流不会受到影响
  3. TLS3升级成1.3版本,头部压缩算法用了QPACK
  4. HTTPS建立以此连接需要完成六次交互,三次握手以及TLS/1.3的三次握手,QUIC直接把以往的将六次交互合并成了三次,减少了交互次数

HTTPS

在TCP和HTTP网络层之间加入SSL/TLS的安全协议,使得报文能够加密传输

与HTTP的区别

  1. HTTPS需要在TCP的三次握手后在进行SSL/TLS的握手过程,才能进入加密报文传输
  2. HTTP的端口是80,HTTPS的端口是443
  3. HTTPS需要向CA(证书权威机构)申请数字证书以此来保证服务器的身份是可信的。

如何解决HTTP的不安全这一缺点

  1. 使用混合加密(对称加密和非对称加密相结合)保证信息的机密性,解决了窃听的风险
  2. 使用摘要算法来保证信息的完整性
  3. 使用数字证书保证服务器的身份是可信的

http://www.niftyadmin.cn/n/1074234.html

相关文章

计算机网络考点

概述知识点 1、互联网现在采用存储转发的分组交换技术,以及三层ISP结构。 2、互联网按工作方式可划分为边缘部分与核心部分。 主机在网络的边缘部分,其作用是进行信息处理。 路由器在网络的核心部分,其作用是按存储转发方式进行分组交换。…

Ubuntu安装mysql数据库

首先检查下系统是否已经安装了MySQL, (这一点很重要奥,有可能你之前就已经安装完成,但是一段时间未使用,你忘记已经安装) 在终端输入 sudo netstat -tap|grep mysql 若没有任何东西显示,则代表未安装,若如下图显示&a…

计算机网络期末考试填空题

1、网络中的时延一般包括发送时延、传播时延、处理时延和排队时延。 2、计算机网络按其作用范围可以分为广域网WAN、城域网MAN、局域网LAN和个人区域网PAN。 3、物理层的主要任务可以描述为确定与传输媒体接口有关的一些特性,即机械特性、电气特性、功能特性和过程…

Ubuntu安装mysql数据可视化工具

一、首先来测试下是否安装mysql,需要在安装mysql相关服务的条件下进行安装mysql-workbench sudo netstat -tap|grep mysql如图显示,代表已经安装,若没有安装,请参照Ubuntu安装mysql数据库安装mysql。 二、安装mysql-workbench sud…

Ubuntu源码构建Apache服务器

就不介绍使用apt-get搭建apache服务器了,现在介绍用源码搭建apache服务器 1、下载apache,这里我下载的版本是2.4.29 cd ~/下载 #下载到“下载”目录中 wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.29.tar.gz #下载apache文…

计算机网络期末考试简答题

一、描述ARP协议的工作机制 1、每台主机都会在自己的ARP缓冲区中建立一个ARP列表以表示IP地址和MAC地址的对应关系。 2、当源主机需要将一个数据包要发送到目的主机时会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址 如果有就直接将数据包发送到这个MAC地址 如果…

django与python3使用MySQL数据库

python3不使用mysql数据库,使用的是pymysql 用pip安装pymysql pip install pymysql 在django工程中的__init__.py文件中添加 import pymysql pymysql.install_as_MySQLdb() 在settings.py文件中修改database配置 DATABASES {default:{ENGINE: django.db.back…

2022操作系统期末考点

第一章(6分) 计算机系统的组成 计算机系统由硬件和软件组成: 硬件包括CPU、内存、IO设备和总线等;软件通常分为应用软件、支撑软件、系统软件。支撑软件:在 系统软件 和 应用软件 之间,提供应用软件设计、…