带你重新认识下HTTP协议面试必备!!
1、HTTP基础
超文本传输协议。 协议:HTTP是用在计算机世界里的协议,它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范。 传输:HTTP是一个在计算机世界里专门用来在俩点之间传输数据的约定和规范。HTTP 协议是一个 双向协议 超文本:它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。
总结:HTTP是一个在计算机世界俩点之间传输超文本数据的约定和规范 2、HTTP常见字段
HOST:服务器域名
Content-Length:本次回应的数据长度
Connection:Keep-Alive 是否使用长链接
Accept:客户端请求时告诉服务器自己接受哪些格式
Accept-Encoding:告诉服务器接受哪些压缩方法
Content-Type:服务器告诉客户端本次数据格式
Content-Encoding:服务器返回的数据用了什么压缩格式
HTTP是基于TCP进行通信的,HTTP协议通过设置回车符、换行符作为HTTP header的边界,通过Context-Length字段作为HTTP body的边界。来解决粘包问题。 3、HTTP缓存技术
强制缓存和协商缓存 3.1 强制缓存
只要浏览器缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
强缓存利用HTTP响应头部字段实现 Cache-Control:相对时间(优先级高) Expires:绝对时间
3.2 协商缓存
当我们在浏览器使用开发者工具的时候,你可能会看到过某些请求的响应码是 304,这个是告诉浏览器可以使用本地缓存的资源,通常这种通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存。 基于时间实现 基于唯一标识实现
协商缓存需要配合强制缓存中Cacha-Control字段来使用,只有在未能命中强制缓存的时候,才能发起带有协商缓存字段的请求。 4、HTTP/1.1
优点: 简单:HTTP基本的报文格式就是header+body,头部信息也是key-value简单文本形式。 灵活易于扩展:HTTP协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和补充。 应用广泛和跨平台
缺点: 无状态 明文传输 不安全 4.1 HTTP性能:
HTTP协议是基于TCP/IP,采用 请求-应答通信 模式
长连接 :早期 HTTP/1.0 性能上的一个很大的问题,那就是每发起一个请求,都要新建一次 TCP 连接(三次握手),而且是串行请求,做了无谓的 TCP 连接建立和断开,增加了通信开销。因此HTTP采用了长连接
管道网络传输(默认不开启): 即可在一个TCP链接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来就可以发出第二个请求出去。 服务器必须按照接收请求的顺序发送对这些管道化请求的响应 。 HTTP/1.1 管道解决了请求的队头阻塞,但是没有解决响应的队头阻塞 。(如果服务器在处理A请求耗时较长,后续的请求都会被阻塞住) 5、HTTP/1.1、HTTP/2、HTTP/3演变
HTTP/1.1 相比 HTTP/1.0 性能上的改进: 使用长连接改善HTTP/1.0短链接造成的性能开销 使用管道网络传输
HTTP1.1性能瓶颈 请求/相应头部未经压缩就发送,首部信息越多延迟越大,只能压缩Body部分 发送冗长的首部。每次互相发送相同的首部造成。 服务器是按请求的顺序相应的。队头阻塞 没有请求优先级控制 请求只能从客户端开始,服务器只能被动响应 5.1 HTTP/2做了什么优化
那 HTTP/2 相比 HTTP/1.1 性能上的改进: 头部压缩 二进制格式 并发传输 服务器主动推送资源 头部压缩
如果同时发出多个请求且它们的头一样或者相似,那么协议会帮你消除重复的部分
利用HPACK算法:在客户端和服务器同时维护一张头信息表。所有字段都会存入这个表,生成一个索引号,相同的头部只发送索引号。 二进制格式
头信息和数据体都是二进制,统称为帧:头信息帧和数据帧 并发传输
HTTP/1.1的实现是基于请求-相应模式。同一个连接中,HTTP完成一个事务,才能处理下一个事务。
HTTP/2引入Stream。多个Stream复用在一条TCP连接。一个TCP连接包好多个Stream,Stream里包含一个或多个Message,对应HTTP/1中的请求和响应。Message里包含一个或多个Frame,Frame是HTTP/2最小单位。以二进制存放HTTP/1中的内容(头部和包体)
针对不同的HTTP请求用独一无二的Stream ID来区分,接收端可以通过Stream ID有序组成HTTP消息,不同的额Stream可以乱序发送的。因此可以并发不同的Stream。 服务器推送
HTTP/2中客户端和服务器双方都可以建立Stream。客户端Stream ID为奇数、服务器Stream ID为偶数
例如客户端通过 HTTP/1.1 请求从服务器那获取到了 HTML 文件,而 HTML 可能还需要依赖 CSS 来渲染页面,这时客户端还要再发起获取 CSS 文件的请求,需要两次消息往返,HTTP/2中服务器可以主动推送CSS文件。
缺陷:
HTTP/2还是存在对头阻塞问题。但不是在HTTP层,而是在TCP这一层。
HTTP/2是基于TCP协议来传输数据,TCP是字节流协议,TCP层必须保证收到的字节数据是完成且连续的,然后内核才会讲缓冲区里的数据返回给HTTP应用,那么当前一个字节数据没有到达时,后收到的字节数据只能存放在内核缓冲区里,只有等到上一个请求最后一个字节数据到达时,HTTP/2应用层才能从内核中拿到数据。
因此一旦发生丢包现象,就会触发TCP的重传机制,这个TCP连接中的所有HTTP请求都必须等待这个丢了的包被重传回来。
C++音视频学习资料免费获取方法:关注音视频开发T哥 ,点击「链接」即可免费获取2023年最新 C++音视频开发进阶独家免费学习大礼包!
5.2 HTTP/3 做了哪些优化?
因为HTTP/2在TCP层出现了队头阻塞,因此HTTP/3把HTTP下层的TCP协议改成了UDP
UDP 发送是不管顺序,并且HTTP/3基于UDP的QUIC协议可以实现类似TCP的可靠性传输
QUIC特点: 无队头阻塞 更快的连接建立 连接迁移 无队头阻塞
QUIC协议也有类似HTTP/2 Stream多路复用概念,在一个连接上建立并发传输多个Stream,Stream可以认为就是一条HTTP请求
QUIC 有自己的一套机制可以保证传输的可靠性的。 当某个流发生丢包时,只会阻塞这个流,其他流不会受到影响,因此不存在队头阻塞问题。 所以QUIC连接上的多个Stream之间并没有依赖,都是独立的。 更快的连接
对于HTTP/1和HTTP/2协议,TCP和TLS时分层的,需要分批次来握手,先TCP握手,在TLS握手。
但是HTTP/3的QUIC协议并不是与TLS分层,而是QUIC包含了TLS。它在自己的帧会携带TLS里的记录,同时QUIC使用的是TLS/1.3,只需要1个RTT就可以同时完成建立连接与密钥协商。
、
甚至第二次连接时,应用数据包可以和QUIC握手信息一起发送,达到0-RTT。 连接迁移
基于TCP传输协议的HTTP协议,通过四元组(源IP、源端口、目的IP、目的端口)确定一条TCP连接。那么例如设备从4G切换到WIFI时,意味着IP地址变了,那么就必须重新建立连接
而QUIC协议没有用四元组来绑定连接,而是通过连接ID来标记通信的俩个端点,客户端和服务端各选择一组ID来标记自己。因此即使网络变化,但是只要仍保有上下文信息(比如连接 ID、TLS 密钥等),就可以无缝第复用原连接。
所以,QUIC是一个在UDP之上的伪TCP+TLS+HTTP/2的多路复用协议 6、HTTP和HTTPS
区别: HTTP是超文本传输协议,信息是明文传输,存在安全风险,HPPTS在TCP和HTTP网络层增加了SSL/TLS安全协议,使得报文能够加密传输 HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。 HTTP 默认端口号是 80,HTTPS 默认端口号是 443。 HTTPS协议需要像CA(证书权威机构)申请数字证书
HTTP由于是明文传输,存在三个风险:窃听风险,篡改风险,冒充风险
HTTPS加入了SSL/TLS协议,解决了上述问题。包括信息加密,校验机制,身份证书 混合加密
HTTP采用的是 对称加密 和 非对称加密 结合的混合加密方式 在通信建立前采用非 对称加密 的方式交换 会话密钥 通信过程中全部使用 对称加密的会话密钥加密明文数据 摘要算法+数字签名
为了保证传输的内容不被篡改,对内容计算出一个【指纹】,然后同内容一同传输对方,对方接收后,先是对内容也算出一个指纹,然后跟发送方指纹做比较,如果指纹相同。证明内容没有被篡改。
用摘要算法(哈希函数)来计算出内容的哈希值,这个哈希值是唯一的。且无法通过哈希值推算出内容
通过数字签名来保证传输的内容不被替换掉。利用非对称加密, 私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。 数字证书
在计算机里,将服务器公钥房子数字证书里(由数字认证机构颁发简称CA),只要证书是可信的,公钥就是可信的。通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。 6.1 HTTPS是如果建立连接
SSL/TLS协议基本流程: 客户端像服务器索要并验证服务器的公钥。 双方协商生产会话密钥 双方采用会话密钥进行加密通信
前俩步也就是SSL/TLS的建立过程,也就是握手过程。
TLS的握手阶段涉及四次通信,使用不同的密钥交换算法,TLS握手流程也不一样,常用算法 RSA 和 ECDHE 。
TLS协议建立过程 ClientHello
首先客户端向服务器发起加密通信请求,包括客户端支持的TLS协议版本,客户端产生的随机数,客户端支持的密码套件列表 ServerHello
服务器收到客户端请求后,像客户端做出响应。内容包括确认TLS协议版本、服务器产生的随机数、确认的密码套件列表、服务器的数字证书 客户端回应
客户端收到服务器的回应后,首先确认服务器证书的正确性,如果没有问题取出弓腰,然后使用它加密向服务器发送一个随机数随机数、加密通信算法改变通知、告知随后的信息采用会话密钥加密通信。表示客户端的握手阶段已经结束。客户端握手结束通知,并把之前所有内容的数据做个摘要,供服务器校验。
服务器和客户端有了这三个随机数(Client Random、Server Random、pre-master key),接着就用双方协商的加密算法,各自生成本次通信的「会话秘钥」 。 服务器最后回应
服务器收到客户端的第三个随机数之后,计算出本次会话密钥。然后向客户端发送最后消息,加密通信算法改变通知,表示随后信息都将用会话密钥通信。服务器握手结束通知,把之前所有内容的数据做个摘要,供客户端校验。
至此整个TLS握手阶段结束,客户端和服务端进入加密通信,使用最普通的HTTP协议。但是会用会话密钥加密通信的内容 6.2 HTTPS如何保证完整性的
TLS在实现上分为握手协议和记录协议俩层 TLS握手协议就是TLS四次握手的过程,负责协商加密算法和生成对称密钥,后续用此密钥来保护应用数据。 TLS记录协议负责保护应用程序数据并验证其完整性和来源,所以对HTTP数据加密是使用记录协议。TLS记录协议主要负责消息的压缩、加密及数据的认证。
首先消息会被分割成多个较短的片段,对每个片段进行压缩。 经过压缩的片段会被加上消息验证码(MAC值,是通过哈希算法生成的),这是为了保证完整性,并进行数据的认证。通过附加消息认证码的MAC值,可以识别出篡改,为了防止重放攻击,在计算消息认证码时,还加上了片段的编码。 经过压缩的片段在加上消息认证码会一起通过对称密钥进行加密。 上述加密的数据在加上由数据类型、版本号、压缩后的长度组成的报文头就是最终的报文数据
原文链接:带你重新认识下HTTP协议--面试必备!!
一年只用10件衣服穿出时髦感?这个日本女孩的百搭单品,好厉害之前秧秧和大家分享过一期日本40博主铃铃希的极简衣橱,当时很多读者都对她一年365天只穿12件衣服的做法佩服不已。但日本人真的是一个做事情很追求极致感的族群,没有最少,只有更少,今
伊藤美诚连败回国,日本一姐有爱互动感动中国球迷,网友错怪她了最近新乡世界杯已经落幕,随着十月份的征程结束之后,国家队的旅程暂时告一段落。回顾十月份的比赛可以发现,在两站国内家门口的比赛中国乒都取得相当傲人的成绩。但是对于日本队来说,他们这一
2022卡塔尔世界杯决赛日期2022卡塔尔世界杯决赛将于北京时间12月18日23点正式举行,届时将会正式打响今年含金量最高的一场比赛,获胜方将会直接捧起大力神杯,同时获胜队伍成员也会被视为英雄看待,让我们拭目
乒坛再爆冷门!直板名将资格赛出局,日本三人晋级,国乒集体缺席2022年11月3日,乒乓球斯洛文尼亚赛继续进行,为期三天的资格赛结束,可以说是冷门不断,法国直板名将菲利克斯被淘汰,韩国队多位主力出局,罗马尼亚名将约内斯库也无缘晋级,他曾经夺得
卡塔尔世界杯各国头号球星都是谁?卡塔尔世界杯即将开始,各国头号球星读是谁呢?卡塔尔莫埃兹阿里1996年8月19日出生2019年亚洲杯攻入9球,打破单届亚洲杯进球纪录,荣获赛事金靴厄瓜多尔恩纳瓦伦西亚1989年11
世界杯巡礼之诺伊尔他是一夫当关的门卫也是抗癌斗士世界杯临近,足球部落推出世界杯巡礼专题,今天的主人公是德国队门神诺伊尔,他是是一夫当关的门卫,他是顽皮的小新,他是世界杯冠军队队长,他居然还是抗癌斗士。日前,在接受德国图片报采访时
中超1津门虎,多赛一场压三镇登顶北京时间11月3日,中超第23轮的较量中,山东泰山坐镇主场迎战天津津门虎。上半场开场仅7分钟,陈蒲即梅开二度,随后陈蒲又制造了对手后卫杨帆自摆乌龙下半场,津门虎连续调整后,梅里达为
中超0终结浙江14轮不败北京时间11月3日,中超第23轮,浙江队对阵深圳队。上半场浙江队占据着优势,主导进攻,但是深圳队在21分钟和23分钟短时间抓住对方防线的失误连进两球,瞬间奠定了优势,随后浙江队发动
湖人两连胜,威少成最大惊喜!哈姆险葬送胜利,两大配角抢眼NBA常规赛继续进行,湖人主场迎战鹈鹕。此前湖人战绩为1胜5负,排名西部倒数第二,力压1胜8负的火箭。而鹈鹕战绩为4胜2负,虽然英格拉姆遭遇脑震荡伤停保护,但是球队整体势头非常好。
从零开始,探寻红外光的奥秘人类学家泰勒曾说凡是有太阳照耀的地方,均有太阳崇拜存在。自古以来,人们一直用各种各样的形式尊崇太阳。许多古文明把太阳尊为唯一的上帝,因为当人们将身体沐浴在阳光中时会感受到温暖,感受
双十一折叠屏销量迎来爆发,大屏软件适配成重点,OPPO有望突破今年话题度颇高的数码产品,折叠屏手机毫无疑问榜上有名,如今已经逐渐摆脱奢侈品的标签,成为了大批用户难以割舍的掌上好物。此次双十一预售大促中,折叠屏系列手机10分钟销量同比增长超40