HTTP的升级之路

2023-11-15

HTTP的升级之路

HTTP简介

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一种远距离共享知识的方式,借助多文档进行关联实现超文本,连成相互参阅的WWW(world wide web,万维网)HTTP的发展是由蒂姆·伯纳斯-李(Tim Berners-Lee)于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1版

HTTP工作过程

HTTP协议是工作在TCP/IP协议上的应用层协议。
工作过程如下:
1.DNS解析,获取域名真实IP地址
2.建立TCP连接,就是常见的TCP三次握手,并协商传输的各种规范,如压缩格式等
3.客户端发送http请求(request)
4.服务器端接收客户端发送的http请求,并作出处理,如寻找静态资源,查询数据库等操作。
5.服务器端构建相应报文,将处理好的数据以一定的规范发送给客户端作为相应报文(response)
6.客户端浏览器接收处理服务器端的数据,解析数据格式,如html,css,js等,将效果渲染在浏览器
7.完成会话,断开连接(TCP四次挥手)
http数据流向
完整过程如下:
完整过程

HTTP协议的发展

在这里插入图片描述

HTTP/0.9

仅支持GET命令,服务器仅相应html格式的字符串

HTTP1.0

支持了cache,MIME,methord
cache:缓存机制,加速了访问过程
MIME:(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。类型支持包括video,MP3,MP4,jpg,gz等格式的媒体数据,返回给客户端时使用content-type告知其数据类型,常见Content-Type值:text/xml image/jpeg audio/mp3
method:增加了HEAD和POST方法。

问题:由于http1.0版本连接过程为没建立一次连接只能发送一个请求,一个请求处理完成就关闭连接,如果有新的请求则需要重新建立连接,因此增加了连接时的资源损耗,且影响了性能,因此在http1.1引入了新的解决方法。

HTTP1.1

http1.1引入了持久化连接(keepalive),每次建立连接不直接关闭,而是等待请求次数或者连接时间过期才会断开连接,即针对同一个连接默认不关闭,可以同时处理多个请求,从而提升了http协议的效率。
增加方法:PATCH,PUT,OPTIONS,DELETE
http1.1中同一个TCP请求中是按次序进行的,服务器端顺序处理回应,如果前面的处理慢,则后面的请求就会阻塞排队,造成“队头阻塞”,解决方法为:减少请求(不现实)或者增加持久化连接。
网页优化:图片嵌入CSS代码、域名分片等
http是无状态的,即相应结果后不知道客户端是做何处理,所以客户端每次请求都需要带上所有的信息,浪费带宽,影响性能。

http1.0和1.1的主要区别总结

1.长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,弥补了HTTP1.0每次请求都要创建连接的缺点。
2.缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略.
If-Modified-Since:通过文件的访问时间判断是否被修改策略中的参数
Entity tag:通过文件的哈希值判断文件是否被修改策略中的参数
详细信息可以参考:http缓存机制
https://segmentfault.com/a/1190000020801458?utm_source=tag-newest

3.带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如:客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码206(Partial Content),方便了开发者自由的选择以便于充分利用带宽和连接错误通知的管理,在HTTP1.1中新增24个状态响应码,如409(Conflict)表示请求的资源与资源当前状态冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

4.Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)

HTTP1.X存在的问题

1.数据传输都是明文,存在安全性的问题
2.请求头heads里的传输内容过大,增加了传输成本
3.虽然keepalive保证了传输的持久化,但是依然存在着问题,比如请求一张图片,希望请求后就断开连接,由于持久化连接的原因不能及时释放,这样也给服务器带来了大量的性能压力

HTTPS协议

为了解决明文的问题,引入了HTTPS协议,即HTTPS=HTTP+TSL(SSL),ssl就是安全加密的协议,两者并用即传输加密,保证了数据的安全性。
注:TSL就是SSL的升级版,说白了就是换个名字而已

特点:
1.HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
2.HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的
3.HTTP和HTTPS使用的是不同的连接方式,端口不同,前者是80,后者是443
4.HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题
5.HTTPS 实现过程降低用户访问速度,但经过合理优化和部署,HTTPS 对速度的影响还是可以接受的

基于SPDY协议的HTTP2.0

SPDY协议:2009年,谷歌研发,综合HTTPS和HTTP两者有点于一体的传输协议,主要特点:
1.降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,降低了延迟同时提高了带宽的利用率
浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。
2.请求优先级(request prioritization)。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,可以保证用户能第一时间看到网页内容
3.header压缩。HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量
4.基于HTTPS的加密协议传输,大大提高了传输数据的可靠性
5.服务端推送(server push),采用了SPDY的网页,例如网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了

HTTP2.0:SPDY协议的升级版
特点:
1.头信息和数据体都是二进制,称为头信息帧和数据帧
2.复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了“队头堵塞“,此双向的实时通信称为多(Multiplexing)
3.引入头信息压缩机制(header compression),头信息使用gzip或compress压缩后再发送;客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,不发送同样字段,只发送索引号,提高速度
4.HTTP/2 允许服务器未经请求,主动向客户端发送资源,即服务器推送(server push),一个网页里是有许多资源的,通常是先获取主页面,然后从主页面中重新发起请求获取其他资源,而服务器推送可以主动将主页面中的其他资源不经客户端同意直接推送给客户端,从而减少了请求的资源,加快的传输效率

HTTP2.0和SDPY的区别:
2.0不强制要求加密,SPDY强制
消息头压缩算法不同:HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE

HTTP请求方法

GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询相应URI支持的HTTP方法。

HTTP常见状态码

200:请求被正常处理
204:请求被受理但没有资源可以返回
206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301:永久性重定向
302:临时重定向
303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源
500:服务器内部错误
503:服务器正忙

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP的升级之路 的相关文章

  • http之GET请求的传递参数的方式

    第一种 直接在URL后面加参数 localhost 21811 Handler1 ashx id 1 name abc 如下图 第二种 用超链接的方法传递参数 当点击超链接的时候 首先会跳转 localhost 21811 Handler1
  • 细说Cookie

    细说Cookie 阅读目录 开始 Cookie 概述 Cookie的写 读过程 使用Cookie保存复杂对象 Js中读写Cookie Cookie在Session中的应用 Cookie在身份验证中的应用 Cookie的安全状况 如何在C 发
  • TCP/IP协议,HTTP协议--面试必备

    经常面试被问到什么是http协议 什么是TCP协议 而且每次都弄不清楚 是时候记录一下了 一 什么是http协议 如果读者对计算机网络的体系结构比较了解的话应该清楚 IP协议位于网络层 TCP UDP协议位于传输层 HTTP位于应用层 如下
  • 浅谈Http长连接和Keep-Alive以及Tcp的Keepalive

    Keep Alive模式 我们知道Http协议采用 请求 应答 模式 当使用普通模式 即非Keep Alive模式时 每个请求 应答 客户端和服务器都要新建一个连接 完成之后立即断开连接 当使用Keep Alive模式时 Keep Aliv
  • WebSocket的原理与优缺点

    一 websocket与http WebSocket是HTML5中的协议 支持持久连接 而Http协议不支持持久连接 首先HTMl5指的是一系列新的API 或者说新规范 新技术 WebSocket是HTML5中新协议 新API 跟HTTP协
  • Web服务器、Servlet容器和Servlet

    1 什么是Web服务器 想要知道什么是Servlet容器 我们首先要知道什么是Web服务器 Web服务器使用HTTP协议来传输数据 最简单的一种情况是 用户在浏览器 客户端 client 中输入一个URL 如 www programcree
  • 用HttpClient抓取人人网高校数据库(省,高校,院系三级级联)--更新1

    更新备注 将src文件改成了一个完整的项目 解压后可以直接导入到Eclipse中去 省去大家配置 项目乱码请改项目属性为GBK 另外 如果你要登陆人人网 的话 需要申请一个人人网账号 这里提供公用的 lei d0809 gmail com
  • HTTP缓存

    HTTP缓存 什么是HTTP缓存 http缓存指的是 当客户端向服务器请求资源时 会先抵达浏览器缓存 如果浏览器有 要请求资源 的副本 就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源 常见的http缓存只能缓存get请求响应的
  • iOS开发网络-HTTP协议

    一 URL 1 基本介绍 URL的全称是Uniform Resource Locator 统一资源定位符 通过1个URL 能找到互联网上唯一的1个资源 URL就是资源的地址 位置 互联网上的每个资源都有一个唯一的URL 2 URL中常见的协
  • .NET页面之间传值的几种方式总结

    1 QueryString 当页面上的form以get方式向页面发送请求数据时 web server将请求数据放入一名为QEURY STRING的环境变量中 QeueryString方法从这个变量中取出相应的值 先建立两个WebForm 分
  • 应用层---HTTP协议

    应用层 应用层是TCP IP协议分层的最顶层模型 它的作用是维持好应用程序之间的沟通 维护好特定的协议 如简单电子邮件传输 SMTP 文件传输协议 FTP 网络远程访问协议 Telnet 等 应用层协议分为两种 一种是根据客户要求自己对数据
  • HTTP协议、http服务器的实现-1

    1 HTTP协议简介 在Web应用中 服务器把网页传给浏览器 实际上就是把网页的HTML代码发送给浏览器 让浏览器显示出来 而浏览器和服务器之间的传输协议是HTTP 所以 HTML 超文本标记语言 HyperText Markup Lang
  • socket、tcp、udp、http 的认识及区别

    网络由下往上分为物理层 数据链路层 网络层 传输层 会话层 表示层和应用层 IP 协议对应于网络层 TCP协议对应于传输层 HTTP协议对应于应用层 三者从本质上来说没有可比性 socket则是对TCP IP协议的封装和应用 可以说 TPC
  • file协议与Http协议,HTTP请求与AJAX请求

    一 什么是file协议 file协议主要用于访问本地计算机中的文件 好比通过Windows的资源管理器中打开文件或者通过右键单击 打开 一样 基本格式 file 文件路径 file C Users CLi AppData Local Tem
  • HTTP的升级之路

    HTTP的升级之路 HTTP简介 HTTP HyperText Transfer Protocol 超文本传输协议 是一种用于分布式 协作式和超媒体信息系统的应用层协议 1 HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一
  • Cookie与Session机制,以及scrapy中cookiejar的理解

    Http协议 http是一种无状态协议 先说什么是协议 说白了就是通讯过程中的一种规范 要求 那什么是无状态的呢 就是我们在向服务器请求一个页面的过程中 并不是一个持久性的连接 而是客户端发送一个请求 比方说 我打开腾讯网 然后服务器端返回
  • 关于HTTP协议,一篇就够了

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol 超文本传输协议 的缩写 是用于从万维网 WWW World Wide Web 服务器传输超文本到本地浏览器的传送协议 HTTP是一个基于TCP IP通信协
  • nonce, timestamp, signatrue在Http安全协议中的作用

    OAuth协议 OAuth请求头里的nonce 随机数 timestamp 时间戳 signatrue 签名 Basic认证及其安全问题 Basic认证是一个流程比较简单的协议 整个过程可以分为以下三个步骤 客户端使用GET方法向服务器请求
  • http协议的状态码:404等常见网页错误代码

    http协议的状态码 一 1xx 临时响应 表示临时响应并需要请求者继续执行操作的状态码 100 继续 请求者应当继续提出请求 服务器返回此代码表示已收到请求的第一部分 正在等待其余部分 101 切换协议 请求者已要求服务器切换协议 服务器
  • Http协议详解

    引入 超文本传输协议 HTTP HyperText Transfer Protocol 是互联网上应用最为广泛的一种网络协议 所有的WWW文件都必须遵守这个标准 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 1960年美

随机推荐

  • 这是一篇新样式**就是一些有特殊含义的字符,

    新的东西1所谓所谓特殊字符 就是一些有特殊含义的字符 如上面说的 runoo b 中的 简单的说就是表示任何字符串的意思 如果要查找字符串中的 符号 则需要对 进行转义 即在其前加一个 runo ob 匹配字符串 runoob 许多元字符要
  • 国内敏捷项目管理软件-Leangoo领歌敏捷看板工具

    Leangoo领歌是一款专业的敏捷开发管理工具 提供端到端敏捷研发管理解决方案 涵盖敏捷需求管理 任务协同 进展跟踪 统计度量等 Leangoo领歌上手快 实施成本低 可帮助企业快速落地敏捷 提质增效 缩短周期 加速创新 Leangoo领歌
  • matlab RANSAC拟合二维圆(详细过程版)

    RANSAC 一 算法原理 1 算法流程 二 代码实现 三 结果展示 四 测试数据 一 算法原理 1 算法流程 从数据集中随机选择三个点 使用这些点来计算圆心和半径 对于每个数据点 计算其到估计的圆的距离 如果距离小于给定的阈值 则将该点视
  • 给windows设置定时任务并运行py脚本

    想要每天定时执行py脚本 可以试试windows自带的 第一步 找到控制面板 系统和安全 管理工具 计划任务 第二步 创建基本任务 第三步 给任务取个名字 第四步 根据需求选择执行频率 第五步 设置时间和触发频率 第六步 启动程序 第七步
  • Ubantu下Linux动态IP和静态IP配置方法

    Ubantu Linux动态Ip和静态Ip配置方法 一 动态Ip配置 二 网络配置文件 1 进入网络配置文件 2 静态Ip和动态Ip的修改 3 修改inerfaces文件后需要进入DNS文件添加域名Ip 三 重启网络 让其配置生效 四 使用
  • 【自学C++】C++转义字符

    C 转义字符 C 转义字符教程 在编程中有一些字符是打不出来的 比如换行 提示音 下一个制表位等等 于是程序语言的开发者就设计了转义序列 escape sequence 这种东西用来表达这些字符 所谓转义 可以理解为 采用某些方式暂时取消该
  • Openstack CLI命令管理私有云主机实战(附OpenStack实验环境)

    1 Openstack CLI 命令行管理入门 查看nova云主机 nova list ERROR CommandError You must provide a username or user ID via os username os
  • “华为杯”研究生数学建模竞赛2004年-【华为杯】D题:研究生录取问题的双向选择策略(附一等奖获奖论文)

    赛题描述 根据素质教育和培养高素质合格人才的要求 目前各学校都对硕士研究生的录取方法进行改革 即在录取的过程中改变了以往根据考试成绩定终身的做法 加大了复试的作用 一般是根据初试的成绩 在达到国家和学校分数线的学生中从高分到低分排序 按1
  • 读《洞穴奇案》——从虐猫到禁食狗肉,自然法真的存在吗?

    这是读 洞穴奇案 的第四篇心得体会 本篇的题目一下子就包含了两个热点话题 高校学生虐猫案 和 立法禁止吃狗肉 这两个事件不得不说是争议不断的 从理性和感性的角度出发得出的结论不一而足 如果此人像探险者一样并没有邪恶的意图 而我们判他有罪 判
  • 什么是U-Boot以及如何下载U-Boot源码

    参考 什么是U Boot以及如何下载U Boot源码 作者 一只青木呀 发布时间 2020 10 20 11 05 59 网址 https blog csdn net weixin 45309916 article details 1091
  • 谷歌地图api訪问失败

    在非外网情况下 我们调用谷歌api会出现载入不到地图的现象 此时能够换一下域名试试或许就好了 比方我自己訪问api时时这样写的 https maps googleapis com maps api js key sensor true 此时
  • Java中Iterator和Iterable的区别

    iterator为Java中的迭代器对象 是能够对List这样的集合进行迭代遍历的底层依赖 iterable接口里定义了返回iterator的方法 相当于对iterator的封装 同时实现了iterable接口的类可以支持forEach循环
  • 多合一网络分析平台Matomo

    什么是 Matomo Matomo 以前称为 Piwik 是领先的开源分析平台 可以让您轻松地从访问者那里获得您想要的信息 例如查看您的网站访问者来自何处 正在查看哪些页面 单击了哪些链接以及其他各种有用的信息 写 Umami 时 网友 J
  • 困惑:单元测试该在什么时候写?

    原文 http www codinghorror com blog 2005 04 good test bad test html 作者 Jeff Atwood 很多年以来 用于随机测试 ad hoc test 的工具我都是自己开发的 但在
  • 【深度学习】基础网络 (Basemodel) 综述

    以下是我在2018年7月份找工作时 根据个人所学总结出的基础网络 Basemodel 综述 其中 仅仅挑出我认为比较重要的一系列基础网络 按照时间顺序进行简要概述 如有阐述不对的地方 恳请指出 LeNet 时间 1998 意义 标志着 CN
  • 关于用pytorch构建vgg网络实现花卉分类的学习笔记

    需要的第三方库 pytorch matplotlib json os tqdm 一 model py的编写 1 准备工作 1 参照vgg网络结构图 如下图1 定义一个字典 用于存放各种vgg网络 字典如下图2 M表示最大池化层 2 定义一个
  • Android 正则表达式- 只保留字母数字

    正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些特定字符的组合 组成一个 规则字符串 这个 规则字符串 用来表达对字符串的一种过滤逻辑 1 匹配字母 大写 小写 和数字的字符 正则表达式 a zA Z0 9 2
  • 幂级数和函数经典例题_幂级数和函数的几种常见解法

    幂级数和函数的几种常见解法 方 艳 1 程 航 2 摘 要 摘要 无穷级数是微积分学的重要组成部分 在数学理论研究和工程 实际应用上起着举足轻重的作用 有关无穷级数里最常见的一类函数项级数 幂级数问题的研究在大学数学教学中显得十分有意义 该
  • 毕业设计 - 基于Java web的旅游系统设计【源码+论文】

    文章目录 前言 一 项目设计 1 模块设计 2 实现效果 二 部分源码 项目源码 前言 今天学长向大家分享一个 Java web 毕业设计设计项目 基于Java web的旅游网站设计 一 项目设计 1 模块设计 该系统功能设计相对比较全面
  • HTTP的升级之路

    HTTP的升级之路 HTTP简介 HTTP HyperText Transfer Protocol 超文本传输协议 是一种用于分布式 协作式和超媒体信息系统的应用层协议 1 HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一