面试官:Http协议了解吗,知道Http1.0和Http1.1以及Http2.0有什么区别吗,可以简单聊一聊吗?
派大星:当然可以,
默认底层的tcp是短链接
。简单来说就是浏览器每次请求都要重新建立一次tcp连接,完事之后再释放tcp连接(tcp四次挥手,连接断开)。默认底层的tcp是长连接
,简单来说就是第一次请求网站打开网页后会打开一个tcp连接,接着就在一段时间内不会关闭。后续这个网页中的css,js图片等请求全部走同一个tcp链接,频繁的发送请求获取相应直到请求结束才会释放tcp链接,大幅度的提升了复杂网页的打开速度,并提高了性能。支持多路复用
。基于一个tcp链接并行发送多个请求以及接收响应,解决了http1.1对同一时间同一个域名的请求有限制的问题。二进制分帧,将传输数据拆分为更小的帧(数据包
),提高了性能,实现低延迟高吞吐
面试官:不错,那你知道Http和Https吗?能简单聊一聊它们之间有什么区别吗?
派大星:好的,首先Http是明文不加密的。而Https开始是基于SSL协议
对http进行了加密,后来又升级到了TSL协议来加密。现在有称之为SSL/TSL
面试官:可以简单聊聊Https的实现原理吗?
派大星:可以,
注意这里走的是非对称加密
;用约定好的hash算法生成握手消息的hash值,然后用密码对消息进行加密,最后把所有东西发送给网站。这块走的是对称加密
。生成随机密码的算法一般使用
AES、RC4
等 对随机密码进行加密一般使用的算法是RSA算法
hash算法一般是MD5
面试官:嗯,不错。看来你对http还是有所了解的。感觉你技术还是可以的。
派大星:谢谢。