HTTP1.0、HTTP2.0、HTTP 3.0及HTTPS简要介绍-程序员宅基地

技术标签: 网络  http  JavaWeb  

HTTP1.0、HTTP2.0、HTTP 3.0及HTTPS简要介绍

HTTP 建立之初,是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。但随着CSS,Javascript的出现,以及移动互联时代的到来,我们不得不对HTTP进行不断地优化。

HTTP优化:
影响一个 HTTP 网络请求的因素主要有两个方面:带宽和延迟。
随着网络基础建设的完善,带宽因素已经不需要再考虑,仅需要考虑的就是延迟。延迟主要受三个方面影响:浏览器阻塞(HOL blocking), DNS查询(DNS Lookup),建立连接(Initial connection).

1 HTTP1.0及HTTPS
(1)HTTP1.0
  • 请求与响应支持 HTTP 头,响应含状态行,增加了状态码,
  • 支持 HEAD,POST 方法
  • 支持传输 HTML 文件以外其他类型的内容

HTTP1.0 使用的是非持久连接,主要缺点是客户端必须为每一个待请求的对象建立并维护一个新的连接,即每请求一个文档就要有两倍RTT 的开销。因为同一个页面可能存在多个对象,所以非持久连接可能使一个页面的下载变得十分缓慢,而且这种 短连接增加了网络传输的负担。

注:
RTT(Round Trip Time):一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值;

(2)HTTP1.1
  • 支持长连接
  • 在HTTP1.0的基础上引入了更多的缓存控制策略。
  • 引入了请求范围设置,优化了带宽。
  • 在错误通知管理中新增了错误状态响应码。
  • 增加了Host头处理,可以传递主机名(hostname)。

缺点:
传输内容是明文,不够安全

(3)HTTPS
  • HTTPS运行在安全套接字协议(Secure Sockets Layer,SSL )或传输层安全协议(Transport Layer Security,TLS)之上,所有在TCP中传输的内容都需要经过加密。
  • 连接方式不同,HTTP的端口是80,HTTPS的端口是443.
  • HTTPS可以有效防止运营商劫持。

注:
SSL运行在TCP之上

(4)HTTP 1.x优化(SPDY)

SPDY 并不是新的一种协议,而是在 HTTP 之前做了一层会话层。为了达到减少页面加载时间的目标,SPDY 引入了一个新的二进制分帧数据层,以实现优先次序、最小化及消除不必要的网络延迟,目的是更有效地利用底层 TCP 连接。

  • 多路复用,为多路复用设立了请求优先级。
  • 对header部分进行了压缩。
  • 引入了HTTPS加密传输。
  • 客户端可以在缓存中取到之前请求的内容。

参考博客:HTTP的前世今生

2 HTTP2.0(SPDY的升级版)
  • HTTP2.0支持明文传输,而HTTP 1.X强制使用SSL/TLS加密传输。
  • 和HTTP 1.x使用的header压缩方法不同。
  • HTTP2.0 基于二进制格式进行解析,而HTTP 1.x基于文本格式进行解析。
  • 多路复用,HTTP1.1是多个请求串行化单线程处理,HTTP 2.0是并行执行,一个请求超时并不会影响其他请求。

HTTP2.0的多路复用提升了网页性能:

  • 在 HTTP1 中浏览器限制了同一个域名下的请求数量(Chrome下一般是六个),当在请求很多资源的时候,由于队头阻塞,当浏览器达到最大请求数量时,剩余的资源需等待当前的六个请求完成后才能发起请求。
  • HTTP2 中引入了多路复用的技术,这个技术可以只通过一个 TCP连接就可以传输所有的请求数据。多路复用可以绕过浏览器限制同一个域名下的请求数量的问题,进而提高了网页的性能。

注意:

  • 主流浏览器只支持基于TLS部署的HTTP2.0协议,所以要将网站升级为HTTP 2.0,就需要先升级为HTTPS。
  • HTTP 2.0完全兼容HTTP 1.x,所以对于部署了HTTP 2.0的网站可以自动向下兼容HTTP 1.X.

参考博客:HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

3 HTTP 3.0 (QUIC)

QUIC (Quick UDP Internet Connections), 快速 UDP 互联网连接。
QUIC是基于UDP协议的。

两个主要特性:
(1)线头阻塞(HOL)问题的解决更为彻底:
基于TCP的HTTP/2,尽管从逻辑上来说,不同的流之间相互独立,不会相互影响,但在实际传输方面,数据还是要一帧一帧的发送和接收,一旦某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输。而基于UDP的QUIC协议则可以更为彻底地解决这样的问题,让不同的流之间真正的实现相互独立传输,互不干扰。
(2)切换网络时的连接保持:
当前移动端的应用环境,用户的网络可能会经常切换,比如从办公室或家里出门,WiFi断开,网络切换为3G或4G。基于TCP的协议,由于切换网络之后,IP会改变,因而之前的连接不可能继续保持。而基于UDP的QUIC协议,则可以内建与TCP中不同的连接标识方法,从而在网络完成切换之后,恢复之前与服务器的连接

参考博客:
[1] QUIC协议浅析与HTTP/3.0
[2] HTTP3.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/glpghz/article/details/106063833

智能推荐

P1115 最大子段和洛谷c++题解-程序员宅基地

文章浏览阅读432次。P1115 最大子段和题目描述给出一个长度为 nnn 的序列 aaa,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度 nnn。第二行有 nnn 个整数,第 ii 个整数表示序列的第 iii 个数字 aia_iai​ 。输出格式输出一行一个整数表示答案。输入输出样例输入72 -4 3 -1 2 -4 3输出4只需要使用一维数组的动态规划就可以解决问题了。对于如果有一个字段和加上当前的数比这个还要小,那么你就要放弃当前的子段和,从现在这个数重新开

C++11计算FPS函数示例_c++如何计算一帧-程序员宅基地

文章浏览阅读3.2k次。函数如下:int fps(){ static int fps = 0; static int frameCount = 0; static auto lastTime = system_clock::now(); static auto curTime = system_clock::now(); curTime = system_clock::now(); auto du..._c++如何计算一帧

springboot整合WebSocket_springboot 整合websocket-程序员宅基地

文章浏览阅读1.9w次,点赞20次,收藏124次。springboot整合WebSocketWebSocket通信过程客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的候,会向服务端发送一个http get报文,告诉服务端需要将通信协议切换到websocket,服务端收到http请求后将通信协议切换到websocket,同时发给客户端一个响应报文,返回的状态码为101,表示同意客户端协议转请求,并转换为websocket协议。以上过程都是利用http通信完成的,称之为websocket协议握手(webs_springboot 整合websocket

Xilinx Kintex-7 XC7K325T-2FFG676I嵌入式核心板简介_xc7k325tffg676-2-程序员宅基地

文章浏览阅读7.3k次。Xilinx Kintex-7 XC7K325T-2FFG676I嵌入式核心板简介图 1Xilinx Kintex-7核心板简介创龙科技SOM-TLK7是一款基于Xilinx Kintex-7系列FPGA设计的高端工业级核心板。FPGA引脚资源通过工业级高速B2B连接器引出。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。.._xc7k325tffg676-2

如何切换Echarts主题_echarts主题切换-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏8次。一、打开Echarts官方文档点击资源 -> 主题构建工具进入到主题选择页面二、选择默认主题点击默认方案选择合适的主题例如选择macarons,点击后右侧展示对应主题效果三、应用主题1.下载主题点击下载主题,建议选择JSON版本,点击下面下载便会生成一个JSON文件2.项目使用把JSON文件放入项目的某个文件夹中,在需要使用Echarts的文件中导入。//引入import macarons from '../....._echarts主题切换

开源飞控初探(三)两大开源飞控的历史_px4 开源历史-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏12次。Pixhawk是硬件,PX4是它的原生固件。这个团队维护的地面站项目是QGroundControl。APM是硬件,ArduPilot是它的固件,但最新的ArduPilot已经只能运行在Pixhawk上了。有时候为了方便,也有人称呼ArduPilot为APM。这个团队维护的地面站项目是MissionPlanner。日常沟通的【飞控】一词有多个含义:最专业的意思:无人机上的MCU作为板载计算机,连同所有传感器和控制飞行的电机,整体被称为飞控。_px4 开源历史

随便推点

基于51单片机实现秒表_☆往事随風☆的博客_51单片机秒表程序设计-程序员宅基地

文章浏览阅读2.1w次,点赞49次,收藏480次。基于51单片机实现秒表前言一、实现功能二、关键程序(1)key函数(2)display函数(3)中断函数三、完整程序四、仿真五、效果展示前言基于51单片机实现一个共阳极数码管的秒表。一、实现功能按键按下抬起有效按下按键一启动秒表按下按键二暂停秒表按下按键三秒表置零二、关键程序(1)key函数我们在这里要做的是按键按下抬起有效,所以这里对按键按下和抬起都要有一个判断。另外就是模式的指定,定义变量Mode来存贮不同按键对应的模式。void key(){ //启动 i_51单片机秒表程序设计

解决WIN 7 不能任意修改无线网卡MAC地址的问题_为啥我的无线网卡的mac地址不能指定-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏2次。最近开始折腾WI-FI无线网络密码破解,结果今天灵感一来,发现我已经连带地把WIN7 下不能任意修改MAC地址的问题解决掉了。可以任意修改无线网卡MAC地址,意味着我的无线网卡也可以通过无线盗用别人的IP和MAC上网了,意味着我可以摆脱网线束缚,我可以抱着笔记本躲在厕所里上网了。我的笔记本无线网卡是AR9285,WIN7 64 位下面网上搜索到的修改无线网卡相关的文章:终于搞定了WIN7下修改无线_为啥我的无线网卡的mac地址不能指定

securecrt 8.1 7.3 注册机 使用步骤【转】_securecrt 9.3 注册-程序员宅基地

文章浏览阅读5k次。务必按部就班的按照博客,注意看清楚里面要求的每个字段参加这个:https://www.cnblogs.com/qingtingzhe/articles/5008902.html我印象中,我8.1的版本也照着这个步骤成功过;如果遇到什么问题,微信找我好了:369732100;SecureCRT是一款很好用的远程登陆管理工具或者参照下面这个: 工具和注册机下载链接:http://pa..._securecrt 9.3 注册

猜测asr modem的架构_asr modem平台-程序员宅基地

文章浏览阅读1.7k次。应该是cortex-r处理器+nucleus plus+ dsp组成的系统2018.4.3A系列功能强大,对标通用处理器,可运行大型OS。有MMU,TCM,cache,debug,中断,FPU,DSP等各类功能单元。总线接口也以高性能,支持多核cache一致性为主。R系列针对实时性场景,相比A系列,少了对页表的支持,也就是说软件看到的地址都是物理地址,相对来说软件运行时间和中断响应速度都更加快速稳..._asr modem平台

安装mysql-8.0.20-winx64遇到的问题:Can't create directory 'xxxx\data\'_mysqld: can't create directory 'd:\杞 欢\mysql-8.0.2-程序员宅基地

文章浏览阅读3.6k次,点赞8次,收藏5次。这篇文章主要介绍了安装mysql-8.0.20-winx64遇到的坑 ,Can’t create directory ‘xxxx\data’,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下从官网上下载的mysql-8.0.20-winx64按照别的小伙伴的文章,自己写了my.ini[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=C:\Program Files\MySQL# 设置mysql数据库的数据的存放目录datadir=C._mysqld: can't create directory 'd:\杞 欢\mysql-8.0.20-winx64\data\' (os errn

rewrite or internal redirection cycle while internally redirecting to “/index.html“-程序员宅基地

文章浏览阅读1.2w次。rewrite or internal redirection cycle while internally redirecting to "/index.html"nginx.conf中root定位的前端代码路径对着,但是就是报这个错!!!此处省略n分钟。。。最终发现,是因为目录的权限问题导致,因此解决该问题的入口不能因为此报错而蒙蔽了:怎么发现原因的?该报错的上层显示/xxx/xxx/xxx/index.html提示了Permission denied,但事实上index.html的权限已经_rewrite or internal redirection cycle while internally redirecting to "/inde

推荐文章

热门文章

相关标签