《图解http》学习总结 第二章(2020.11.22)

171 阅读2分钟

第二章 简单的http协议

大家好,因为个人水平有限,肯定会有不准确的地方,希望多多指教!

目前主流的版本为http/1.1 以下内容都只针对http/1.1版本。

q1:什么是无状态?无状态的优点与带来的问题?如何解决问题的?

无状态是指http协议本身不对请求和响应之间的通信状态进行保存。

通俗来讲就是指每次都是新的请求和新的响应,与上一次的请求和响应没啥关系。

优点:不必保存状态,减少服务器cpu以及内存资源的消耗。

缺点:在某些场景下,会变得比较棘手,例如用户在前往购物网站的其他页面时,也希望能够保存登录状态。

解决方案: 引入了cookie技术来管理状态了。

q2: cookie做登录管理?那工作中碰到token又是啥?

cookie机制:用户登录成功后,服务器生成sessionId保存并发送给客户端,客户端收到响应后将其保存到cookie中,以后客户端在发起请求时会自动携带上cookie,而服务器端会对比sessionId来判断是哪个用户。

随着用户量的增长,服务器要保存所有用户的sessionId,这对服务器来讲是一个巨大的开销,而且随着移动端的兴起,cookie的扩展性也不足,这种验证机制就满足不了人们的需求了,于是,jwt(json web token)就出现了。

token机制:用户登录成功后,服务器生成token(包含用户Id以及签名)发送给客户端,客户端收到响应后将其保存到本地(localStorage)中,以后客户端在发起请求时会自动携带上token(通常是请求头),而服务器端会利用密钥来计算一次签名来校验该用户。

token相对于cookie机制的区别就是利用验证的方式不同,从而将每个用户的id保存到客户端,减轻了服务器压力,而且解密的速度也比数据库查询更快一些,此外,token机制在安全性和多平台(跨域)表现得更加良好。

q3:常见的请求方法?

q4: 持久连接与管线化是啥?

随着时代的发展,因为http/1.0满足不了新的需求,http/1.1提出了持久连接与管线化概念。

持久连接:建立一次tcp连接后可以进行多次请求和响应的交互,减少了tcp连接和断开的额外开销。

管线化:同时并行发送多个请求,不需要一个接一个地等待响应。

对于同一host,浏览器建立的tcp连接有数量限制,chrome是6个。