2.2.9 Cookie和Session的区别是什么?
【考点映射】
- Cookie和Session
【出现频度】★★★★☆
【难度】★★☆
【参考答案】
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
Cookie和Session的区别:
存储位置不同:cookie的数据信息存放在客户端浏览器上;session的数据信息存放在服务器上。
存储容量不同:单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie;对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
存储方式不同:cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据;session中能够存储任何类型的数据,包括且不限于string,int,list,map等。
隐私策略不同:cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的;session存储在服务器上,客户端无法获取,不存在敏感信息泄漏的风险。
服务器压力不同:cookie保管在客户端,不占用服务器资源;为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。
2.2.10 HTTP网络抓包的原理,能讲一下吗?
【考点映射】
- 抓包的原理
【出现频度】★★★
【难度】★★☆
【参考答案】
HTTP抓包主要就是利用一些网络封包截取工具,在客户端和服务端之间建立HTTP请求代理(中间人),从而截取到客户端向服务端发起的请求以及拦截服务端向客户端发送的响应数据。
利用抓包技术,可以把网络数据传输变得透明,在测试和开发工作中,都发挥出极大作用。
2.2.11 了解CDN么?请简单介绍一下CDN是什么?
【考点映射】
- CDN
【出现频度】★★☆
【难度】★★★
【参考答案】
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术主要有内容存储和分发技术。
CDN 可以进行缓存的内容有很多种, 最擅长的是缓存静态数据,除此之外还可以缓存流媒体数据(需要注意防盗链)。它也支持动态数据的缓存,一种是边缘计算模式,既然数据是动态生成的,所以数据的逻辑计算和存储,也相应的放在边缘的节点。定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果;另一种是链路优化模式。数据不是在边缘计算生成的,而是在源站生成的,但是数据的下发则可以通过 CDN 的网络,对路径进行优化。因为 CDN 节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由 CDN 来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。
2.2.12 HTTP常见的状态码有哪些?
【考点映射】
- HTTP协议相关知识点
【出现频度】★★★★☆
【难度】★☆
【参考答案】
HTTP状态码大致分类如下:
较为常见的几种状态码:
【1xx】
100 -(Continue): 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。
101 -(Switching Protocols):切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
【2xx】
200 -(OK):请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 -(Created):已创建。成功请求并创建了新的资源。
【3xx】
301 -(Moved Permanently):永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替。
302 -(Found):临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。
304 -(Not Modified):未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
【4xx】
400 -(Bad Request):客户端请求的语法错误,服务器无法理解。
403 -(Forbidden):服务器理解请求客户端的请求,但是拒绝执行此请求。
404 -(Not Found):服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。
【5xx】
500 -(Internal Server Error):服务器内部错误,无法完成请求。
502 -(Bad Gateway):充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
503 -(Service Unavailable):由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。
504 -(Gateway Time-out):充当网关或代理的服务器,未及时从远端服务器获取请求。
2.2.13 什么是RPC调用?列举几个常见的RPC框架?
【考点映射】
- RPC调用
【出现频度】★★★
【难度】★★★
【参考答案】
RPC是远程过程调用(Remote Procedure Call)的缩写形式。RPC的出现其实主要是为了解决分布式系统间的通信更容易、透明,在提供强大的远程调用能力的同时不损失本地调用的语意简洁性。
那什么是分布式系统的通信透明性问题?这个问题就是指分布式系统间的相互调用其实是基本进程间的显式消息交换,然而,消息的发送和接收过程无法隐藏。而通信的隐藏对于分布式中实现访问的透明性是极为重要的。试想一下,比如你要想查看一个订单详情,然后订单系统部署了三台机器。假设没有RPC,其它系统想通过调订单系统查询订单详情的信息,就必须知道订单系统部署机器的i