小林coding学后对比系列-计网篇-HTTP

HTTP演进

	HTTP格式 --> 请求+响应
	HTTP1.0 :	只能发一个请求。三次握手,请求+响应,四次挥手。
	HTTPS   :	三次握手建立连接后,TLS四次握手得到会话秘钥,之后加密请求和相应内容。
	HTTP1.1 :	长连接: 一次连接传多个请求,每个请求要等上一个请求的响应到达才能发送。
		      	管道传输: 通过管道一次发多个请求,但响应必须按顺序。如果一个坏了,后面的被阻塞。
	HTTP2.0:	头部压缩:双方维护一张动态表 HPACK; 传输的数据变为二进制;
				并发传输:多个stream流复用一个TCP连接,通过stream id。请求和响应中包含多个fream帧。
				服务器主动推送资源。
				TCP协议造成队头阻塞:如果前一个字节没到,后收的只能放在内核缓冲区。
	HTTP3.0 :	基于UDP的QUIC 不存在队头阻塞。
				建立连接更快:TLS被合并在QUIC里了。
				连接迁移方便:连接ID取代四元组。
				特殊单向流同步双方动态表QPACK:确保动解码方收到更新。

详细

TLS

		RSA:
			客户端生成随机数C,服务器生成随机数S,交换这个随机数,客户端再生成一个随机数C2,
		通过服务器的公钥加密后发过去。他们双方都能通过秘钥加密算法算出同一个会话秘钥。
		DH:
			离散对数算。

RSA和DH、DHE、ECDHE

	RSA与DH,不具备向前安全。也就是说如果后面服务器公钥泄露,前面发的所有报文会被解密。因为整个流程用
	的是同一个秘钥 。
	DHE开始就具备向前安全了,E代表随机,每次通信都随机生成私钥,现在的泄露了之前的报文也不会被解密。
	ECDHE 用椭圆曲线提高计算私钥的速度。ECDHE比RSA省去一个RTT;
	ECDHE 四次TLS握手内容有区别: 
	第二次时候,双方同享,使用的椭圆曲线、椭圆曲线基点G,这些能算出X,X加上他们的随机数,服务器就能算
	出会话秘钥。所以第二次的时候,服务器就会发送 Server Key Exchange消息。
	RSA要在第三次的时候,要等客户端把生成的随机数用服务器公钥加密传给服务器。

HTTP优化 (这个目前记不住,要用的时候看下)

硬件:支持 AES-NI 特性的 CPU
软件:软件升级,协议优化(秘钥交换过程)
	选用 ECDHE 密钥交换,TLS 握手的消息往返由 2 RTT 减少到 1 RTT,而且安全性也高,具备前向安全性,
	选择 x25519 曲线,选用 AES_128_GCM
	TLS 1.3 把 Hello 和公钥交换这两个消息合并成了一个消息,于是这样就减少到只需 1 RTT 就能完成 
	TLS 握手。客户端在 Client Hello 消息里带上了支持的椭圆曲线,以及这些椭圆曲线对应的公钥。
证书优化: 
	传输优化:要短,择椭圆曲线(ECDSA)证书
	验证优化:OCSP Stapling 每隔一段时间主动找CA问
会话复用:
	Session ID:首次 TLS 握手连接后,双方在内存缓存会话密钥。
	Session Ticket:只客户端缓存。服务器解密客户端发来的ticket,如果有效就是用这个会话秘钥。
	Pre-shared Key ,只需要 0 RTT 就可以恢复会话。TLS1.3中,客户端把Ticket和HTTP一块发。
session不具备向前安全,重放攻击:劫持了session id 或者 session ticket 与报文,冒充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值