- post与get请求的区别
get 是获取资源,Post是向指定URI提交资源,相关信息放在body里
2.http有哪些优点
(1)简单 报文只有报文首部和报文主体,易于理解
(2)灵活易拓展 URI相应码、首部字段都没有定义死,可以拓展 例如cookie setcookie并没有在RFC2616标准中
HTTP在应用层,它的下层可任意变化
(3)应用广泛跨平台
电脑 手机 网站 购物 - HTTP有哪些缺点
(1)无状态 服务器不用保存状态,减轻服务器负担
没有状态,完成有关联性的操作麻烦 例如登录 添加购物车
(2) 明文传输
易于读取 不安全
(3)不安全
明文传输,信息窃取
不验证对方身份,伪装
无法保证信息不被篡改 - http1.1的性能
(1)长连接 三次握手 请回 请回 … 四次挥手
(2)管道网络传输 三次握手 请 请 请 回 回 会
减少整体等待时间
(3)队头阻塞
因为当顺序发送的请求序列中的⼀个请求因为某种原因被阻塞时,在后⾯排队的所有请求也⼀同被阻塞了,会招致客户端⼀直请求不到数据,这也就是「队头阻塞」。好⽐上班的路上塞⻋。 - HTTPS如何保证安全性
(1)混合加密
(2)摘要算法
(3)数字证书
5. 混合加密
客户端本地生成会话秘钥,使用服务器的公钥加密,传送给服务器,以后的通信都使用该会话秘钥对称加密通信
6. 摘要算法
双方之间通信的明文都会和摘要一起加密,服务端收到密文,解密,然后对明文计算摘要,与传送过来的摘要对比
7. 数字证书
目的:保证公钥的可信性
我的理解:只能保证公钥“值的信任”,经过CA认证。但传输公钥和证书过程中整个被掉包,怎们办?
服务器公钥–>CA认证【公钥,数字签名 】,将公钥放入网站(防止证书过期)
服务器—证书+公钥–>客户端使用ca公钥验证证书有效性—>官网查看—>公钥加密
数字签名=消息摘要+私钥加密
- SSL/TLS Secure Sockets Layer/Transport Layer Security 协议握手过程
四次通信:请求服务端公钥 2次 秘钥协商 2次
(1)ClientHello请求
客户端向服务端发送clientHello请求,请求秘钥,请求内容包括【cli支持的SSL/TLS版本号,cli生成的随机数c,cli支持的加密方式】
(2)serverhello
对ClientHello请求的回复,包括
1) 确认SSL/TLS版本号
2)服务端生成的随机数 s
3)确认密码套件
4)数字证书 (理解为s公钥的摘要用ca私钥加密+s公钥 )
(3)客户端回应
客户端会验证公钥的合法性,如果真实,
1)cli使用s公钥加密一个随机数
2)加密通信算法改变通知(以后加密通信)
3)之前的握手数据摘要 (没有公钥加密)
双方各自使用三个随机数生成通信秘钥
(4)服务端回应
1)加密通信算法改变通知
2)之前所有握手报文摘要
- HTTP1.1 如何优化
(1)尽量避免发送HTTP请求
使用缓存技术
(2)减少HTTP请求的次数- 减少重定向的次数
如果有代理,代理可以把重定向的内容返回给客户端,如果是永久重定向,代理服务器可以暂时记下来,客户端再次请求的时候,可以直接 向重定向指向的服务器请求.
- 减少重定向的次数
2) 合并请求
将多个小资源的请求合并到一个请求中
优点:省去了很多次请求的发送,如果不是长连接的话,省去了tcp握手.
减少网络开销.
缺点:万一一个小资源发生改变,需要重新请求大资源
3) 延迟发送 按需发送
例如一个网页很长,只发送用户看到的,当向下滑时再发送新的,如果不向下滑就不发送了
(3)减小HTTP响应数据的大小