http那些事

目录
1.http历史
2.http 2.0
3.http 优化
4.https
5.三次握手四次挥手

http历史

1.91年的 0.9版本,只有get,只能取html字符串;

2.96年的1.0版本,有post,发送任何格式内容;

但是一个TCP连接只能发一个请求,不能复用;

3.97年的1.1版本,现在最流行的版本

(1)持久连接,默认TCP不关闭,一个域名最多了6个持久连接;

(2)管道机制,可以同时发多个请求,服务器按顺序收和返回。

问题:按顺序响应,容易队头堵塞;

4.SPDY:09年谷歌研发的协议,解决1.1效率不高的问题,当做2.0的基础;

http 2.0

1.多路复用,双工通信,避免队头堵塞;

数据流机制判断乱序的数据包属于哪个请求;

2.二进制协议,解析更快,效率更高;

3.头部信息压缩,减小请求体积,节省带宽

4.服务器推送

http优化

1.减少http请求

(1)使用雪碧图合并小图片

(2)no image,颜色单一的图案尽量用字体图标

(3)webpack可以把小图片base64压缩到js中

(4)合并css和js文件;

2.减少DNS查询(进行缓存);

3.避免重定向;

4.使用HTTP2;

HTTPS

HTTP的问题

1.明文传输可能被窃听;

2.认证问题,服务器和客户端都可能是伪装的,用户的权限无法验证;

3.可能被篡改,中间人攻击;

HTTPS介绍

1.超文本传输安全协议;

2.基于TLS/SSL 传输层安全协议,可以防止窃听和篡改;

3.TLS和SSL的关系:SSL是TLS的前身;TLS是SSL的标准化;

4.TLS/SSL协议的三个基本算法:

非对称加密,对称加密,散列函数

5.信鸽例子,理解对称和非对称加密

(1)对称加密:收发双方规定密钥,字母偏移5位加密;

A.加密的人也能解密,这就是对称;

B.问题:密钥需要传递,传递的过程中,可能被窃听和篡改

(2)非对称加密:

A.发送人留着钥匙,把带锁(开启状态)的盒子传过去,加密的人锁上;加密的人自己解不开,就是非对称;

B.问题:可能被窃听更换掉盒子

C.认证机构来给盒子做签名,也就是我们HTTPS需要的网站证书;

6.总结:

非对称可靠但慢,对称的高效性但不可靠;配合使用

非对称加密进行身份验证和密钥交换,对称加密进行数据的加密;

三次握手四次挥手

为什么要三次握手:

确保客户端和服务端都能确认双方收发正常;

(1)第一次握手:客户端–什么都不能确认;服务端–确认对方发送正常;

(2)第二次:客户端–自己发和收正常,对方收和发正常;服务端–对方发,自己收;

(3)第三次:客户端–自己发和收,对方收和发;服务端–对方收发,自己收发;

为什么要发送特定的数据包?

三次握手的另一个目的是确认双方都支持TCP协议;

(1)第一次,客户端发seq=x

(2)第二次server猜测client要建立TCP,但不能确定,发送ack为x+1,seq = y;

(3)第三次,客户端知道服务端支持TCP,知道自己要建立TCP,发送ack = y+1, seq = x+1;

最后,服务端知道客户端支持TCP,确定双方要建立TCP连接;

seq,ack,SYN和ACK是什么意思?

(1)seq: 数据包本身的序列号;

(2)ack: 期望对方继续发送的那个数据包的序列号;

(3)SYN标志位,1表示请求连接;

(4)ACK就是ack后面加上的数字

为什么要四次挥手

(1)根本原因,客户端发送FIN表示自己发完了数据,但是还允许对方继续发送剩下的数据。

(2)比如打电话:A:我没啥说的了;B:知道了;可能还会说些;B:我也说完了;A:知道了;

数据包的格式

和握手同理,+1表示确认。

以上:http最常见的问题都总结好了

同时欢迎关注我的个人微信公众号:

分享到:
Disqus 加载中...

如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理